邻居表故障定位
同网段里部分地址不通时,先看邻居表的状态:持续处于 FAILED 说明 ARP 或 ND 请求没有得到响应,问题通常在链路、对端配置或中间设备的隔离策略上。诊断顺序是:确认本端接口与地址配置无误,查看邻居条目状态,用 arping 手工触发解析,再结合接口错误计数与交换机端口状态定位。
基本信息
| 查看条目 | ip -s neigh show |
|---|---|
| 手工触发解析 | arping -I eth0 192.0.2.1 -c 2 |
| 查询单条 | ip neigh get 192.0.2.1 dev eth0 |
| 注意 | 多网卡环境必须带 dev 参数,否则查的是默认表项 |
| 关联检查 | ip -s link 的接口错误计数与交换机端口状态 |
典型使用场景
- 同网段部分主机不通,判断是路由问题还是地址解析问题
- 主备切换后新地址无法访问,确认邻居条目是否指向旧主机
- 容器或虚拟网络内 ping 不通同网段地址
- 更换交换机或端口后原地址失效,确认解析是否恢复正常
- 排查网络中断时确认是否为单点主机而非整段不可达
诊断命令
诊断命令
ip -s neigh show # 查看条目与其状态、使用计数
arping -I eth0 192.0.2.1 -c 2 # 手工触发解析,观察是否有响应
ip neigh get 192.0.2.1 dev eth0 # 查询单条,多网卡时必须带 dev
ip -s link show eth0 # 对照接口层的错误与丢弃计数现象与可能原因
| 现象 | 可能原因 | 下一步 |
|---|---|---|
| FAILED 且持续不恢复 | 对端未响应解析请求 | 核对链路、对端地址配置与隔离策略 |
| FAILED 短暂后恢复 | 对端刚启动或链路存在丢包 | 结合接口错误计数确认丢包来源 |
| 表中无该地址的条目 | 从未通信过或已被回收 | 手工触发一次解析再看结果 |
| 条目指向错误主机 | 地址漂移后条目未更新 | 清理接口邻居条目后重新解析 |
判读顺序
- 先确认本端的地址、掩码与接口状态没有问题
- 再看邻居条目是缺失、陈旧还是 FAILED
- 用 arping 手工触发,区分「解析失败」与「解析成功但通不了」
- 最后核对交换机侧端口状态与 VLAN 配置,排除二层隔离
多网卡主机上排查必须带 dev 参数:不带时查询的是默认接口对应的表项,很容易得出「条目不存在」这类误导性结论。
arping 有响应说明二层可达,但这不代表上层服务正常;地址解析只是链路层这一步,之后仍需按协议栈逐层验证。