Total Pageviews

Friday 16 March 2012

DNS转发器:UDP to TCP解决DNS污染

DNS 转发器

可以将 UDP 形式的 DNS 数据包,以 TCP 形式转发至指定的 DNS 服务器(默认为 Google DNS 8.8.4.4)。
因为听说 TCP 的 DNS 数据包不会被污染或者被伪造,于是做了这么个玩意,省得改系统文件了。


2.1版本下载(2012-02-24):
http://115.com/file/e7fjqoil#
此版本增加规则设置,缓存等功能。

2.0版本下载(2012-01-06):
http://upload-drive.com/file/1001662/dnsforwarder-zip.html
另一个地址: http://115.com/file/cl3pkieb#
此版本增加了稳定性。

1.5版本下载:
http://www.upload-drive.com/file/1000870/dnsforwarder-zip.html

有一个办法就是将首选 DNS 设为 127.0.0.1,将候选 DNS 设为其他,这样当 DNS 转发器没有启动时也不会影响正常使用。

这是直接通过 8.8.8.8 进行的查询(存在 DNS 伪造):
 C:\Users\Admin>nslookup twitter.com 8.8.8.8
服务器:  google-public-dns-a.google.com
Address:  8.8.8.8

非权威应答:
名称:    twitter.com
Addresses:  37.61.54.158
          159.106.121.75
这是通过转发器进行的查询:
C:\Users\Admin>nslookup twitter.com 127.0.0.1
服务器:  localhost
Address:  127.0.0.1

非权威应答:
名称:    twitter.com
Addresses:  199.59.148.82
          199.59.148.10
          199.59.149.198
这是使用 http://www.kloth.net/services/nslookup.php 进行的查询:
DNS server handling your query: 8.8.8.8
 DNS server's address: 8.8.8.8#53
 
 Non-authoritative answer:
 Name: twitter.com
 Address: 199.59.148.10
 Name: twitter.com
 Address: 199.59.149.230
 Name: twitter.com
 Address: 199.59.148.82

感谢大家的支持,由于身边没有能翻墙的电脑,所以这里的更新较慢。
 
出现(Recv error, retry. Error code: 10060),
目前比较好的解决办法是换一个比较近的DNS,比如香港或台湾的DNS:
执行 dnsforwarder.exe xx.xx.xx.xx
将xx.xx.xx.xx换成具体的DNS即可.
 
from http://micasmica.blogspot.com/2011/08/dns.html 
 
dnsforwarder可以将 UDP 形式的 DNS 数据包,
以 TCP 形式转发至指定的 DNS 服务器(默认为 Google DNS 8.8.4.4)。


运行平台:Windows


程序主页,作者博客:http://micasmica.blogspot.com/2011/08/dns.html 
当前最新版2.2.1下载地址: 
https://docs.google.com/file/d/0B_yf3JQ0zx6jWXpVakNvQnJUdnM/


实现原理:截获UDP53端口的DNS查询,转换成TCP协议的53端口数据发送出去,默认查询请求发送到8.8.4.4,
可以通过 dnsforwarder.config 修改上级DNS服务器。使用方法:直接运行 dnsforwarder.exe 
不要退出,在没有修改本地DNS服务器的情况下,截获UDP53查询请求,转成TCP53的查询请求至远端DNS服务器;
如果修改了系统DNS服务器为
127.0.0.1,将会使用本机的UDP53进行查询,使用参数 -t 可以在本地开启TCP53端口解析.