# man > ip-neighbour(8)

---
type: CommandReference
command: ip-neighbour
mode: man
section: 8
source: man-pages
---

## Quick Reference
- `ip neigh show` — Show all neighbour entries
- `ip neigh add <ADDR> lladdr <LLADDR> dev <DEV>` — Add a static entry
- `ip neigh del <ADDR> dev <DEV>` — Delete an entry
- `ip neigh replace <ADDR> lladdr <LLADDR> dev <DEV>` — Add or update an entry
- `ip neigh flush dev <DEV>` — Flush all entries on a device
- `ip neigh get <ADDR> dev <DEV>` — Lookup a specific entry
- `ip neigh show nud stale` — Show only stale entries
- `ip neigh show proxy` — Show proxy entries

## Name
ip-neighbour — neighbour/arp tables management

## Synopsis
shell
ip [ OPTIONS ] neigh { add | del | change | replace } ADDR [ lladdr LLADDR ] [ nud STATE ] [ proxy ADDR ] [ dev DEV ] [ router ] [ extern_learn ]
ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ] [ vrf NAME ]
ip neigh get ADDR dev DEV
`STATE` := `permanent` | `noarp` | `stale` | `reachable` | `none` | `incomplete` | `delay` | `probe` | `failed`

## Options

### add, change, replace — create or modify neighbour entries
- `to ADDRESS` (default) — protocol address of the neighbour (IPv4 or IPv6)
- `dev NAME` — interface to which this neighbour is attached
- `lladdr LLADDRESS` — link layer address; can be `null`
- `nud STATE` — neighbour state (see `STATE` list above)
  - `permanent` — valid forever, only removable administratively
  - `noarp` — valid, no validation attempts; removable on lifetime expiry
  - `reachable` — valid until reachability timeout expires
  - `stale` — valid but suspicious; does not change state if address unchanged
  - `none` — pseudo state for initial creation or removal pending
  - `incomplete` — not yet validated/resolved
  - `delay` — validation currently delayed
  - `probe` — being probed
  - `failed` — max probes exceeded, validation failed
- `proxy` — indicates proxying for this entry
- `router` — indicates neighbour is a router
- `extern_learn` — entry learned externally; kernel will not garbage-collect

### delete — delete a neighbour entry
Same arguments as `add`, except `lladdr` and `nud` are ignored.  
**Warning:** Deleting or changing a kernel-created `noarp` entry may cause unpredictable behaviour.

### show — list neighbour entries
- `to ADDRESS` (default) — prefix selecting neighbours to list
- `dev NAME` — only list neighbours on this device
- `vrf NAME` — only list neighbours for given VRF
- `proxy` — list neighbour proxies
- `unused` — only list neighbours not currently in use
- `nud STATE` — only list entries in this state; `all` for all states. May be used multiple times. Default excludes `none` and `noarp`.

### flush — flush neighbour entries
Same arguments as `show`; no operation if no arguments given. Default flushed states exclude `permanent` and `noarp`.  
- `-statistics` — verbose, prints number of deleted neighbours and rounds; given twice, also dumps deleted entries.

### get — lookup a neighbour entry
- `to ADDRESS` (default) — address to query
- `dev NAME` — interface to query
- `proxy` — lookup a proxy neighbour entry

## Examples
shell
# Show current neighbour table
ip neighbour

# Flush all entries on eth0
ip neigh flush dev eth0

# Perform a neighbour lookup
ip neigh get 10.0.1.10 dev eth0
## See Also
[ip(8)](https://www.chedong.com/phpMan.php/man/ip/8/markdown)