文章

一次由 IP 地址冲突引发的故障

一次由 IP 地址冲突引发的故障

一次由 IP 地址冲突引发的故障排查与解决

问题现象:电脑ping外网时通时断,tracert 从第二跳开始丢包,访问管理地址 192.168.1.1 时页面在两个设备间切换。
根本原因:局域网中两个设备使用了相同的 IP 地址,导致 ARP 表混乱。
解决方案:统一网关配置,避免 IP 冲突。


一、问题背景

在该用户的房屋中,电脑网线连接小米 4A 千兆路由器(设置为有线中继模式)上网,路由器上级不明,但确认有一个联通光猫,其他设备不明。近期频繁出现以下现象:

问题

  • ping 外网(如 223.5.5.5, baidu.com)时通时断;
  • 执行 tracert baidu.com,第一跳(192.168.1.1)无丢包,但从第二跳(10.70.0.1)开始出现与外网一致的丢包;
  • 在浏览器中访问 http://192.168.1.1 时,管理界面会在“水星路由器”和“联通智家”之间随机切换。

这些现象表明:本地网络存在不稳定性,且192.168.1.1身份不唯一


二、技术原理简述:什么是 ARP?

要理解问题根源,需先了解 ARP(Address Resolution Protocol,地址解析协议) 的作用。

在局域网中,设备之间的通信依赖 MAC 地址(物理地址,全球唯一),但用户通常使用 IP 地址(逻辑地址)进行访问。ARP 的任务就是将 IP 地址“翻译”成对应的 MAC 地址。

例如,当电脑要访问网关 192.168.1.1 时,它会广播一个 ARP 请求:“谁是 192.168.1.1?请告诉我你的 MAC 地址。” 正常情况下,只有网关会回应,并将自己的 MAC 地址返回。电脑随后将该映射关系存入 ARP 缓存表,以便后续直接通信。

关键点:只要收到 ARP 响应,系统就会更新缓存——这为“冒充”提供了可能。


三、问题定位:ARP 表暴露 IP 冲突

我执行命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
arp -a

接口: 192.168.1.105 --- 0x10
  Internet 地址         物理地址               类型
  192.168.1.1           00-5c-c2-f0-b1-f8     动态

arp -a -d * # 清空arp

# 稍作等待,重复命令:
arp -a

接口: 192.168.1.105 --- 0x10
  Internet 地址         物理地址               类型
  192.168.1.1           78-90-a2-bf-23-f0     动态

这意味着:同一个 IP 地址 192.168.1.1 对应了两个不同的 MAC 地址

通过查询 MAC 地址前缀(OUI)可知:

  • 00:5C:C2 → 水星(MERCURY)设备;
  • 78:90:A2 → 中兴(ZTE)设备,即联通光猫。

结论:光猫和水星路由器都被配置为使用 192.168.1.1 作为 LAN IP 地址,造成 IP 地址冲突

在这种情况下:

  • 电脑每次发送 ARP 请求,可能收到任一设备的响应;
  • ARP 缓存表不断被刷新,网关身份漂移;
  • 数据包有时发往光猫,有时发往水星,导致 NAT(网络地址转换)状态不一致;
  • 上游网络(如运营商网关 10.70.0.1)无法维持稳定会话,表现为 从第二跳开始丢包

此外,DNS 服务也可能受到以上影响。

2-分析


四、临时验证:静态绑定 ARP 条目

为验证上述判断,我尝试将 192.168.1.1 固定绑定到光猫的 MAC 地址(因其直接连接外网,更适合作为主网关):

3-添加ARP绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 清空arp
arp -a -d *

# 查询以太网的<Idx>
netsh i i show in

Idx     Met         MTU          状态                名称
---  ----------  ----------  ------------  ---------------------------
  1          75  4294967295  connected     Loopback Pseudo-Interface 1
 16          25        1500  connected     以太网

# 绑定以太网
netsh interface ipv4 add neighbors 16 "192.168.1.1" "78-90-a2-bf-23-f0"

arp -a

# 查看已经生效
接口: 192.168.1.105 --- 0x10
  Internet 地址         物理地址              类型
  192.168.1.1           78-90-a2-bf-23-f0    静态

结果:网络立即恢复,ping 不再丢包。

4-效果

这证明:问题确由 ARP 冲突引起,且光猫作为主网关是可行的

注:Windows 重启后静态邻居条目会丢失,其他设备也需要解决问题,不能限于此方法。


五、根因和解决,以及理想网络拓扑

本案例后续排查找到了水星设备,该设备通过LAN口连接到光猫,这使得处于同一广播域。又由于水星设备管理地址是 默认的 192.168.1.1 ,由此造成IP地址冲突。按照实际用户意愿,将其改插WAN口和调整设置解决。

理想的家庭网络结构应为:

1
[光猫(路由模式)] —— [路由(AP 模式)] —— [中继] —— [终端]

其中:

  • 光猫:必备,负责主路由、拨号、分配 IP(DHCP)、作为网关(192.168.1.1);
  • 路由:扩展,建议作为交换机(AP 模式)使用,家庭网络无必要划分太多NAT;
  • 中继:扩展,进行有线/无线中继,同样不启用路由。

家庭网络中保证仅有一个 DHCP 服务器和一个网关,可以保证网络质量同时不引起冲突。


六、总结

  • ARP 是局域网通信的基础协议,负责 IP 到 MAC 的映射;
  • IP 地址冲突会导致 ARP 表混乱,引发网关漂移、丢包、连接中断;
  • 排查工具arp -aipconfig /alltracert
  • 临时方案:静态 ARP 绑定(临时措施);
  • 长期方案:确保全网只有一个主路由,其余设备设为 AP 或关闭 DHCP。

即使作为最终用户,理解基本网络原理也能帮助我们快速定位问题,减少维修的时间和金钱。

本文由作者按照 CC BY 4.0 进行授权