首页/网络/网络排障速查/arping:二层连通性与 IP 冲突检测
连通性与链路检测54 条

arping:二层连通性与 IP 冲突检测

ping 走三层可能被路由绕开;arping 直接在链路层问「谁的 IP 是这个地址」,用于验证同网段可达、检测 IP 冲突、更新邻居缓存。

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

arping 在测什么

arping 直接发送 ARP 请求并等待 ARP 应答,通信发生在二层,中间不经过路由。ping 走三层,只要路由可达就能通到别的网段;arping 只对同一广播域内的目标有效,收到应答就证明「这台设备与目标在同一个二层网络里且能通」。这个差异让它成为两类问题的专用工具:判断目标是否真的在同网段,以及检测同一 IP 被两台设备配置的地址冲突。

基本信息

适用平台Linux,需要 root 或 CAP_NET_RAW 权限
常用实现iputils 版用 -I 指定接口;Debian 的 arping 包(Habets 版)用 -i
作用域仅同一广播域(同 VLAN、同网段)
关键选项-c 次数、-D 冲突检测、-U 无请求声明、-s 源地址、-w 超时
Windows 替代arp -a 看邻居表,或用 arping 类第三方工具

典型使用场景

  • 确认两台主机是否真的在同一网段:ping 通但 arping 无应答,说明中间走了路由
  • 检测 IP 地址冲突:冲突检测模式下两个不同 MAC 都回应即为实锤
  • 更换设备或网卡后刷新邻居表:用无请求应答让对端立即更新缓存
  • 二层连通性验收:新布线的接入端口上验证能否拿到对端 MAC
  • 配合交换机 MAC 表定位:确定某个 IP 当前对应哪个物理端口

基本用法(iputils arping)

基本用法(iputils arping)
arping -c 3 -I eth0 10.0.0.5              # 二层探活:收到 Reply 说明同网段可达
arping -D -c 3 -I eth0 10.0.0.5           # 冲突检测:两个不同 MAC 都回应即为 IP 冲突
arping -U -c 1 -I eth0 -s 10.0.0.5 10.0.0.5  # 无请求 ARP,刷新对端邻居缓存
arping -c 2 -I eth0 -s 10.0.0.5 10.0.0.1  # 源地址不同时先绑定本机地址
arping -f -c 5 -I eth0 10.0.0.5           # 收到第一个应答即退出,脚本里更快

输出与结论

输出表现含义下一步
收到 Reply,MAC 唯一二层可达,地址无冲突故障不在此段,继续往三层查
两个不同 MAC 交替应答同网段存在 IP 冲突结合交换机 MAC 表找出冲突主机
完全没有应答目标不在同广播域,或被隔离检查 VLAN、端口隔离与防火墙
应答来自网关 MAC目标 IP 由网关代答代理 ARP确认是否配置了代理 ARP 或跨网段
显示接口不存在或权限不足接口名写错或缺少原始套接字权限用 ip link 确认接口名,使用 root
arping 只能用于同一个广播域:跨网段的目标本来就不会回 ARP,用它检查跨三层可达必然得到错误结论,这类场景要用 ping 或端口探测。
两个常用实现的参数不通用:iputils 版接口用 -I,Habets 版用 -i;写脚本前先执行 arping -h 确认本机是哪一版,否则会报参数错误。

易错点

  • 把 arping 不通当三层故障:目标不在同广播域时本来就不会应答
  • 冲突检测时忽略两个 MAC 交替应答的输出,误判成链路抖动,继续在物理层兜圈子
  • 在虚拟机或容器网络里滥用:部分虚拟交换会代答 ARP,结论失去参考价值
  • 无请求 ARP 刷新(-U)在核心网段高频使用:会瞬时刷新大量邻居表项,可能造成短时流量抖动

数据来源与参考

  • iputils arping 手册
  • RFC 5227:IPv4 Address Conflict Detection

相关工具

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