目录
一、概述
在Linux系统下,ip neigh命令是iproute2软件包中的一个工具,用于显示和管理ARP(地址解析协议)缓存,也就是邻居表。ARP缓存存储了局域网内IP地址与物理地址(MAC地址)之间的映射关系,这对于网络通信至关重要。
这个命令提供了比传统的 arp 命令更多的功能和灵活性。通过 ip neigh 命令,可以查看、添加、删除和修改邻居表项,这对于网络管理和故障排除非常有用。
若有兴趣可以参考以前的一篇文章:《Linux网络命令:系统中用于显示和操作 ARP缓存表的命令arp详解》。
二、基本功能和用法
1、基本功能
ip neigh命令的主要功能是显示ARP缓存中的条目,以及允许用户添加、删除或修改这些条目。这对于网络故障排除、性能优化以及确保网络安全都非常重要。
2、基本语法
ip neigh [命令选项] [目标地址]
3、常用选项
- show:显示邻居表项。
- add:添加一个新的邻居表项。
- replace:替换现有的邻居表项。
- delete:删除一个邻居表项。
- flush:清空邻居表项。
- -statistics:显示统计信息。
- -dev:指定网络接口。
- -n 或 --numeric:以数字形式显示 IP 地址,不进行域名解析。
- -to:指定目标地址。
4、获取帮助
可以通过如下命令获取帮助:
ip neigh help
实际操作如下:

三、常见用法
1. 显示ARP缓存
ip neigh show 或 ip neigh:显示当前ARP缓存中的所有条目。输出将包括IP地址、MAC地址、设备名称(网络接口)、状态等信息。
2. 添加ARP条目
ip neigh add <IP地址> lladdr <MAC地址> dev <设备名称> [其他选项]:向ARP缓存中添加一个新的条目。其中,<IP地址>和<MAC地址>分别指定要添加的IP地址和对应的MAC地址,<设备名称>指定网络接口名称。[其他选项]可以包括设置条目的状态(如nud permanent表示永久有效)。
3. 删除ARP条目
ip neigh del <IP地址> dev <设备名称>:从ARP缓存中删除指定的条目。需要指定要删除的IP地址和网络接口名称。
4. 清空ARP缓存
ip neigh flush [dev <设备名称>] [all]:清空ARP缓存中的所有条目。如果指定了dev <设备名称>,则只清空该设备上的ARP缓存;如果指定了all,则清空所有设备上的ARP缓存。
四、条目状态
ARP缓存中的条目具有不同的状态,这些状态反映了条目的当前情况和可用性。常见的状态包括:
- NUD_NONE:初始状态,表示条目刚刚被创建,但尚未进行任何验证。
- NUD_INCOMPLETE:未完成状态,表示正在尝试解析该条目的MAC地址,但尚未成功。
- NUD_REACHABLE:可达状态,表示该条目是活动的,可以成功通信。
- NUD_STALE:过期状态,表示该条目已过期,但可能仍然有效(取决于网络配置和策略)。
- 其他状态:如NUD_DELAY、NUD_PROBE、NUD_FAILED等,这些状态用于在ARP解析过程中处理各种情况。
五、使用示例
1. 显示所有邻居表项
ip neigh show
输出示例:
192.168.3.105 dev wlp3s0 lladdr d0:ad:08:50:de:b2 STALE
192.168.3.10 dev wlp3s0 lladdr 50:84:92:7d:3e:da DELAY
192.168.3.44 dev wlp3s0 lladdr 2e:d1:8e:27:0d:e0 STALE
192.168.3.51 dev wlp3s0 lladdr 6c:b1:58:db:d0:4b STALE
192.168.3.1 dev wlp3s0 lladdr c0:d1:93:b6:87:c7 STALE
如下图所示:

2. 显示特定 IP 地址的邻居表项
使用如下命令:
ip neigh show 192.168.1.1
输出示例:
192.168.1.1 dev eth0 lladdr 00:1a:2b:3c:4d:5e STALE
3. 显示特定网络接口的邻居表项
使用如下命令:
ip neigh show dev eth0
输出示例:
192.168.1.1 dev eth0 lladdr 00:1a:2b:3c:4d:5e STALE
192.168.1.2 dev eth0 lladdr 00:1a:2b:3c:4d:5f REACHABLE
4. 添加一个新的邻居表项
使用如下命令:
ip neigh add 192.168.1.3 lladdr 00:1a:2b:3c:4d:60 dev eth0
5. 替换现有的邻居表项
使用如下命令:
ip neigh replace 192.168.1.1 lladdr 00:1a:2b:3c:4d:5e dev eth0
6. 删除一个邻居表项
ip neigh delete 192.168.1.1 dev eth0
7. 清空所有邻居表项
使用如下命令:
ip neigh flush all
六、其他事项
1、使用ip neigh命令需要超级用户权限(sudo)。
2、在修改ARP缓存之前,请确保了解相关命令的效果,并在必要时备份相关配置。
3、网络接口:确保指定的网络接口名称正确。
4、状态管理:手动添加的邻居表项可能会被自动更新覆盖,除非将其设置为永久状态。
5、ARP缓存的更改可能会影响网络连接和性能,因此请谨慎操作。
综上所述,ip neigh命令是Linux系统下用于管理和查看ARP缓存的强大工具。通过使用该命令,用户可以轻松地查看网络设备之间的IP地址和MAC地址映射关系,并手动添加、删除或修改这些映射关系以满足网络故障排除、性能优化和安全需求。
通过 ip neigh 命令,可以更灵活地管理和操作邻居缓存表,这对于网络管理和故障排除非常有用。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。