你是不是一直受到DNS服务器查询速度太慢的困扰?本文推荐Linux下一款名叫pdnsd的软件,解决这个问题。相比bind和dnsmasq,pdnsd有一个优点:重启后仍然能记得之前缓存的条目。这对家庭用的计算机来说非常重要,因为不像服务器那样7×24小时开机,所以一旦关机重开后还需要重新创建缓存的话,加速效果会非常有限。
一、安装
依然使用我最爱的Archlinux为例。pdnsd在community源里,直接安装即可:
pacman -S pdnsd
二、配置
pdnsd附带了一个配置文件示例,直接拷贝一份后,按自己的情况进行修改:
cp /etc/pdnsd.conf.sample /etc/pdnsd.conf
注意修改配置文件的时候别忘了加行末的分号,那是不可省略的。
其中有几项需要按如下修改以提高DNS查询效率:
neg_rrs_pol=on; par_queries=1; proxy_only=on; purge_cache=off; #可选,把A记录的ttl最小设为1天 #对一些ttl值低的大网站有用(低ttl用于负载均衡) min_ttl=1d;
pdnsd默认的DNS服务器是OpenDNS(208.67.222.222/208.67.220.220),而据说用OpenDNS访问google有时候会出现反应慢的问题,所以建议直接换成google的DNS服务器:8.8.8.8和8.8.4.4。
接着,修改你的/etc/resolve.conf(或resolve.conf.head),将已有的nameserver信息清空,只留下面这一行:
nameserver 127.0.0.1
为防止resolve.conf被其他程序意外修改,可以加上sticky属性:
chattr +i /etc/resolve.conf
三、测试
启动pdnsd服务,然后测试一下可用性:
systemctl start pdnsd nslookup www.google.com 127.0.0.1
如果正常返回,则说明pdns配置成功。现在可以将pdnsd设为开机启动项了:
systemctl enable pdnsd
至此,一个本机DNS服务器搭建完成。
注意本文只解决了DNS查询速度问题,并不能解决DNS污染等问题。DNS污染可以通过专门的软件或将本地DNS配置成以TCP方式从远端DNS服务器取得查询结果,然后以UDP方式响应本机查询请求的方式解决。pdnsd有一个专门的配置项目:
query_method=tcp_only;
本文为悠然居(https://wordpress.youran.me/)的原创文章,转载请注明出处!