欢迎使用CSDN-markdown编辑器

来源:互联网 发布:神速百度快速排名优化 编辑:程序博客网 时间:2024/06/06 05:46

OpenWRT默认使用dnsmasq提供DHCP/DNS服务,通常情况下够用。但如果我们用路由器爬墙,为了解决DNS污染问题,比如用到了ChinaDNS,对于国外域名的解析,会连到国外的DNS上,延迟是比较高的。默认的配置下,dnsmasq对于DNS记录的缓存时间、还有缓存文件大小都比较受限,一条记录可能没多久就被清除出缓冲区,失效了。这时我们就希望有一个缓存功能更强的DNS软件,可以手动改大TTL、增大缓存文件大小。这时就可以用pdnsd。你可以配置它,让TTL超期的记录也不被自动清除、可以提高TTL的最小值等等。同时也有完整的可用性检查,你可以配置对DNS服务器的可用性检查,如果一组DNS服务器不可用,可以做故障切换,切至你添加的另一组DNS(比如说你用你的VPS做解析,VPS挂掉了,这时自动切到114DNS或者Google DNS等)。

一、安装

可以直接在Luci界面中,切至软件包配置页面,刷新列表后,键入pdnsd点击安装即可。

也可以使用SSH安装:

opkg update

opkg install pdnsd

二、配置

配置/etc/pdnsd.conf,文件配置分为即可区域,主要修改global区域和server区域,其他区域保留默认值即可。具体的配置文件详情请查阅官方文档: pdnsd Documents

这里是全局设置区域,酌情修改

global {

perm_cache = 2048 ; # 缓存文件大小,单位KB

cache_dir = “/var/pdnsd” ; # 缓存文件位置,保留默认

pid_file = /var/run/pdnsd.pid; # pid文件,不用管

run_as = “nobody” ; # runas,保留默认

server_ip = 192.168.1.1 ; # 这里改成路由LAN口IP

status_ctl = on ; # 保留on

paranoid=on; # This option reduces the chance of cache poisoning

but may make pdnsd less efficient, unfortunately.

query_method = udp_only ; # 只使用UDP,保留默认

min_ttl = 6h ; # 最小TTL时间,自己酌情往上加,默认是15分钟

max_ttl = 1w ; # 最长TTL时间,默认一周

timeout = 10 ; # 全局超时时间,默认10秒,酌情修改

neg_domain_pol = on ; # 用到neg domain的话可以试试,不用就不用管

udpbufsize = 1024 ; # 默认

}

这个是server区域,可以定义多组,定义pdnsd的上游dns

server {

label = “chinadns” ; # 为这组server起一个名字

ip = 127.0.0.1 ; # 填写DNS的IP地址,多个地址逗号分隔,可以换行,分号结尾

port = 5353 ; # 填写DNS的端口,我这里上一级是路由器上的ChinaDNS,监听的5353

所以填写了IP:127.0.0.1 端口:5353,如果使用114DNS等公共 # DNS 这里端口号应该是53,或者删除该行也行

proxy_only=on; # Do not query any name servers beside your ISP’s.

This may be necessary if you are behind some

kind of firewall and cannot receive replies

from outside name servers.

timeout = 4 ; # 超时值,酌情修改

uptest = none ; # 是否进行可用性检查,none=不检查,具体方法看官方文档

interface = eth0 ; # 可用性检查所用的interface名

interval = 10m ; # 检查频率

purge_cache = off ; # 如果off,pdnsd不会主动清除缓存中过期的项目 除非缓存满了

edns_query = yes ; # 是否使用edns

}

如果不用到其他的server,请确保文件其他的server{}被删除掉或者注释掉

最后,把dnsmasq的dns服务端口改成别的,把53留给pdnsd,反正不是53而且不和其他程序冲突就行了,可以在Luci里面修改(你也可以改/etc/dnsmasq.conf):

dnsmasq_change_dns_port

为了避免改了dnsmasq的dns服务端口后,连接路由器设备无法正常从dhcp服务获取dns服务器地址,还要一步额外的配置,在luci中点击“接口”,然后点击LAN口右边的修改,下方的DHCP服务器中,切至高级设置,在
DHCP-选项中加入:6,192.168.1.1,192.168.1.1是你路由LAN口IP,根据自己情况修改:

dhcp

三、启动

给pdnsd设置开机启动:

/ etc / init .d / pdnsd enable

也可以在Luci的启动项配置页面找到pdnsd,将开机自动从禁用改成启用

最后,重启一下路由,应该就好了。

PS:如果出现问题,排查DNS问题推荐使用DIG工具: 为Windows添加DIG等DNS工具

dig www . youtube . com

; << >> DiG 9.10 - P1 << >> @ X . X . X . X - p 5050 www . youtube . com

; ( 1 server found )

; ; global options : + cmd

; ; Got answer :

; ; -> > HEADER << - opcode : QUERY , status : NOERROR , id : 4971

; ; flags : qr rd ra ; QUERY : 1 , ANSWER : 12 , AUTHORITY : 0 , ADDITION

; ; OPT PSEUDOSECTION :

; EDNS : version : 0 , flags : ; udp : 4096

; ; QUESTION SECTION :

; www . youtube . com . IN A

; ; ANSWER SECTION :

www . youtube . com . 61398 IN CNAME youtube - ui . l . google . com

youtube - ui . l . google . com . 98 IN A 173.194.117.233

youtube - ui . l . google . com . 98 IN A 173.194.117.238

youtube - ui . l . google . com . 98 IN A 173.194.117.230

youtube - ui . l . google . com . 98 IN A 173.194.117.232

youtube - ui . l . google . com . 98 IN A 173.194.117.224

youtube - ui . l . google . com . 98 IN A 173.194.117.226

youtube - ui . l . google . com . 98 IN A 173.194.117.229

youtube - ui . l . google . com . 98 IN A 173.194.117.225

youtube - ui . l . google . com . 98 IN A 173.194.117.227

youtube - ui . l . google . com . 98 IN A 173.194.117.231

youtube - ui . l . google . com . 98 IN A 173.194.117.228

; ; Query time : 161 msec

; ; SERVER : 192.168.1.1 #53(192.168.1.1)

; ; WHEN : Sun Nov 16 00 : 37 : 18 UTC 2014

; ; MSG SIZE rcvd : 254
推荐文章

1. 我是如何黑掉惠普打印机的2. 容器技术会阻碍SDN技术的成长吗?3. 漫谈软件定义网络4. DELL OME监控服务器安装配置5. 深圳美女程序员鞋中藏物躲避安检6. 逆向路由器固件之敏感信息泄露 Part2

我来评几句
登录后评论

已发表评论数(0)
相关站点
飞羽博客

0 0
原创粉丝点击