最近今天公司老发生ip地址冲突的问题,因为公司都是手工指定ip地址,并且在路由上做了ip-mac的绑定(或许说映射更好)。xx部门直接上门找我,说ip地址出现冲突,内部server与通信工具rtx登录不上,不过可以上网。我直接去他主机观察,在系统日志找到了冲突的ip对应的mac地址:00.0c.29.fc.fc.15.而他主机网卡的mac是48.5b.39.35.33.42.冲突的ip 地址为:192.168.0.148.因为是在别人主机上就没有截图了,如果大家要看系统日志:

去"我的电脑"右键“管理”,找到“事件查看器”,点击“系统”了。

 

从ip地址冲突找根源_第1张图片

 

首先得先找他先能工作才行,我先去rtx server与他们的server上面将他的ip-mac做了个映射,他不是动态学习么,我来静态指定,不需要他发arp请求mac地址就可以了,命令为:

“arp -s 192.168.0.148 48.5b.39.35.33.42”

ok,可以工作了,但我的事情还没有完,我得找出是那台主机窜改的ip 地址,我先查mac地址为“00.0c.29.fc.fc.15”的,一看原来是一台虚拟机的,这个很麻烦,有可能是一台虚拟机,也有可能是一个伪造的mac地址,但从其他主机没有反映情况来看,不是arp欺骗的问题,打开Wireshark,直接在filter里面输入:“ethernet address eq 00.0c.29.fc.fc.15”

 

 

果然那台主机还在应答arp的request。而从我这里nbtstat -a 192.168.0.148的结果来看果然还是00.0c.29.fc.fc.15.在抓的packet看来,有一点让我很怀疑,它竟然充当起dhcp server起来,还给某台主机分配ip地址(这台主机是真是存在的,当然嫌疑很大啊)

 

从ip地址冲突找根源_第2张图片

当然我没有直接能找到这台虚拟机,因为公司的switch都是傻瓜型,我不可能通过mac-address-table而找到这个source接口。如果设备支持查看mac地址表是很容易查到这台窜改ip的机器。我在这里虚拟下:

1,switch的三大功能:frame的接受与转发,防止loop,地址学习。这里可以用到frame的接受与转发和地址学习。当switch接收到这台主机发送packet,会将source mac address与接受到的接口放进mac-address-table里面的(当然如果是静态指定肯定就不会学习),然后查看destination mac address,如果mac address table没有该mac,就执行flood动作,我们很轻易就可以查看到有问题的这个mac是从那个接口接收

2,既然知道从个接口接收的,那就直接shutdown接口

3,让那个谁来主动找你。

也许有人要问,如果mac地址是伪造不存在的或者经常更换怎么办,其实也很简单,你只要看从那个接口学习来的mac地址是否发生变化就可以,比如说,你一台主机就一个mac 地址,他那是多个mac对应一个接口,那不是接口不是trunk mode,就是私接了设备,如果没有私接设备,结果你也应该知道吧