最近我写西西河浏览器最头疼的事情就是网络不稳定,一天能有两三个小时能连接上网就可以了,就这个问题和房东猛烈协商过多次,往往是房东跑来重启一下猫,好个一小时,又挂了。。。

  按房东的说法,是人太多了……我真没觉得人会多到这种地步?我连链接网络都连接不上了。总是报告IP冲突,不得已,只好自己重新设置IP,还说冲突——我真怀疑,房东是不是兼职开网吧的?可是这样的网吧会有人去吗?

  今天下午,又折腾了一番,发现:第一、不只我不能上网,其他的也有这个问题;第二、总共上网的人并不多,只有三家,但是至少有两家是不能正常上网的;第三、有一个房间的网线断掉以后,我们两家就都可以上网啦。。。重点出来了。

  房东很生气:我不让那个家伙住了!冲上去理论一番,但是下来他又做实验发现,把那个网线插上以后,似乎还可以上网,所以?不是人家的原因?总之房东是被忽悠了,跑掉了,还怀疑我电脑有问题。但是我没被忽悠,很容易嘛,等房东再次做实验的时候,停止搞鬼就可以了呗(这事儿,我干多了,所谓贼骨头遇到强盗头)。

  但是,这回的问题是我对网络攻击还真的了解不多,想上谷歌百度一把吧?那网络又不正常。只好趁着这么一小会儿正常的时候,赶紧搜搜看(在搜索引擎上找出来自己想要的东西,也是个技术活的)。

  是这样,我发现,如果把网络连接“修复”一下,一般就能上网个几秒钟,对,就是几秒钟。所以现在百度上找“windows 修复 命令行”。以前我在大学时候,网络老出问题,修复一下就好了,但是几分钟以后,还要修复一下才可以,于是有同学找出来了修复对应的命令行交给我,我写了个程序,每半分钟自动修复一下,这样就能正常上网了。现在,我想找出来再重拾牙慧,先凑合着能上网再说呗。

  搜还真搜出来了一些,于是一篇篇看下去,命令也凑起了,组合成一个 bat批处理文件运行一下,似乎效果不佳,头疼啊……

  在一篇介绍恢复arp缓存的文章里提到了“这是应对网络剪刀手、网络执法官的有效手段。。。”,看到这个,我赶紧再去搜搜这两个东西,其实我想的是,哼哼,先用这个东西,把其他人踢掉半小时,我的资料查好了,再让你们上来~谁知道,一搜不得了,原来网上到处都是讨论这个问题的:

http://tieba.baidu.com/f?kz=11602371

http://wenku.baidu.com/view/e5c1dfbbfd0a79563c1e7207.html

http://zhidao.baidu.com/question/9714637.html

  而且还有一个叫“超级网管”的东西,也是上网害人的必备利器啊!很顺理成章的,原因找到了,现在我受到的,是网络剪刀手的攻击,网络剪刀手采用arp欺骗的手段让我无法上网,这样,攻击者就可以独占全部带宽(6M啊!)了。应对也简单,只需要清除arp缓存就可以了,但是我们这里的这个攻击者,真的很不要脸,几乎在不停的攻击,清除以后马上又被换成欺骗的arp数据了,他还一直占用着网络,从来不肯释放给我们,只有他睡觉的那会儿可以让我们用。

  唉~我刚才冒出的邪恶念头,也不过是自己查查资料,查完大家一起用,这家伙,一定是玩网游的。

  要应对,就需要不停的刷新arp,写一个程序来执行当然是可以的。但是有更简单的办法,用一个批处理文件就可以了:

:BEGIN

arp -d

goto BEGIN

  就是这么三行,就会不停的清除arp,但是我观察的,即使如此,还会有时候被欺骗,概率大概在5%左右。我观察的方式是不停的ping我的DNS服务器,如果超时,就是被欺骗了:

ping 202.101.172.35 -t

  查看DNS服务器的地址可以用ipconfig命令:ipconfig /all

  后来,我又查了一些资料,对于arp欺骗的原理更了解以后,其实有更简单的办法的。只要把本机的arp缓存设置成静态的,这样就不会去更新了,自然黑客也无从欺骗:

arp -s 192.168.1.1 00-27-19-2b-81-50 192.168.1.107

  这里,192.168.1.1是网关的IP地址,可以通过ipconfig /all看到,192.168.1.107是我自己本机的IP地址,是自己设置,或者动态获得的,也是通过ipconfig /all得到,这个应该填上,不然还可能被欺骗,网上很多资料都没有这一项。中间那个是网关的MAC地址,这个的获取可以通过命令arp -a,但是有点麻烦在于,arp欺骗的目的,就是让你本机拿到一个错误的MAC地址,所以,查出来的,一般都是不正确的。那么怎么得到正确的MAC,又怎么知道这个是正确的MAC呢?

  先在明确知道被欺骗的情况下,查询网关的MAC,这样可以得到一个错误的MAC,记下来。然后,运行前面那个不间断清除arp的批处理文件,在运行过程中,不停的查询MAC,你可以得到三个结果:错误的(被欺骗了。。。)、显示没有arp(刚刚被清除掉)、正确的(获取到的正确MAC)。那么这三个里面,找正确的,应该很容易了吧?错误的那个,我们刚才已经查到了啊。

  这样执行下命令,就一劳永逸的解决问题了。

  但是,对手是狡猾狡猾的,比如我总是报告IP冲突,就是收到网络执法官的攻击。好在我已经把最新版本的此类软件下载下来,你敢兵来,我有将挡~

  关于ARP更多内容:

http://bbs.txwm.com/thread-507096-1-1.html

http://bbs.deepin.org/thread-1113542-1-1.html

  纠正一个错误:设置了静态arp以后,不能一劳永逸,因为arp是有时间限制的,比如两分钟就强制更新一次,那么在两分钟以后,还是会被欺骗掉的,所以是一劳,两分钟逸。不过这样就不需要不停的刷新清除arp了,也不用和攻击者抢着看谁先获得缓存,可以间隔一段时间降低电脑的CPU负担。所以最终的刷新器可以写成这样:

:BEGIN

arp -d

arp -s 192.168.1.1 00-27-19-2b-81-50 192.168.1.107

-->Sleep 60 seconds for example, shorter than the time limit of router's arp limitation

goto BEGIN

  有谁知道在windows下面怎么让批处理等待若干秒?

[原文在百度空间已经关闭]