分享

ip冲突问题复现

 昵称21199773 2019-04-13

ip冲突导致无法上网问题复现

目录

1.      问题及排除过程

2.      复现过程:

2.1.       pc插拔网线后情况:

2.2.       环境中存在pcip冲突的情况:

2.3.       虚拟机的模拟

2.4.       交换机的arp模式修改为learn all后的模拟

3.      知识点:

1.    问题及排除过程

       某天下午,接同事反馈,自己的pc192.168.205.66无法上网,要求解决。

   在路由器上进行抓包发现,该ip不停的收到syn+ack,而没有响应消息acksyn消息发出?

核心交换机上查看该ip对应的mac地址如下:

感觉公司的pc里没有以000C打头的mac地址,这一般都安装vmware虚拟机的地址?下去到她工位上查看。

发现她的pcmac4CCC6AC85003,采用的dhcp获取ip地址,查看arp缓存中的网关mac正常存在,奇怪为什么不能上网,执行arp –d后,ping网关,ping www.sina.com发现上网正常。

判断存在ip冲突,导致交换机把回包发给了错误的mac地址上,正常测pc收不到syn+ack,导致不停的发出syn消息,路由器删就能看到不停的收到外网的syn+ack消息(看不到synack可能是路由器的跟踪没有做好,没有跟踪出来对应的包)。arp –d后,pc重新去获取网关的mac地址,交换机的arp缓存会被更新,回包正常了,上网就正常了。

查看00oc2998002e在哪个交换机的端口上?结果如下:

发现是另外一位同事的ip地址,去他的pc上验证,发现这个另个mac都是他的设备上的,一个是pc,一个是虚拟机。

把女同事的ip改成192.168.206.33的固定ip后,反馈上网没有问题。

2.    复现过程:

问题解决后,考虑到pc有根据arp广播消息来避免ip冲突的机制,决定复现一下问题,一种情况是pcpcip冲突的情况。一种是pc和虚拟机发生ip冲突的情况。

2.1. pc插拔网线后情况:

第一种情况下,先看网线插拔后,pcarp发出情况?

综上所述:当发生dhcp获取ip或者插拔网线后,windows操作系统会用确定的ip进行ip冲突的检测,发出三次广播的arp包,询问环境中是否存在相同的ip地址?没有收到reply,再次发出免费的arp包(源ip和目的ip相同)的arp请求包,声明自己使用这个ip地址。没有冲突后,会发出确定网关mac地址的arp广播包,获取到网关mac后,就周期性进入网关是否在线的arp单播探查消息,来确定网关在线。

三次检测ip冲突的包的特征:

特征是源ip为空,表示自身ip还没有确定使用。

免费arp包的特征:

2.2.环境中存在pcip冲突的情况:

已知环境中一台pcip192.168.205.240,把另一台pcip192.168.205.201改成205.240,抓包查看arp的情况和pc的动作?

可以看到,询问是否存在冲突,已有ip主机回复自己mac地址,得到存在冲突后,网卡ip被置为169.254.xx.xx的无效ip地址,要求网关mac,网关不响应,此时,系统托盘的网卡标志位受限。

   此时,pc会用169.254ip请求网关的mac地址,由于不是正常的mac地址,网关交换机不响应,pc此时无法获取网关mac,导致无法组包发出,因此无法上网。

2.3.虚拟机的模拟

首先模拟虚拟机启动后,arp的发送情况,已知pc192.168.207.246,虚拟机vm安装的centos7.0eth0虚拟ip192.168.207.245

发现虚拟机没有windows系统的三次探查是否有ip冲突,并将ip置为169.154网段的操作,仅仅发一个免费arp消息,已用的pc收到此消息,会报ip冲突,但不会改变ip为不可用ip,交换机收到此免费的arp消息,会改写arp缓存表。如下图:

检查发现此时pc弹出ip冲突的提示框,网卡标志变成internet标志,看抓包发现pc不停的发出单播arp请求包,见下图:

    但交换机的arp表项始终不变?

    查询arp的模式,如下图:

     查询资料得知:learn reply only是严格的学习arp表项设置,arp表项的更新只在交换机自身发出arprequest消息得到响应后,而不响应更改收到arp请求消息,查看在交换机的镜像包里,没有交换机发出的arp查询消息,但虚拟机发出的免费arp消息,交换机默认是学习enable态的,就是说,交换机收到虚拟机发出的免费arp包后,会把arp表项更改为虚拟机的mac地址,而不理睬pc发出单播或者广播arp消息(当arp表里存在于对应的ip地址时)。

   此时pc的发出的业务消息,交换机的回包均发给了虚拟机,导致pc收不到回包,所以无法上网。

   模拟执行arp -d,仍然不能改变arp缓存表里的数据。那天同事的pc执行arp  -d后能够上网,可能是arp缓冲时间到了,交换机给pc发来arp请求消息,pc应答了,或者此时虚拟机被关掉了才出现这样的现象。当时没有找到问题机子,所以没有确认。

免费arp包的特征见下图:

2.4. 交换机的arp模式修改为learn all后的模拟

把交换机的arp模式修改为learn-all后,发现pc的网口标志没有受限,镜像交换机对应端口的包,过滤arp消息,发现随着pc和虚拟机发出的arp请求和免费arp,交换机的arp随着改变。

镜像抓包中看到pc发出的单播探查arp请求

交换机里查询arp表项,发现是pcmac地址

虚拟机发出arp消息

交换机里更新arp表项

生存时间被改写

3.    知识点:

A.    windows系统插拔网线,dhcp获取到ip后或者网卡设置了静态ip,都会发三次arp广播消息,用于探查环境中是否存在ip冲突?不存在的,发出免费arp消息,存在,系统会把ip置为169.254网段的不可用ip,避免ip冲突。

B.    虚拟机之类的linux操作系统,网卡激活后,只发免费的arp通知自己使用了这个ip地址,而没有防止ip冲突的机制。

C.    Pc网卡激活后,先广播arp请求来获取网关的mac地址,然后启动单播arp请求消息进行主动探查相邻网关是否在线,而不是等待arp的老化时间到后,再发arp广播消息。当两次探查失败,就会清除网关的arp表项,重新获取。

D.     交换机的arp mode设置为arp learn reply,就是严格的学习arp表项,只创建和更新自己发出的arp请求得到的应答消息里的mac地址和ip对照关系。而对pc发出的arp请求不予理睬,但收到免费的arp消息会更新arp表项,导致arp表发生变化。

Learn all模式是学习所有的arp消息,即受到arp广播,单播,免费的arp消息均生成或更新arp表项。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多