网络栈调优98 条

邻居表故障定位

同网段部分地址不通时, 先看邻居表状态: FAILED 条目说明地址解析无响应, 结合 arping 与链路检查定位。

邻居表故障定位

同网段里部分地址不通时,先看邻居表的状态:持续处于 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 有响应说明二层可达,但这不代表上层服务正常;地址解析只是链路层这一步,之后仍需按协议栈逐层验证。

易错点

  • 把地址解析问题误判为路由或应用问题,反复检查配置却方向错误
  • 多网卡环境下漏带 dev 参数,看错表项得出错误结论
  • arping 有响应就认为链路完全正常,忽略上层服务与端口问题
  • 只在本端排查,不去核对交换机侧端口与隔离策略

数据来源与参考

  • man ip-neighbour
  • man arping
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