一、问题描述

在vmware环境中,经常会遇到vc或NSX报出Duplicate IP的问题,导致vm和edeg的网络问题,排查定位困难,今天我们就来看下如何处理这种重复IP的网络冲突问题。

二、案例分析处理

案例 1

问题:A duplicate IP address is detected for a vmknic interface configuration. This impacts IPv4 and IPv6.
If 192.168.3.1 is the IP address used by the remote interface 00:50:56:76:b9:ae, the following event will be seen when this very same IP address is being assigned to the local vmknic interface vmk2.
Duplicate IP address detected for 192.168.3.1 on interface vmk2, current owner being 00:50:56:76:b9:ae
影响:任何依赖于错误配置接口的服务都可能受到 IP 网络连接问题的影响。

分析处理:使用 esxcfg-vmknic配置正确的ip地址或配置为DHCP获取,即配置业务网卡IP地址池(但有时环境为管理发布,多用静态地址)

案例 2

问题:

分析处理:net-stats -l | grep edge //查看exci vmnic接口的edge关联情况,示例如下:

33554440 5 9 DvsPortset-0 00:50:56:89:b0:d5 edge1.eth0 - This edge interface has IP address 10.1.1.10
50331658 5 9 DvsPortset-1 00:50:56:89:09:f8 edge1.eth2 - This edge interface has IP address 192.168.1.12/24
50331659 5 9 DvsPortset-1 00:50:56:89:ab:49 edge1.eth1 - This edge interface has IP address 192.168.1.13/24

如果我们执行数据包捕获或查看物理安全日志,我们会看到包含以下内容的数据包:
source mac as: 00:50:56:89: ab:49 - Mac address from edge node eth1
source IP address as: 192.168.1.12 - IP address from edge node eth2

处理:检查VMKNics 的ip地址,确保唯一性。edge执行同步,消除流量缓存影响,同步后正常edge上的重复IP警告会消除。

案例3:

故障描述:
The system has detected a conflict for IP address
There is an IP address conflict with another system on the network
The static IP address that was just configured is already in use on the network. Please reconfigure a different IP address
The IP address XXX.XXX.XXX.XXX you have entered for this network adapter is already assigned to another adapter

处理:
移除并重新添加虚拟 NIC ;

案例4:

故障描述:
1)Edge节点配置为使用多个 vTEP 接口用于重载/重新封装流量。
2)物理网络设备可能会在物理网络上将数据包作为恶意数据包丢弃。也就是说,物理网络设备发现具有相同源 IP 地址的数据包却使用不同的 MAC 地址离开 ESXi 主机上的端口。
3)离开 ESXi 主机vmnic 的数据包将 mac 地址分配给Edge节点上的第二个接口,而将 IP 地址分配给edge节点上的第一个接口,反之亦然,即同样的数据包分开走了不同的接口。
4)edge节点可能有 2 个 vTEP 接口,它们在 ESXi 主机上被视为 eth1 和 eth2,如下所示:

[root@esx1:~] net-stats -l | grep edge
33554440 5 9 DvsPortset-0 00:50:56:89:b0:d5 edge1.eth0 - This edge interface has IP address 10.1.1.10
50331658 5 9 DvsPortset-1 00:50:56:89:09:f8 edge1.eth2 - This edge interface has IP address 192.168.1.12/24
50331659 5 9 DvsPortset-1 00:50:56:89: ab:49 edge1.eth1 - This edge interface has IP address 192.168.1.13/24

5)如果抓包分析或查看物理安全日志,我们会看到包含以下内容的数据包:
source mac as: 00:50:56:89: ab:49 - Mac address from edge node eth1
source IP address as: 192.168.1.12 - IP address from edge node eth2

原因分析:
Edge节点上有一个流缓存(flow cache )进程,可用于帮助提edge的性能。但此进程存在一个问题,导致它为流出edge节点的流出流量选择错误的接口。

处理:
在Edge上禁用流缓存,这将确保数据包出口到正确的接口。这将影响edeg的吞吐性能。
使用admin用户登录 edge设备,执行以下命令,确认flow cache进程状态:

get dataplane flow-cache config //如果显示Enabled = true,就表名开启

set debug
set dataplane flow-cache disabled //关闭
restart service dataplane //重启数据面版服务以生效,这将会导致数据平面以秒为单位的短暂中断。

get dataplane flow-cache config //验证

三、IP地址冲突后的通信原理

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_keepalived 虚拟IP不稳定


