网络与 IP

IP 地址冲突怎么解决:原因排查、arping 检测与预防

IP 地址冲突怎么解决,核心是三步:用 ARP 记录找到抢占同一地址的第二个 MAC,在交换机 MAC 表里定位它接在哪个端口,然后改掉配置错误的那一台。机房里要彻底根治,还得靠 IP 登记与交换机侧的源地址校验。

作者 顶联产品团队发布于 4 分钟阅读

先确认是不是 IP 地址冲突

IP 地址冲突怎么解决,第一步是确认症状确实来自冲突,而不是网关或链路问题。冲突的典型表现:

  • Windows 弹出“检测到 IP 地址冲突”,系统日志里有来源为 Tcpip、事件 ID 4199 的记录,内容会写明与之冲突的硬件地址(MAC);
  • Linux 默认不弹提示,表现为网络时通时断,ping 丢包呈周期性,或者 ARP 表里同一个 IP 对应的 MAC 反复变化;
  • 交换机日志出现 MAC 地址在两个端口之间漂移的告警;
  • 网关上 display arp 或 show ip arp 看到该地址的 MAC 与登记不符。

最直接的验证方法是 arping。iputils 版本的 arping 向目标地址发 ARP 请求,谁持有这个地址谁就会应答,收到两个不同 MAC 的应答就是冲突:

# 指定发包网卡,发 5 次请求,观察应答里的 MAC
arping -I eth0 -c 5 192.168.10.50

# 重复地址检测模式:退出码 0 表示无人应答(地址空闲),1 表示已被占用
arping -D -I eth0 -c 3 192.168.10.50; echo $?

Debian/Ubuntu 上有两个同名工具:iputils-arping 用 -I 指定网卡;Thomas Habets 版的 arping 用 -i,并且有专门找重复应答的 -d 参数。此外 arp-scan --localnet 会扫描整个网段,重复的地址后面直接标注 (DUP: 2)。

Windows 上用下面的命令查看当前记录的 MAC 和冲突事件:

arp -a | findstr 192.168.10.50
Get-NetNeighbor -IPAddress 192.168.10.50
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Tcpip'; Id=4199} | Select-Object -First 5

IP 地址冲突的原因

原因 典型场景 识别特征
手工配错 抄错地址、复制另一台机器的网卡配置、克隆的虚拟机镜像带着静态 IP 冲突方 MAC 属于新上线的设备
DHCP 与静态混用 把静态地址配在 DHCP 地址池范围内;设备离线期间租约到期,地址被分给别人,设备回来后冲突 冲突方由 DHCP 获得地址,DHCP 服务器租约表里能查到
客户私自改 IP 托管客户把网卡改成相邻的空闲地址或别人的地址,多见于多 IP 服务器和站群业务 冲突方 MAC 属于另一位客户的服务器
迁移遗留 下架的老机器被重新上电、备用机开机、双网卡两边配了同一个地址 冲突方 MAC 是登记表里“已下架”或“备用”的设备
高可用脑裂 keepalived、Windows 集群等 VIP 方案的两个节点同时认为自己是主节点 两个 MAC 都属于同一业务的服务器
VLAN 错误打通 端口 VLAN 配错或 trunk 放行了不该放的 VLAN,两个原本隔离的网段用了相同的私有地址 冲突方来自另一个 VLAN 或另一台交换机的下联端口

机房里的冲突通常出在前三种,其中“客户私自改 IP”很难靠沟通根治,需要交换机侧的技术手段,后文会讲。

排查步骤:从 ARP 记录到交换机端口

  1. 拿到两个 MAC。在受影响的主机或网关上查 ARP 表,或者抓包看谁在应答:
# 只看这个地址的 ARP 报文,应答里会出现两个不同的发送方 MAC
tcpdump -ni eth0 arp and host 192.168.10.50
  1. 判断哪个 MAC 是合法的。对照 IP 登记记录(IPAM)里该地址绑定的 MAC,另一个就是占用方。MAC 前三段(OUI)可以查出网卡厂商,有助于猜测设备类型,例如 52:54:00 开头是 KVM 虚拟机,00:50:56 是 VMware。
  2. 在交换机上按 MAC 找端口:
# 华为 / H3C
display mac-address 5254-00ab-cdef
display arp | include 192.168.10.50

# 思科 IOS
show mac address-table address 5254.00ab.cdef
show ip arp 192.168.10.50
  1. 顺着端口找设备。如果查到的端口是接服务器的接入口,对照机柜和端口登记就能确定是哪台机器;如果是上联口,说明设备在下一台交换机上,重复第 3 步。
  2. 紧急止损。找到端口后,如果占用方影响了付费客户的业务,可以先把该端口 shutdown,再联系设备负责人。
  3. 改正配置并清理 ARP 缓存。让占用方改回正确地址后,在受害主机和网关上清掉旧的 ARP 记录,否则要等缓存自然老化:
