实战|​​IP地址冲突检测方法研究与实践

文 / 中国光大银行信息科技部 刘轶勇 魏耀辉IP地址冲突是指在局域网中某主机配置了与其他主机相同的IP地址导致原主机无法正常处理业务,这种信息故障事件对于实时交易业务尤其是金融行业业务会带来严重影响,快速检测网络中IP地址冲突并定位至关重要。下文将分析不同IP地址冲突场景,整理传统日志监控方式以及研究两种报文采集定位方法,旨在实现快速检测定位,提高运维效率。数据报文转发与IP地址冲突过程测试ARP地址解析是主机发现从网络层IP地址到链路层MAC地址之间映射关系的过程。地址解析协议ARP运行的关键是维护每

文/中国光大银行信息技术部刘毅勇魏姚辉

IP地址冲突是指一台主机被配置了与局域网内其他主机相同的IP地址,使得原主机无法正常办理业务。这种信息失效事件会对实时交易业务,尤其是金融行业业务造成严重影响。快速检测和定位网络中的IP地址冲突是非常重要的。下面将对不同的IP地址冲突场景进行分析,对传统的日志监控方式进行梳理,研究两种报文收集和定位的方法,旨在实现快速检测和定位,提高运维效率。

数据转发和ip地址冲突过程的测试ARP地址解析是主机发现网络层IP地址和链路层MAC地址的映射关系的过程。ARP运行的关键是维护ARP缓存表,该表记录了每台主机和路由器上ip地址和MAC地址的映射关系。下图中,当主机B需要向主机C发送一个数据包时,B只知道C的IP地址,通过查询主机B的ARP缓存表,找不到该IP对应的MAC地址,所以主机B的数据链路层无法封装MAC帧,将数据包发送给主机C。

图1主机B通过ARP缓存表查找主机C的MAC地址

为了获得主机C的MAC地址以便向主机C发送消息,主机B需要广播ARP请求消息来请求目的IP地址的MAC地址。主机C收到B的广播帧后,首先在其ARP缓存表中记录B的ip和MAC的映射关系,然后发送ARP响应通知自己的MAC地址。

图2主机B广播ARP请求消息

主机B收到C的ARP响应后,将MAC地址记录在自己的ARP缓存表中,然后就可以封装MAC帧,将数据包发送给主机C,其他主机收到后会忽略。

图3主机C发送ARP响应消息

地址解析协议ARP还有一个功能,免费ARP。该函数的主要功能是检测IP地址冲突。免费ARP是一种特殊的ARP请求。当主机启动时,它发送一个免费的ARP请求来请求自己IP地址的MAC地址。

图4免费ARP请求消息

免费ARP请求通常有两个目的。第一个目的是当IP地址更改为对应的MAC地址时,通过ARP请求通知局域网中的其他主机更新ARP缓存表。第二个目的是确定LAN中是否有主机配置了与自己相同的IP地址。对于第二个目的,主机不希望收到对这个请求的响应,因为一旦收到响应,就证明另一台主机也配置了相同的IP地址,网络中存在IP地址冲突。

图5免费ARP响应消息

免费ARP报文可以用来检测是否存在IP地址冲突。为了测试IP地址冲突时不同操作系统的ARP交互,我们设置了以下测试环境,通过更改主机的IP地址配置来模拟IP地址冲突。

图6 ARP交互实验环境示意图

以Linux系统下测试IP地址冲突时ARP交互的实验为例。实验如下。

1.实验过程

(1)使用Linux B(192 . 168 . 198 . 130)ping Linux C(192 . 168 . 198 . 131)和Linux C ping Linux B,模拟主机B和主机C之间的正常网络通信..

图7主机B和主机C相互发送ping数据包以模拟网络通信

(2)将Linux A的IP地址(192.168.198.129)改为192.168.198.130,以模拟Linux A主动制造与Linux B的IP地址冲突。

图8主机A的活动制造和主机b之间的IP地址冲突。

(3)在局域网中捕捉数据包,使用wireshark分析IP地址冲突下主机的交互。

2.实验分析