如上图所示,局域网中,有2台IP地址一样的设备:pc2和pc3,这时就会出现网络冲突问题,这是依据ARP协议的的Gratuitous ARP,被翻译为『免费ARP』也被称为『无故ARP』,用于检测局域网内的IP地址冲突;注意网络冲突不一定一开始就出现网络不通的情况,上图中的pc2和pc3会不停广播自己的IP与MAC对应关系,所以网关的ARP列表也在不停刷新(刷新间隔极短,频率极高),导致网关回包时IP不变,但依据ARP信息封装不同的目的MAC,交换机收到的数据帧目的MAC一会儿是pc2,一会儿是pc3,出现网络抖动,网速变慢,ping时断时通,最终导致通信故障。

关于ARP(地址解析协议)。我们知道它的作用是三层设备学习局域网内其它设备的MAC地址与IP地址的对应关系。而在二层交换机上,它只学习网络接口及对应MAC地址并记录到交换机MAC地址表,且MAC在地址表只能唯一。

假设外部用户发送数据包给192.168.1.2的时,交换机会将数据包转发给谁呢?

①根据ARP原理,路由转过来的数据包会到达交换机,等待交换机拆开这个数据包,并且根据目的MAC进行转发;发起方会首先发起一个ARP请求包,作用是请求目的IP的MAC地址(二层广播),如有接收方匹配IP,则会回应,然后发起方把接收方的MAC地址写进自己的ARP表,才可通信。

②那么目的MAC是封装PC2还是PC3的MAC呢?都有可能,看携带MAC的数据包哪个先到,根据"后到优先"原则,如果pc2先回包ARP,就发往pc3;如PC2和PC3交替回应ARP,PC1有可能将部分数据给PC2,部分数据给PC3;

③当局域网中的电脑检测到自己的IP地址跟其他电脑冲突时,它们会相互发送免费ARP,用来提醒对方:你的IP地址跟我的冲突啦! 免费ARP是以ARP Request或Reply广播形式发送,将IP和MAC地址信息绑定,并宣告到整个局域网。如果在宣告的过程中,其他电脑监听到,并且IP地址跟自己一样,也会直接参与这个广播过程,进行争抢,这个争抢过程,可能会持续一段时间,也可能一直持续下去,直到有一方做出让步并修改IP地址。

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_keepalived 虚拟IP不稳定_02


下面我们来看一则网络示例:局域网中2台主机ip冲突:

1)pc1上抓包:pc2发自己的广播被pc1接收到

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_tcp/ip_03


2)pc2上抓包:pc2windows回应pc1 mac电脑,199.152,已经被我用了。虽然图示这个过程重复了3次。但实际这个过程后面会在不断的持续中。

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_IP_04


IP通信流程:

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_keepalived 虚拟IP不稳定_05

结论: 局域网中出现ip地址冲突后,不一定就会出现立即网络中断的故障,多是网络抖动,mac与duplicate ip频繁切换,最终都会出现一方网络争抢失败,出现中断故障一段时间,且IP冲突后悔及时爆出冲突警告。

四、云桌面NSX edge出现duplicate ip

出现后,edge设备会及时报出告警,且在设备事件台中也会有相关记录:

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_网络协议_06


在NSX edge的技术上日志里有相关网络连接超时记录:

keepalived 虚拟IP不稳定 keepalived虚拟ip冲突_IP_07


关键字: mac地址,ip地址,Duplicated IP address,“severity”:“Critical”,Duplicated IP address detected,macAddres,vNic_1,Flow Table,ARP Cache,[kern.info] nf_conntrack: TCP Connection Timedout,

从上述日志中,排查Duplicated IP对应的MAC地址,定位到nsx edge,清除重复的ip信息配置,排除网络冲突故障。

说回vmware环境中,实际场景中edge出现ip重复告警后,不会第一时间在设备侧表现出网络中断现象,但可能出现网络加载慢的现象,这样的结果会导致在某一刻故障,突然被暴露曾现给用户,如果要追溯诱因,思路如下:

1)edge设备上的业务地址是上行端口,作为大2层网络的vm其直接连接到外部物理交换机;可考虑检查交换机的mac相关日志,确认故障时间段内,业务地址落在了哪个mac地址上,理论上是落在了非业务线路的那一部分,从而导致了业务中断;
2)通过确认故障时刻MAC地址恰好切换到错误的设备上面,及arp表里被非业务流设备更新,请求到达错误的mac设备后,是找不到对应业务的。从而判断此类事件为故障的直接诱因。