# Linux 主机
ip neigh flush all
# Windows 主机
arp -d *
# 华为交换机(用户视图)
reset arp all
# 思科交换机
clear ip arp 192.168.10.50
  1. 让合法主机重新宣告。在合法主机上发一次免费 ARP,刷新所有邻居的缓存:
arping -U -I eth0 -c 3 192.168.10.50

不同原因的处理办法

DHCP 与静态混用:把静态地址集中在地址池之外,并在 DHCP 服务器上排除这段范围。Windows DHCP 在作用域里添加“排除范围”,并在服务器属性里把“冲突检测尝试次数”设为 1 或 2;ISC DHCP 在配置里加 ping-check true;;思科路由器上用 ip dhcp excluded-address 192.168.10.1 192.168.10.100 排除,再用 ip dhcp ping packets 2 让它分配前先探测。

客户私自改 IP:沟通之外,在接入端口做 IP 与 MAC 的静态绑定并开启源地址校验,改了地址的报文直接被交换机丢弃,客户自己就会发现“改了不通”。

! 思科:先在 VLAN 上启用 DHCP snooping(静态绑定也依赖它),再绑定并校验
ip dhcp snooping
ip dhcp snooping vlan 10
ip source binding 5254.00ab.cdef vlan 10 192.168.10.50 interface GigabitEthernet1/0/5
interface GigabitEthernet1/0/5
 ip verify source
# 华为 S 系列:静态绑定表项,并在端口开启 IP 源防攻击
system-view
user-bind static ip-address 192.168.10.50 mac-address 5254-00ab-cdef interface GigabitEthernet 0/0/5
interface GigabitEthernet 0/0/5
 ip source check user-bind enable

H3C 的命令是接口视图下的 ip source binding ip-address 192.168.10.50 mac-address 5254-00ab-cdef 和 ip verify source ip-address mac-address,思路一致。

迁移遗留:下架流程里加一步“清网卡配置或拔网线”,备用机用独立的临时地址;在网关上给关键地址配静态 ARP(华为 arp static 192.168.10.50 5254-00ab-cdef,思科 arp 192.168.10.50 5254.00ab.cdef arpa),即使有人误配,网关也只认登记的 MAC。

高可用脑裂:先检查两个节点之间的心跳链路和 VRRP 报文是否被交换机过滤(组播 224.0.0.18 或单播),再核对优先级和抢占配置;脑裂期间先停掉一个节点的 keepalived 恢复业务。

VLAN 错误打通:核对端口的 PVID 和 trunk 的 VLAN 放行列表,把误放行的 VLAN 收回。

机房里怎么预防 IP 冲突

处理一次冲突不难,难的是不再发生。IDC 里行之有效的做法有四条:

  1. 每个地址有主:所有公网、内网、IPMI 地址都登记在 IPAM 里,写明所属服务器、MAC、客户和状态;分配只能从登记表里取,不允许口头“先用着”。
  2. 分配前探测:给客户配地址之前,在同网段的机器上跑一次 arping -D,有应答就说明登记表和现实对不上,先查再分:
if arping -D -I eth0 -c 3 192.168.10.50 >/dev/null; then
  echo "空闲,可以分配"
else
  echo "已有设备应答,暂停分配并核查"
fi
  1. 交换机侧锁定:接入端口做 IP 与 MAC 绑定,开启源地址校验,这样客户改了地址也发不出包,冲突在端口上就被挡住,不会扩散到整个网段。
  2. 持续监听:在网关所在的 VLAN 上跑 arpwatch,一旦某个 IP 对应的 MAC 发生变化或来回翻转,立即邮件告警,比等客户投诉早得多。

Toplink DCIM 把前三条合在了一起:IP 地址管理统一登记每个地址的归属,自动分配时排除已占用和已锁定的地址;交换机管理在端口上下发 ARP 绑定与源地址校验,MAC 可以自动学习并绑定,服务器换线迁移时不需要人工重新核对。

常见问题

IP 冲突了,重启电脑有用吗?

重启只是让本机重新发一次 ARP 探测,如果另一台设备还在用这个地址,冲突会立刻再次出现。必须找到并修改占用方的配置。

IPv6 会有地址冲突吗?

IPv6 在协议层内置了重复地址检测(DAD),发现重复时新配置的地址会被标记为 dadfailed 而不生效,所以表现是“地址配不上”,而不是两台机器互相抢占。

为什么 ping 得通但时通时断?

两台设备轮流应答 ARP,网关和其他主机的 ARP 表在两个 MAC 之间来回切换,流量一会儿发给这台一会儿发给那台,这正是冲突的典型表现。

克隆出来的虚拟机为什么会 IP 冲突?

模板里残留了静态地址,或者两台机器的 DHCP 客户端标识相同(例如 systemd-networkd 默认用 machine-id 生成 DUID),克隆后会申请到同一个地址。克隆后要清掉静态网卡配置,并重新生成 machine-id 或 DHCP 客户端标识。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88