arping 是基于 arp 协议检测 ip 冲突的底层工具,-d 参数执行 dad 检测,退出码 0 表示无冲突、1 表示存在冲突,响应中 mac 地址可定位冲突设备,需结合 arp 缓存和厂商 oui 验证,并通过循环扫描批量排查。

arping 是局域网内排查 IP 冲突最直接、最底层的工具之一。它不依赖 ICMP(不像 ping),而是基于数据链路层的 ARP 协议工作,因此能发现那些禁 ping、防火墙屏蔽 ICMP 但仍在使用 IP 的“隐身”设备。
用 -D 参数执行重复地址检测(DAD)
这是检测 IP 冲突的核心方式。arping 在 DAD 模式下会以源 IP 0.0.0.0 发送 ARP 请求,询问“谁拥有这个 IP?”,若网络中已有设备在使用该地址,就会立即响应——哪怕它不回应 ping,也会回应 ARP。
- 命令格式:arping -D -c 1 -I eth0 192.168.1.100(-c 1 表示只发一次,-I 指定网卡必须明确)
- 返回值是关键:退出码为 0 表示无冲突(无人应答);退出码为 1 表示存在冲突(收到应答)
- 注意:无需 root 权限也能运行,但部分系统要求 -I 显式指定接口,否则可能失败
观察响应内容判断冲突来源
当 -D 检测到冲突时,arping 会输出类似 Unicast reply from 192.168.1.100 [xx:xx:xx:xx:xx:xx] 的行。这个 MAC 地址就是正在占用该 IP 的真实设备。
- 结合 arp -a 或 ip neigh show 查看本机 ARP 缓存,确认是否已有该 IP-MAC 绑定
- 用 macchanger -s xx:xx:xx:xx:xx:xx 或厂商 OUI 查询工具反查设备类型(如 Cisco、Huawei、Apple 等)
- 若同一 IP 对应多个不同 MAC 地址(需配合 -d 参数或多次运行),基本可断定存在 ARP 欺骗或双网卡误配
避免误判:区分“未响应”与“真空闲”
没收到响应 ≠ IP 可用。某些设备可能关闭 ARP 响应(极少见)、处于休眠状态,或物理断开但 IP 未释放。建议组合验证:
- 先用 arping -f -c 3 192.168.1.100 快速试探是否“活设备”
- 再用 arping -D -w 2 192.168.1.100(-w 2 设 2 秒超时)确保 DAD 足够等待
- 最后检查网关 ARP 表:arping -I eth0 -s 192.168.1.1 192.168.1.1(模拟网关视角)
批量扫描网段辅助定位冲突点
arping 本身不支持多 IP 扫描,但可通过 shell 循环快速覆盖常用地址段:
- 例如检测 192.168.1.100–192.168.1.110:for i in {100..110}; do arping -D -c 1 -I eth0 192.168.1.$i &>/dev/null && echo "192.168.1.$i: OK" || echo "192.168.1.$i: CONFLICT"; done
- 搭配 -q 静默模式 + echo $? 捕获退出码,适合集成进自动化脚本
- 注意控制频率(避免广播风暴),生产环境建议间隔 100ms 以上











