linux排查ip冲突需结合内核日志(如“duplicate address detected”)、arp表异常(一ip多mac)、tcpdump抓包验证arp风暴,并用第三方主机运行arping交叉检测——本机不可自检,因内核强制应答会掩盖真实冲突。

Linux中排查IP地址冲突,不能依赖系统自动弹窗提示(不像Windows),必须结合日志观察、ARP行为分析和主动探测。关键不是等出问题再查,而是从日志线索入手,快速定位异常源头。
看内核日志找“重复地址”痕迹
Linux内核在检测到潜在IP冲突时,会记录明确警告。执行以下命令筛选关键信息:
- dmesg | grep -i "duplicate\|conflict\|arp" —— 查看启动以来的内核消息,常见输出如 "IPv4: duplicate address detected!" 或 "gratuitous ARP reply received"
- journalctl -b | grep -i "arp\|duplicate" —— 检查本次启动后的systemd日志,尤其关注网络服务(systemd-networkd、NetworkManager)启动阶段是否报错
- 若看到 "DAD failed for 192.168.1.100",说明内核已执行过重复地址检测(DAD)并失败,该IP已被其他设备抢先使用
查ARP表确认“一IP多MAC”现象
ARP缓存混乱是冲突最直接的表现。运行命令观察异常模式:
-
ip neigh show 或 arp -a —— 找出同一IP对应多个不同MAC地址的条目,例如:
192.168.1.100 dev eth0 FAILED
192.168.1.100 dev eth0 lladdr 40:f4:ec:76:79:c2 PERMANENT
192.168.1.100 dev eth0 lladdr 50:7b:9d:25:29:59 REACHABLE - 频繁变动的 lladdr(即MAC)、状态在 REACHABLE/STALE/FAILED 间跳变,或出现 PERMANENT 条目,都是典型冲突信号
抓包验证ARP广播风暴
仅看缓存不够,需确认网络中是否真有多个设备应答同一IP的ARP请求:
- sudo tcpdump -i eth0 arp -n -c 20(替换为实际网卡名)—— 监听ARP报文
- 重点观察:
• 是否持续收到 "Who has 192.168.1.100?" 的广播请求(说明某设备反复做免费ARP或DAD)
• 同一IP是否被多个不同MAC回复 "Tell 192.168.1.100" - 若发现大量重复请求+多源应答,基本可断定存在活跃冲突,而非历史残留
配合arping从旁站交叉验证
本机无法用arping自检(内核强制应答),但可用另一台同网段Linux主机做“第三方仲裁”:
- 在跳板机或测试机上执行:
sudo arping -c 3 -w 2 -I eth0 192.168.1.100 - 若返回两条及以上不同MAC的 "Unicast reply",冲突坐实;只有一条且与本机ifconfig显示的MAC一致,则暂无冲突
- 注意:目标IP必须与探测机在同一子网,且链路未被VLAN隔离或ACL拦截











