2010年10月17日星期日

教你对抗DNS污染

DNS污染是一种很无耻的行为,但是让人很无奈,连网站的正确IP地址都解析不出来,怎么访问呢?其实DNS污染也有它的弱点。目前绝大部分DNS查询都是基于UDP协议的,对于这种无连接的协议,想去阻断连接是不可能的,因此GFW会伪造一个DNS查询结果,抢在正确结果到达之前发送给客户端。对于UDP协议,没有区分数据包是否正确到达,如果两个数据包序号重复,会丢弃后来的那一个。我们可以手动把被丢弃的正确结果找回来。

我用Windows 7平台作介绍,需要网络抓包软件Wireshark,大家可以自己去下载。下面以encrypted.google.com这个域名为例,介绍如何对抗DNS污染。

首先打开wireshark,并抓包,此时最好关闭不必要的程序,尤其是迅雷、QQ一类的需要联网的软件以减小干扰。然后在“命令与提示符”下使用DNS查询命令查询境外DNS服务器,“nslookup encrypted.google.com 8.8.8.8”,8.8.8.8这个是Google提供的服务器,保证查询结果的公正。当然查询不到正确的结果了,我们此时停止wireshark的抓包,然后在“filter toolbar”里面输入“dns”然后确认,过滤抓包结果,一般正确的DNS查询看起来都很“漂亮”,信息比较多,而GFW伪造的查询结果很“丑陋”,只具备最简单的查询DNS信息,一眼就能看出来。此时就会显示dns查询的结果,我们可以看到正确的查询结果,把它加入hosts文件中去,然后重启浏览器。






4 条评论:

  1. 我的错误和正确的和你的不同,不过大致知道是怎么回事了,最后要怎么添加进hosts呢?我听说如果封了IP修改hosts也不行的

    回复删除
  2. encrypted.google.com我改成了www3.l.google.com的IP地址64.233.181.102可是还是不行.郁闷啊.

    回复删除
  3. 1楼的:

    封锁了IP地址你再怎么改hosts也没用的,除非这个网站还有没被封锁的IP地址。GFW封IP一般是和TCP连接重置同时使用,只有少数网站有这个待遇,如twitter。

    回复删除
  4. 回复2楼:

    建议你看看hosts文件是怎么修改的,如果实在不行,清空hosts后试试我在blogger以前发的“firefox浏览器google优化版”,会自动帮你添加hosts的。

    你说的那个IP地址可以使用,也没有被封443端口。
    建议使用IE8、firefox、chrome,IE6有时会提示证书错误。

    另外,360浏览器、360安全卫士一类的安全软件会检测hosts文件,如果hosts被修改,可能会被当做恶意程序所作的修改而恢复hosts文件。

    回复删除