由于某些众所周知的原因,现在IPv6的DNS查询也遭到了污染。以往单纯使用IPv6,即可简单科学上网的年代不复存在,这给广大高校的研究人员带来了不便。

但是魔高一尺,道高一丈,现在有一个好方法,在此分享给大家:P

  1. 原理:
    • 通常情况下,DNS查询使用UDP协议进行。但是也有一些DNS服务器接收TCP协议的请求(例如Google Public DNS)。
    • 目前寡妇王仅仅对于53端口的UDP流量进行污染,而对于TCP流量则是放任不管(Cocoa猜测这和某些数字命名的产品使用53端口隐通道传输用户隐私不无关系)。
    • 所以我们可以在本机搭建一个DNS代理,使用TCP协议向Google Public DNS进行查询,获取到以后再使用UDP传送到本机。
    • 试验表明这样做是可以防止IPv6的DNS污染的。

  2. 使用方法:
    • 如果您的机器安装有Python:
      1. 下载Python源代码(点我下载
      2. 在命令行下运行“python tcpv6dns.py”(记得每次开机都要运行,否则就上不了网了,建议保存为批处理加到启动菜单)
      3. 将本机的DNS服务器地址设置为127.0.0.1
      4. 自由地上网
    • 如果您的机器没有安装Python
      1. 下载Cocoa打包好的exe(点我下载
      2. 每次开机运行
      3. 将本机的DNS服务器地址设置为127.0.0.1
      4. 自由地上网

  3. 致谢:
    • IPv4版TCP查询DNS代码来自这里:https://github.com/henices/Tcp-DNS-proxy
    • Cocoa将其改成了IPv6版,在此向原作者表示感谢!

————————————————————

来源:HCocoa的博客