建立本地的DNS服务器&如何测试DNS服务器效率

作者 redser, 2013-02-28, 15:34:26

« 上一篇主题 - 下一篇主题 »

redser

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

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

1.建立DNS服务器;
首先去:
http://ntcanuck.com/DL-kN/TreeWalk.zip
下载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
*/

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

// 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; };

options {
directory "D:\WINNT\system32\dns\etc";
cache-file "named.cache";
version "TWDNS";
hostname none;
server-id none;
dialup no;
interface-interval 0;
listen-on port 53 { 127.0.0.1; }; //需要绑定的监听端口和网络界面地址,如果要在局域网使用,可以添加 192.168.0.1 等更多
listen-on-v6 { none; };
// query-source address * port 5353;
// query-source-v6 address * port 5354;
recursion yes;
allow-query { "private"; }; //允许进行查询地网段,就是你上面设置的信任地址
allow-recursion { "private"; };
blackhole { "bogons"; };
forward first; //设置转发。如果你不使用root-hints查询,将这行的注释取消,然后在下一行添入你自定义的DNS服务器地址。这样的话TreeWalk就是纯粹的一个DNS缓冲器。(如果这样做的话,你将不能绕过你的ISP对某些地址所作的"劫持")
forwarders { 202.96.134.133; 202.96.128.166; }; //你定义的DNS服务器。
auth-nxdomain no;
minimal-responses yes;
transfer-format many-answers;
// edns-udp-size 512;
max-transfer-time-in 60;
request-ixfr yes;
provide-ixfr yes;
recursive-clients 2000;
tcp-clients 500;
max-cache-size 4m; //缓存大小。
max-ncache-ttl 30;
lame-ttl 100;
zone-statistics no;
cleaning-interval 240;
};

// the bogon list
include "bogons.conf";

include "logs.conf";
include "rndc.key";
include "root.conf";
include "local.conf";
include "extra.conf";

2.测试DNS服务器的效率

我们使用下面的工具:
代码:
http://www.grc.com/miscfiles/dnsru.exe
DNS Benchmarking & Research utility 会在一段时间内发出大量的DNS请求来测试DNS服务器的工作状况。工具已经非常古老,而且会提示测试时间已到,请使用"时光倒流"或者"永不过期"在Google搜索相应的工具来解除这个限制。例如:
代码:
http://www.softsea.net/cat/30111.htm
所列出来的工具,都是免费的。
运行DNSRU后,点击它的Benchmark标签进行测试。程序会自动找到本机的首选,辅助DNS服务器进行测试。结果如下:

"Cached Name" 表示从被查询的DNS服务器本地缓存查询的结果。
"Uncached Name"表示从被查询的DNS服务器本地缓存不能获得查询结果,次服务器向另外的DNS服务器查询的结果。
"DotCom Lookup" 查询DotCom这种特殊域名的结果。

Min,Max,Avg分别表示各个项目的最小,最大和平均查询时间;Std.Dev是随机抽取地址的查询时间;Reliab%是可靠程度,这个可以看出被测试的DNS服务器查询总量/成功的百分率。

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

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

代码:
http://ntcanuck.com/

原文:http://bbs.et8.net/bbs/showthread.php?t=656963