答案:Linux中使用ip neighbour命令管理邻居表,可查看、添加、删除和刷新ARP/NDP缓存条目。通过ip neigh show查看REACHABLE、STALE等状态,用add/del操作静态或动态条目,flush清空表,配合monitor实时监控变化,结合/proc/net/sockstat查看统计信息,有助于网络排错与优化。

在Linux网络管理中,邻居表(Neighbor Table)是用于存储与本地网络中其他设备的MAC地址和IP地址映射关系的表,类似于ARP缓存。它由内核的邻居子系统维护,常用于IPv4(ARP)和IPv6(NDP)协议。管理邻居表可以使用 ip neighbour 命令(也写作 ip neigh),它是 iproute2 工具包的一部分。
查看邻居表
要查看当前系统的邻居条目,运行:
ip neighbour show或简写:
ip neigh输出示例:
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE192.168.1.100 dev eth0 lladdr aa:bb:cc:dd:ee:ff STALE
字段说明:
- IP地址:邻居设备的IP
- dev:关联的网络接口
- lladdr:对应的MAC地址
- 状态:如 REACHABLE、STALE、DELAY、FAILED 等
添加静态邻居条目
手动添加一条静态邻居记录,防止频繁ARP查询或用于固定映射:
ip neighbour add 192.168.1.50 lladdr 00:aa:bb:cc:dd:ee dev eth0静态条目状态为 PERMANENT,不会过期。
若要添加但允许动态更新,可使用 nud reachable:
ip neighbour add 192.168.1.50 lladdr 00:aa:bb:cc:dd:ee dev eth0 nud reachable删除邻居条目
删除特定邻居记录:
ip neighbour del 192.168.1.100 dev eth0也可使用 delete 关键字。
清空整个邻居表(慎用):
ip neighbour flush all可按条件刷新,例如只清空某个接口或状态为 failed 的条目:
ip neighbour flush dev eth0 ip neighbour flush to 192.168.1.0/24 ip neighbour flush nud failed邻居表状态说明
理解状态有助于排查网络问题:
- REACHABLE:邻居可达,通信活跃
- STALE:上次通信已过有效期,下次通信前需确认
- DELAY:等待确认邻居是否仍可达
- PROBE:发送ARP请求探测邻居
- FAILED:解析失败,通常没有响应
- PERMANENT:静态配置,不会老化
实用技巧
监控邻居变化:
ip monitor neighbour该命令实时输出邻居表的变更事件,适合调试网络连通性问题。
结合 grep 过滤特定IP:
ip neigh | grep 192.168.1.1查看邻居表统计信息:
cat /proc/net/sockstat ip -s neighbour show后者会显示每个条目的引用计数和更新统计。
基本上就这些。掌握 ip neighbour 能有效管理本地链路层映射,对网络排错和性能调优很有帮助。










