Pages

Wednesday, 29 May 2013

教你对抗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文件中去,然后重启浏览 器。