首页/网络/网络排障速查/arp / ip neigh 查看邻居表
连通性与链路检测54 条

arp / ip neigh 查看邻居表

ARP 表是二层到三层的桥:ping 不通先看邻居表状态——REACHABLE 说明二层通、INCOMPLETE/FAILED 说明 ARP 都解析不出来,问题在链路层。

网络排障速查网络更新于 2026-10-13

ARP 表是二层与三层的桥

同网段通信必须先把 IP 解析成 MAC,这张映射表就是邻居表(ARP 表)。ping 不通时先看邻居表状态:REACHABLE 说明二层可达,问题在更上层;INCOMPLETE 或 FAILED 说明连 ARP 应答都收不到,问题一定在链路层。Linux 用 iproute2 的 ip neigh 查看并带状态,Windows 用 arp -a 或 Get-NetNeighbor。

表项怎么来怎么走

主机发送前先查邻居表,命中就直接封装以太网帧;未命中就广播一个 ARP 请求,对方单播应答后写入表项。表项有老化时间,长期不用会退化为待验证状态,下次发包时内核再确认一次。理解这条生命周期,就能明白为什么刷新表项、为什么跨网段只看见网关、以及为什么冲突时同一个 IP 的 MAC 会来回跳。

Linux 查看

Linux 查看
ip neigh show                 # 推荐:带 REACHABLE/STALE/FAILED 状态
ip neigh show dev eth0        # 只看某张网卡
ip neigh show 10.0.0.5        # 只看某个目标
arp -a                        # net-tools 风格,装了才有
ip neigh flush 10.0.0.5       # 清条目强制重新解析(慎用)

Windows 查看

Windows 查看
arp -a
Get-NetNeighbor -AddressFamily IPv4 | Where-Object State -ne Permanent
Get-NetNeighbor -IPAddress 10.0.0.5 | Select-Object IPAddress,LinkLayerAddress,State
Remove-NetNeighbor -IPAddress 10.0.0.5 -Confirm:$false   # 清条目复测

排查用法

  • 同网段 ping 不通:先看目标条目是 REACHABLE 还是 INCOMPLETE,一步区分二层与三层问题
  • 怀疑地址冲突:连续查看同一 IP 的条目,MAC 是否在两组地址之间跳动
  • 刚换过网卡或交换机:清掉旧条目再复测,避免内核复用老化表项
  • 排查跨网段问题:只核对网关条目,目标 IP 查不到属正常现象
  • 做资产核对:用邻居表反查同网段在线设备的 MAC 与厂商前缀

状态逐项读法

状态含义正常/异常
REACHABLE近期验证过可达,二层通畅正常
STALE条目仍可用但未重新验证,内核会按需确认正常,不必手动刷新
DELAY / PROBE正在重新验证过程中正常过渡态
INCOMPLETE已发 ARP 请求未收到应答异常:链路、VLAN 或对端问题
FAILED多次请求无应答,条目已判失败异常:对端不存在、口未启用或 VLAN 错
跨网段的目标在邻居表里只会看到网关的 MAC,不会出现目标 IP,拿目标地址去查邻居表查不到属正常。
邻居表有老化时间:条目长期不用会从 REACHABLE 退到 STALE,需要发包时内核再验证一次。因此 STALE 状态本身不代表不通,只有 INCOMPLETE 与 FAILED 才需要往链路层查。

易错点

  • 把 STALE 当成故障去刷新:内核按需验证是正常机制,手动 flush 只会制造额外广播
  • 目标不在同一网段却用它的 IP 查邻居表,查不到就误判,应该查网关的条目
  • 看到 INCOMPLETE 只怀疑网线,忽略 VLAN 划分与交换机端口 PVID,真正的分界常在二层配置上
  • 用 arp -a 在容器里查宿主机的邻居表,网络命名空间不同,看到的不是同一张表

数据来源与参考

  • RFC 826:ARP 协议
  • iproute2 手册:ip neigh(状态机说明)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