(Linux a修改地址后,主机a立即发送以主机a的MAC为源MAC,ff: ff: ff: ff: ff为目的MAC的免费ARP广播,通过全网通知主机a其IP地址为192.168.198.130。

(2)主机B收到主机A的免费ARP后,以主机B的MAC为源MAC,FF: FF: FF: FF: FF为目的MAC进行响应,宣布主机B在全网的IP为192.168.198.130。

(3)主机A连续发送4次免费ARP公告,但主机B只会在第一时间响应。

(4)由于主机A多次发送免费ARP,主机C的ARP缓存表中记录的192.168.198.130此时为主机A,主机C与192.168.198.130之间的通信不间断。

图9主机IP地址冲突后的ARP交互

(5)主机B(此时IP地址冲突)与主机C (192.168.198.131)的通信中断,通过数据包可以找到主机B(IP:192 . 168 . 198 . 130);Mac: 00: 0C: 29: FF: 12: 87)访问C主机(IP:192 . 168 . 198 . 131;Mac: 00: 0c: 29: 38: 83: 18),C主机向A主机发回一个数据包(IP:192 . 168 . 198 . 130;MAC:00:0c:29:34:eb:e2).

图10 B主计算机和主计算机C之间的网络通信被中断。

(6)主机B和主机C通信超时后,主机C会再次请求ARP,请求192.168.198.131的MAC地址。当主机C收到这个ARP时,会将ARP缓存表中192.168.198.130对应的MAC地址更新为主机B的MAC地址,然后主机B会恢复与主机C的通信。

图11 B主机恢复与c的通信。

3.实验结论

主动制造IP地址冲突的Linux主机会多次发送免费ARP,冲突的Linux主机会返回一个免费ARP。在通信过程中,存在通过ARP请求从对方手中抢夺IP的现象。

然后,用同样的方法模拟了三组实验:SUSE系统IP地址冲突、Windows系统IP地址冲突和Windows系统主动制造IP地址冲突,实验结论如下。

表1 IP地址冲突时不同系统的ARP交互

ip地址冲突响应机制总结经过以上测试和其他技术上的了解,我们总结了主机(所有配置了ip地址并生活在网络中的产品)对IP地址冲突的响应机制。下表列出了一些涉及的产品。

表2 IP地址冲突中不同产品的日志记录和ARP交互

注:表中“是”和“否”只对测试版本和产品型号有效,不保证对本产品不同系列或版本有效。

IP冲突检测方案1。方案1:主机日志和网络系统日志监控

对于可以记录ip地址冲突日志的主机,可以对主机产生的相应日志进行监控和分析,并产生报警;对于可以发出ip地址冲突的syslog的网络设备,可以对syslog进行分析、监控和告警。

图12 IP地址冲突时SuSE系统的日志示例

2.方案2:消息MAC检测

通过流量采集设备采集网络中的所有流量,分析ip和对应的MAC地址,发送到大数据分析平台。在过滤网络设备的MAC地址后,如果一个ip地址对应多个不同的MAC地址,则确定可能存在ip地址冲突。

图13 TCP/IP网络模型的帧封装图

在TCP/IP网络模型中,不同的层封装了不同的信息。数据链路层主要封装源MAC和目的MAC地址,网络层主要封装源IP和目的IP。因此,通过对网络中的报文进行解包,可以得到网络中所有的IP-MAC映射关系,通过计算可以分析是否存在IP地址冲突(即不同的MAC地址映射到同一个IP地址)。但由于企业网络环境复杂,消息数据量大,这种方式的实现成本较高。

3.方案3: ARP报文检测

通过网络流量采集,将所有ARP流量实时推送到大数据分析平台。如果发现有多个不同的MAC地址声明同一个IP对应同一时间段,则判定为IP地址冲突。具体实现方法:网络采集设备精准过滤ARP流量并推送出去。推送的消息格式为:发送方MAC(主机),所有目标MAC为F(广播),公告IP,时间戳,交换机名称。大数据平台收到这些数据后,会在同一秒(或更短)内判断是否有多个不同的MAC对应同一个广告IP。由于数据采集推送带有交换机名称或id的标识,可以快速定位冲突IP所在的网络位置,便于相关处置操作、隔离故障源、恢复业务。

4.三种方案的优缺点比较

表3三种不同方案的优缺点比较

以上三种方案各有利弊。我们建议“方案一:主机和Syslog监控”和“方案三:ARP报文检测”的组合方案,希望实现IP地址冲突和故障定位的快速发现。