2011年2月19日星期六

最简单的对抗DNS污染的方法

GFW的DNS污染只对UDP协议的DNS查询有效,对TCP协议的DNS查询无效,我们只需要使用TCP协议来查询DNS就可以了。

在Windows下,使用nslookup命令时加上-vc参数就可以强制使用TCP协议而不是UDP协议进行DNS查询。例如查询encrypted.google.com,输入命令nslookup -vc encrypted.google.com 8.8.8.8进行DNS查询就可以得到正确的查询结果,下一步就是把结果加入hosts文件。nslookup命令的用法我在这里就不多说了,唯一要多说的是不要使用中国的DNS服务器查询就行,推荐Google DNS和OPEN DNS。

至于如何让强制让系统使用TCP协议来查询DNS,我就不知道了,如果哪位大侠知道该怎么做,请指点一下。

更新:已经有高手找到怎么让系统强制使用TCP协议来查询DNS了。
http://www.bingtech.net/wordpress/?p=233

更新:有兴趣的童鞋可以试试这个东东
http://code.google.com/p/pwx-dns-proxy/


8 条评论:

  1. http://www.bingtech.net/wordpress/?p=233

    回复删除
  2. 回复 Peter

    这个东西我看到过了,是把dnsapi.dll中DnsQuery这个函数的参数Options修改成总是DNS_QUERY_USE_TCP_ONLY(0x00000002),方法很好。但是本人能力有限,不精通反汇编……

    回复删除
  3. 你研究XP的修改方法呗,造福一下全人类,嘻。

    回复删除
  4. win7下修改dnsapi.dll成功,可用tcp协议发送dns请求了

    回复删除
  5. 不用改東西一樣可以~ curl -I www.google.com大家可以見到GOOGLE全面的網頁資料+IP+ENGINE點解要搞咁多野?

    回复删除
  6. https://code.google.com/p/pwx-dns-proxy/
    可以防止dns污染的

    回复删除
  7. 回复 江楚

    很好的东西,谢谢提醒

    回复删除