妙用“IP地址冲突”揪出害群之马

简介:
作者:田逸( [email]sery@163.com[/email]   版权所有,未经许可不得转载
 
对网络管理员或用户来说,发生“IP地址冲突”是不受欢迎的事情,因为在一个网络中,每个主机(严格来说是网络接口)都应该有唯一的一个IP地址,如果出现2个或两个以上主机使用相同的IP地址,这些使用相同IP地址的主机屏幕会弹出对话框报告IP地址冲突(如下图):
  这将导致这些使用相同IP的机器不能正常访问网络。但是,前几天笔者却用这个有如鸡肋的功能帮了一个大忙。是怎么一回事呢?听我慢慢道来。
 
本月12号那天,我被派到月坛大厦的客服部门处理网路故障。经初步诊断,发现网络时断时续,重启网关的话,能够正常好一会,过一段时间后就不灵了。这是一个十分简单的网络:一条外网网线进来,接入一台运行FreeBSD的网关(做NAT用),网关机的另外一个网络接口接交换机,客户端全部接2个在交换机上,同时,网关机提供DHCP服务,所有的客户机使用DHCP自动获取IP。首先,我得确定故障发生在那里;重启网关,发现客户机能正常上网,但网关马上提示DHCP请求超时的报警,除此而外看不出什么端倪,去客户端查IP,发现获取的IP地址正常,于是又怀疑是不是交换机有问题,等一会,发现故障又出现了,重启一下交换机,网络又正常了问题到底在哪里呢?一下犯晕了。
 
整理了一下思路,然后找了一台客户机(客户机全是windows),先ping一下网关,发现居然ping不通,ping网内的另外一台机器则正常,重启网关再用客户机ping 网关则正常,毫无疑问,网络中了ARP欺骗病毒了。进系统目录,发现c:下有几个异常的文件,该名某个文件,居然不让操作,运行命令 arp –a 发现多行arp请求,看来是病毒引起的网络堵塞故障。不能把所有的机器都与网络段掉,当务之急是先找出当前正在作崇的主机然后隔离处理。
 
怎么辨别是网络中那台主机中毒厉害呢?网上已经有很多不错的办法。有人建议用抓包工具,然后分析抓到的包信息来确认中毒的主机,然而我手里没有任何抓包工具,看来只好自己想招了。经过摸索,总结了下面一些行之有效的办法,供大家参考!
 
在客户机运行路由跟踪命令如 tracert –d [url]www.163.com[/url],马上就发现第一条不是网关机的内网ip,而是本网段内的另外一台机器的IP,再下一跳才是网关的内网IP;正常情况是路由跟踪执行后的输出第一条应该是默认网关地址,由此判定第一跳的那个非网关IP 地址的主机就是罪魁祸首。
 
问题又出来了,由于网内的主机IP地址是通过DHCP自动获取来的,怎么找出这个主机又是一个难题,几十个机器,挨个用 ipconfig/all查非累死不可,怎么办?得走捷径才行。突然之间冒出一个念头:设置一个与查出来的中毒主机相同的IP地址,然后…..,接下来,找一台客户端机器,查一下其自动获取的IP地址,没有那么幸运-这台机器不是要揪出来的那个IP,然后把这个主机的自动获取IP地址取消,手动设置机器的IP与有病毒的那个IP相同,设置生效后就听见一个妹妹嚷道:“我的IP地址怎么跟别人冲突了呢?”,殊不知,我要找的就是你呢!把妹妹的主机隔离网络,其他的机器上网立马就顺畅了。
 
处理arp病毒的操作我想大家都应该有经验了,在这里就不再多罗嗦。
 
简单总结一下,其主要步骤有两步:1、运行 tracert –d [url]www.163.com[/url] 找出作崇的主机IP地址。 2、设置与作崇主机相同的IP,然后造成IP地址冲突,使中毒主机报警然后找到这个主机。




















本文转自sery51CTO博客,原文链接: http://blog.51cto.com/sery/7202,如需转载请自行联系原作者


相关文章
|
5月前
|
存储 编译器
【c++11】万能引用和完美转发
【c++11】万能引用和完美转发
|
5月前
|
C++
C++中的万能引用和完美转发
C++中的万能引用和完美转发是什么呢?有什么用?
33 1
|
6月前
|
存储 C++
【C++】万能引用、完美转发
【C++】万能引用、完美转发
23 0
|
10月前
|
消息中间件 JavaScript 小程序
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
|
10月前
|
存储 开发工具 git
使用“要整合的更改”解决冲突是什么意思?底层原理是什么?
使用“要整合的更改”解决冲突是什么意思?底层原理是什么?
271 0
|
XML Java 数据库连接
变量命名冲突的解决思路(spring框架中使用${}动态引入用户名,想连接数据,结果访问被拒绝)
变量命名冲突的解决思路(spring框架中使用${}动态引入用户名,想连接数据,结果访问被拒绝)
129 0
变量命名冲突的解决思路(spring框架中使用${}动态引入用户名,想连接数据,结果访问被拒绝)
|
Java 数据库连接 Spring
阿粉写了八千多字,只为讲透参数合法性验证)(三)
最近很多读者给阿粉留言,说怎么好久没看到我的文章了,这里说一下。 由于公众号不再按时间线排序,所以你会发现有时候能看到几天前的文章,这不是出BUG,是公众号的一次改变。 至于排序的具体标准是啥,阿粉也不太清楚,大概和你打开某个公众号的频率有关。 所以如果你想第一时间收到阿粉的文章,可以点击Java极客技术的的头像,再点右上角三个点,进去设置一下【星标】。
阿粉写了八千多字,只为讲透参数合法性验证)(三)
|
前端开发 Java Spring
阿粉写了八千多字,只为讲透参数合法性验证)(一)
最近很多读者给阿粉留言,说怎么好久没看到我的文章了,这里说一下。 由于公众号不再按时间线排序,所以你会发现有时候能看到几天前的文章,这不是出BUG,是公众号的一次改变。 至于排序的具体标准是啥,阿粉也不太清楚,大概和你打开某个公众号的频率有关。 所以如果你想第一时间收到阿粉的文章,可以点击Java极客技术的的头像,再点右上角三个点,进去设置一下【星标】。
阿粉写了八千多字,只为讲透参数合法性验证)(一)
|
Java Spring
阿粉写了八千多字,只为讲透参数合法性验证)(四)
最近很多读者给阿粉留言,说怎么好久没看到我的文章了,这里说一下。 由于公众号不再按时间线排序,所以你会发现有时候能看到几天前的文章,这不是出BUG,是公众号的一次改变。 至于排序的具体标准是啥,阿粉也不太清楚,大概和你打开某个公众号的频率有关。 所以如果你想第一时间收到阿粉的文章,可以点击Java极客技术的的头像,再点右上角三个点,进去设置一下【星标】。
阿粉写了八千多字,只为讲透参数合法性验证)(四)