搬到上海工作以后,发觉这边的dns似乎工作不是很稳定,有时候一个域名需要解析几次才可以解析出来,直接后果就是浏览网页的时候经常需要打开几次才成功,搞得很不爽,所以在我的本本上搞一个dnscache来缓存一下,果然爽了很多,方法如下:
安装在freebsd上实在是太简单的事,不值得多说
portinstall dns/djbdns
或者
cd /usr/ports/dns/djbdns ; make install clean
搞定以后用rehash更新一下路径缓存
建立dnscache目录,推荐放在/var下
mkdir /var/service
dnscache-conf nobody nobody /var/service/dnscache 127.0.0.1 #nobody是系统账号和组
在/etc/rc.conf里加入
svscan_enable="YES"
最后就可以运行/usr/local/etc/rc.d/svscan.sh启动服务了
服务启动以后查看一下127.0.0.1是否有53端口在监听,如果有,说明成功了
接下来就是在/etc/resolv.conf里加入
nameserver 127.0.0.1
推荐将127.0.0.1放在其他的nameserver前,这样就优先使用缓存结果
我的网络设置使用的是DHCP,每次启动以后都会将我的resolv.conf改写掉,搞得我经常要去添加127.0.0.1,所以修改了一下/etc/dhclient.conf,加入
request subnet-mask,dhcp-lease-time,routers,dhcp-option-overload,dhcp-message-type,dhcp-server-identifier,broadcast-address;
这样dhclient就不会向DHCP服务器请求domain-name-servers,就不会覆盖我定义好的/etc/resolv.conf
现在使用感觉良好,一个网站只要打开一次以后,再不会出现解析不出来的问题,而且省略了解析过程以后,打开速度也提高不少。
另外,djbdns的主页(http://cr.yp.to/djbdns.html)可能由于久不维护,我根据他的文档根本无法成功,所以大家用它作参考的时候最好用google多找点其他的文档对照使用。