arping 测二层
ping 走的是 IP 层,中间可能被各种策略影响;arping 直接发 ARP 请求,问「这个地址对应的网卡是谁」,绕开 IP 层看二层是否可达。它最常见的用途是做重复地址检测:在 IP 尚未正式启用前发问,如果有别的主机回应,说明该地址已被占用,这正是排查 IP 冲突的关键手段。
基本信息
| 适用平台 | Linux(存在两个常见实现,参数与输出略有差异) |
|---|---|
| 语法 | arping [-I 接口] [-c 次数] [-w 超时] 地址 |
| 关键选项 | -I 指定接口、-c 发送次数、-D 重复地址检测、-q 安静模式 |
| 权限要求 | 多数场景需要相应权限(原始套接字操作) |
典型使用场景
- 新分配的 IP 上线前做冲突检测,避免地址被别人占用
- 同网段内某台主机 ping 不通时,确认二层是否可达
- 定位「MAC 地址来回漂移」这类双绑冲突问题
- 迁移或克隆虚拟机后检查地址是否重复
- 确认网关或同类设备的地址解析关系
常用示例
常用示例
arping -I eth0 -c 3 10.0.0.9 # 指定接口发 3 个请求
arping -I eth0 -c 2 10.0.0.5 # 看回应的 MAC 地址
arping -D -I eth0 -c 2 10.0.0.5 # 重复地址检测:有回应即疑似冲突
arping -q -c 5 10.0.0.5 # 安静模式,只看汇总
arp -n | grep 10.0.0.5 # 与本机地址表交叉核对
tcpdump -i eth0 -n arp | head # 抓 ARP 包看真实交互输出与选项读法
| 项目 | 含义 | 关注点 |
|---|---|---|
| 回复行 | 来自某 MAC 的单播回复 | 记录 MAC,多次测试取交集更可靠 |
| 丢包统计 | 发送与接收计数 | 全丢说明二层不通或目标静默 |
| -D 检测结果 | 有人回应即存在冲突嫌疑 | 需结合交换机地址表进一步确认 |
| -I 接口 | 从哪块网卡发出 | 多网卡与绑定场景必须显式指定 |
判定冲突的关键是「两个不同 MAC 回应同一个 IP」,只看到一次回应可能来自网关代理,最好多测几轮并与交换机侧地址表交叉验证。
配套检查
- 在服务端地址表里查该 MAC 对应的端口,确认物理位置
- 在出现冲突的两台主机上核对地址配置来源
- 检查是否配置了浮动地址或高可用方案导致的共享地址
- 确认同网段是否有代理应答行为干扰判断
- 处理完后再次做一次检测,确认冲突已消失
不同实现(发行版自带的与第三方维护的版本)参数含义与输出格式不同,脚本里使用前先用帮助信息确认,并避免混用参数。