IP-NEIGHBOUR(8)
๐ NAME ๐
okay so bestie, welcome to ip-neighbour(8) โ yep, the ip-neighbour page from the Linux manual, section 8, the admin-commands section, she's iconic ๐
. And what does she do? neighbour/arp tables management. that's the whole vibe. no cap. ๐ฆ
๐ธ SYNOPSIS ๐ธ
ip [ OPTIONS ] neigh { COMMAND | help }
ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ] [ nud
STATE ] | proxy ADDR } [ dev DEV ] [ router ] [ use ] [ managed
] [ extern_learn ] [ extern_valid ]
ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud
STATE ] [ vrf NAME ] [ nomaster ]
ip neigh get ADDR dev DEV
STATE := { permanent | noarp | stale | reachable | none | incomplete |
delay | probe | failed }
โจ DESCRIPTION โจ
so the ip neigh command manipulates neighbour objects, which are basically the little bindings between protocol addresses and link layer addresses for hosts that are sharing the same link ๐ซถ. Neighbour entries get organised into tables. and fun fact: the IPv4 neighbour table has a whole other name โ the ARP table. yes, that ARP table. main character energy fr fr ๐
The corresponding commands display neighbour bindings and their properties, add new neighbour entries and delete old ones. that's the whole job description, periodt.
๐ ip neighbour add
add a new neighbour entry โจ
๐ ip neighbour change
change an existing entry
๐ ip neighbour replace
add a new entry or change an existing one
These commands create new neighbour records or update existing ones. lowkey the same energy, three different names.
to ADDRESS(default) โ the protocol address of the neighbour. It is either an IPv4 or IPv6 address. ๐dev NAMEโ the interface to which this neighbour is attached.proxyโ indicates whether we are proxying for this neighbour entry.routerโ indicates whether neighbour is a router.useโ this neigh entry is in "use". This option can be used to indicate to the kernel that a controller is using this dynamic entry. If the entry does not exist, the kernel will resolve it. If it exists, an attempt to refresh the neighbor entry will be triggered. ๐ฅmanagedโ this neigh entry is "managed". This option can be used to indicate to the kernel that a controller is using this dynamic entry. In contrast to "use", if the entry does not exist, the kernel will resolve it and periodically attempt to auto-refresh the neighbor entry such that it remains in resolved state when possible. she's committed to the relationship, okay ๐ญextern_learnโ this neigh entry was learned externally. This option can be used to indicate to the kernel that this is a controller learnt dynamic entry. Kernel will not gc such an entry. ๐งextern_validโ this neigh entry was learned and determined to be valid externally. The kernel will not remove or invalidate the entry, but it can probe the entry and notify user space when the entry becomes reachable. The kernel will return the entry to stale state if it did not receive a confirmation after probing the entry.lladdr LLADDRESSโ the link layer address of the neighbour.LLADDRESScan also be null. yes, literally null. it's giving nothing and that's valid ๐nud STATEโ the state of the neighbour entry.nudis an abbreviation for 'Neighbour Unreachability Detection'. The state can take one of the following values:permanentโ the neighbour entry is valid forever and can be only be removed administratively. forever-forever. ๐noarpโ the neighbour entry is valid. No attempts to validate this entry will be made but it can be removed when its lifetime expires.reachableโ the neighbour entry is valid until the reachability timeout expires.staleโ the neighbour entry is valid but suspicious. This option toip neighdoes not change the neighbour state if it was valid and the address is not changed by this command. ๐ suspicious!! but valid!!noneโ this is a pseudo state used when initially creating a neighbour entry or after trying to remove it before it becomes free to do so.incompleteโ the neighbour entry has not (yet) been validated/resolved.delayโ neighbor entry validation is currently delayed.probeโ neighbor is being probed.failedโ max number of probes exceeded without success, neighbor validation has ultimately failed. rip bestie ๐
๐ ip neighbour delete
delete a neighbour entry ๐๏ธ
The arguments are the same as with ip neigh add, except that lladdr and nud are ignored. they simply do not get a say in this.
โ ๏ธ Warning: Attempts to delete or manually change anoarpentry created by the kernel may result in unpredictable behaviour. Particularly, the kernel may try to resolve this address even on aNOARPinterface or if the address is multicast or broadcast. do NOT play with the kernel's noarp entries bestie, she bites ๐ญ๐
๐ ip neighbour show
list neighbour entries ๐
to ADDRESS(default) โ the prefix selecting the neighbours to list.dev NAMEโ only list the neighbours attached to this device.vrf NAMEโ only list the neighbours for given VRF.nomasterโ only list neighbours attached to an interface with no master.proxyโ list neighbour proxies.unusedโ only list neighbours which are not currently in use. the unemployed entries โจnud STATEโ only list neighbour entries in this state.NUD_STATEtakes values listed below or the special valueallwhich means all states. This option may occur more than once. If this option is absent,iplists all entries except fornoneandnoarp. so like, default is not those two. noted. ๐ซถ
๐ ip neighbour flush
flush neighbour entries ๐ฟ
This command has the same arguments as show. The differences are that it does not run when no arguments are given, and that the default neighbour states to be flushed do not include permanent and noarp. (so your forever-entries are safe from a bare flush. she's considerate.)
With the -statistics option, the command becomes verbose. It prints out the number of deleted neighbours and the number of rounds made to flush the neighbour table. If the option is given twice, ip neigh flush also dumps all the deleted neighbours. twice the -statistics, twice the drama ๐ฟ
๐ ip neigh get
lookup a neighbour entry to a destination given a device ๐
proxyโ indicates whether we should lookup a proxy neighbour entryto ADDRESS(default) โ the prefix selecting the neighbour to query.dev NAMEโ get neighbour entry attached to this device.
๐ EXAMPLES ๐
ip neighbour
Shows the current neighbour table in kernel. casual lil peek ๐
ip neigh flush dev eth0
Removes entries in the neighbour table on device eth0. bye besties ๐
ip neigh get 10.0.1.10 dev eth0
Performs a neighbour lookup in the kernel and returns a neighbour entry. like a little detective ๐ต๏ธโโ๏ธ
๐ฆ SEE ALSO ๐ฆ
๐ AUTHOR ๐
Original Manpage by Michail Litvak <mci@owl.openwall.com> โ thank you for the lore, we are obsessed ๐ซถ
and that's the whole page bestie!! this was iproute2, dated 20 Dec 2011 โ yes she's an elder but she still ate and left no crumbs ๐โจ go forth and manage those neighbour tables, ily, bye!! ๐๐๐
๐ฆ where this page comes from
- alpine 3.23: iproute2-doc 6.17.0-r0 ยท GPL-2.0-or-later
- alpine 3.24: iproute2-doc 7.0.0-r0 ยท GPL-2.0-or-later
- arch rolling: iproute2 7.2.0-1
- arch rolling: iproute2 7.3.0-1 ยท GPL-2.0-or-later
- centos-stream 10: iproute 7.0.0-2.el10 ยท GPL-2.0-or-later AND NIST-PD
- centos-stream 9: iproute 6.17.0-3.el9 ยท GPL-2.0-or-later AND NIST-PD
- fedora 44: iproute 6.17.0-2.fc44 ยท GPL-2.0-or-later AND NIST-PD
- nixos 26.05: iproute2 7.0.0
- nixpkgs unstable: iproute2 7.2.0
- ubuntu resolute: iproute2 6.19.0-1ubuntu1 ยท GPL-2.0-only
- ubuntu resolute: iproute2 6.19.0-1ubuntu1.1 ยท GPL-2.0-only
- ubuntu stonking: iproute2 7.2.0-1ubuntu1 ยท GPL-2.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms