既然知道了原因,想要解决也变得很简单咯,在本地架设一个DNS Server就好咯,然后设置解析DNS地址为本地。这样可能第一次连接网站时还是缓慢的,但是以后由于可以直接命中本地的缓存,所以应该可以大大加快域名解析的速度。Ok说动手就动手,这里我们使用了一款轻量级的DNS Server——pdnsd,当然,如果你要是有兴趣的话,完全可以使用Bind这样的软件来架设DNS服务器,由于这里并发数不大,我就用轻量级的Server软件好了~~
1.安装
pdnsd已经加入源里了,安装非常简便:
sudo apt-get install pdnsd
安装过程中,它会问你选择何种配置,此处选择manual。
2.配置
sudo gedit /etc/pdnsd.conf
修改
server {
label=”resolvconf”;
}
为
server {
label=”resolvconf”;
ip=61.233.154.33;
ip=211.98.4.1;
timeout=30;
interval=30;
uptest=ping;
ping_timeout=50;
purge_cache=off;
}
其中:
ip=61.233.154.33;
ip=211.98.4.1;
这两行也可以写成一行ip=61.233.154.33,211.98.4.1; 代表当地的DNS服务器地址,可以有多个,根据自己情况填写。这里是铁通的DNS。
后面的参数采用默认就可以了。
sudo gedit /etc/default/pdnsd
修改START_DAEMON的值为yes。
3.设置本机的DNS
sudo gedit /etc/resolv.conf
在所有内容之前插入一行:
nameserver 127.0.0.1
特别的,如果你是ADSL拨号上网(通过pppoeconf配置),那么还需要修改一下文件:
sudo gedit /etc/ppp/peers/dsl-provider
在usepeerdns前加#,注释掉。防止ppp强制使用远程DNS,并覆盖resolv.conf
如果你启用了DHCP服务,那么要
sudo gedit /etc/dhcp3/dhclient.conf
去掉
#prepend domain-name-servers 127.0.0.1;
前面的“#“。
4.启动pdnsd
sudo /etc/init.d/pdnsd start
5.简单测试
dig kaisir.com | grep time
第一次结果显示:;; Query time: 11 msec
第二次结果显示:;; Query time: 0 msec
第三次结果显示:;; Query time: 0 msec
第四次结果显示:;; Query time: 0 msec
瞧,到此时,第二次及以后的解析都是直接命中本地缓存,这样大大的提高的域名解析的速度。
(本文配置过程参考Look神经病Luke的日志,不过其中有处错误,我在日志中已经进行更正。)