Aug 29

通常很多关于网站不能访问的问题都出在DNS解析上面。不正确的DNS服务器设置,指向的DNS服务器负荷过大或者失效,某些ISP在DNS服务器上面做了“劫持”,等等,都会影响我们对目标网站的访问。

本文将介绍怎么在个人计算机(WINDOWS服务器,XNIXS可能有更好地选择)上面建立本地带缓冲的DNS服务器。并且也将介绍怎么去简单的测试一个DNS服务器的执行效率。


1.建立本地DNS服务器:

首先下载TreeWalk这个软件的最新版本。它是一个支持多处理器并且对个人用户免费的DNS服务器软件。我们只需要使用默认安装,安装完毕以后,启动TWDNS这个服务,本地DNS服务器就可以工作了。按照官方介绍,需要手动设置网络界面的首选DNS为1 27.0.0.1(在2000系统中由于是保留地址,需要借助另外的工具来设置),但是其实最新版本在安装完毕以后已经通过更加底层的方法把首选DNS设置成了127.0.0.1,不需要用户的介入。要测试是否如此,请在命令行打入:

nslookup bbs.et8.net

查看返回的信息,就可以知道当前使用的DNS服务器。通常默认的配置就可以满足基本的要求,你已经在使用一个不依赖ISP,并且带有缓存功能的DNS本地服务器。但是如果你想对配置有更加深入的了解,请打开:
%SystemDriver%:\%SystemFolder%\system32\dns\etc\named.conf 这个文件。

下面是这个文件中一些参数的中文说明:


 /* TreeWalk master config*/
......
// the private (LAN) network space //定义你的私有(信任)网络
acl "privlan" { 127.0.0.0/8; 10.0.0.0/8; 169.254.0.0/16; 192.168.0.0/16; 172.16.0.0/20; };

// our own private subnets
acl "private" { 127.0.0.0/24; 192.168.0.0/16; 192.168.0.0/16; };

listen-on port 53 { 127.0.0.1; }; //需要绑定的监听端口和网络界面地址,如果要在局域网使用,可以添加 192.168.0.1 等更多
listen-on-v6 { none; };

allow-query { "private"; }; //允许进行查询地网段,就是你上面设置的信任地址

forward first; //设置转发。如果你不使用root-hints查询,将这行的注释取消,然后在下一行添入你自定义的DNS服务器地址。这样的话TreeWalk就是纯粹的一个DNS缓冲器。(如果这样做的话,你将不能绕过你的ISP对某些地址所作的“劫持”)
forwarders { 202.96.134.133; 202.96.128.166; }; //你定义的DNS服务器。
tcp-clients 500; //查询TCP最大连接数
max-cache-size 4m; //缓存大小。


2.测试DNS服务器的效率

我们使用下面的工具来测试DNS服务器:DNSRU

DNS Benchmarking & Research utility 会在一段时间内发出大量的DNS请求来测试DNS服务器的工作状况。工具已经非常古老,而且会提示测试时间已到,请使用“时光倒流”或者“永不过期”在Google搜索相应的工具来解除这个限制。例如:SoftSea.net 所列出来的工具,都是免费的。

运行DNSRU后,点击它的Benchmark标签进行测试。程序会自动找到本机的首选,辅助DNS服务器进行测试。结果会是如下图:

  • "Cached Name" 表示从被查询的DNS服务器本地缓存查询的结果。
  • "Uncached Name"表示从被查询的DNS服务器本地缓存不能获得查询结果,次服务器向另外的DNS服务器查询的结果。
  • "DotCom Lookup" 查询DotCom这种特殊域名的结果。
  • Min,Max,Avg分别表示各个项目的最小,最大和平均查询时间;Std.Dev是随机抽取地址的查询时间;Reliab%是可靠程度,这个可以看出被测试的DNS服务器查询总量/成功的百分率。

从测试图可以看出本地DNS服务器的稳定性和可靠程度比ISP的要高;而且这还是在凌晨时间的测试结果,如果在上网高峰器,本地DNS服务器稳定性还会下降。

关于最近流行的 OpenDNS ,YsKin已经做过一些心得测试,你也可以用上面的方法从数据上了解一下是否合适。

关于TreeWalk的更多应用请参考它的主页:ntcanuck.com

附送两个同类软件:Posadis DNS serverSANS DNS server