NAP6官方旗舰店
搜索
发新帖
午饭无线 推广广告R7800 完胜 华硕路由器NETGEAR Vs ASUS T-Mobile定制版NETGEAR团购
开启左侧

OpenWR固件T路由器的DNS加速解析,pdnsd代替dnsmasq软件包

[复制链接]
1334 0

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用缓存功能更加强大的pdnsd来代替openwrt自带的dnsmasq完成dns解析功能,从而改善解析速度的方法。本篇内容和科学上网没有直接关系!

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


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

也可以使用SSH安装。CC15.05开始,官方源中不再包含pdnsd,请自行到官网的BB14.07版本下对应packages\oldpackages目录下下载对应的pdnsd包手动安装。
  1. opkg update
  2. opkg install pdnsd
复制代码

二、配置
配置/etc/pdnsd.conf,文件配置分为数个区域,主要修改global区域和server区域,其他区域保留默认值即可。具体的配置文件详情请查阅官方文档:pdnsd Documents
  1. # 这里是全局设置区域,酌情修改
  2. global {
  3.         perm_cache=2048;   # 缓存文件大小,单位KB
  4.         cache_dir="/var/pdnsd";  # 缓存文件位置,保留默认
  5. #        pid_file = /var/run/pdnsd.pid;  # pid文件,不用管
  6.         run_as="nobody";          # runas,保留默认
  7.         server_ip = 0.0.0.0;  # 监听所有
  8.         status_ctl = on;   # 保留on
  9. #        paranoid=on;       # This option reduces the chance of cache poisoning
  10.                            # but may make pdnsd less efficient, unfortunately.
  11.         query_method=udp_only;  # 只使用UDP,保留默认
  12.         min_ttl=6h;       # 最小TTL时间,自己酌情往上加,默认是15分钟
  13.         max_ttl=1w;        # 最长TTL时间,默认一周
  14.         timeout=10;        # 全局超时时间,默认10秒,酌情修改
  15.         neg_domain_pol=on; # 用到neg domain的话可以试试,不用就不用管
  16.         udpbufsize=1024;   # 默认
  17. }

  18. # 这个是server区域,可以定义多组,定义pdnsd的上游dns
  19. server {
  20.         label= "chinadns";  # 为这组server起一个名字
  21.         ip = 3.4.5.6;    # 填写DNS的IP地址,多个地址逗号分隔,可以换行,分号结尾
  22.         port = 5353;     # 填写DNS的端口,我这里上一级是3.4.5.6,监听的5353
  23.                          # 如果使用114DNS等公共 DNS 这里端口号应该是53,或者删除该行也行
  24. #        proxy_only=on;     # Do not query any name servers beside your ISP's.
  25.                            # This may be necessary if you are behind some
  26.                            # kind of firewall and cannot receive replies
  27.                            # from outside name servers.
  28.         timeout=4;         # 超时值,酌情修改
  29.         uptest=none;       # 是否进行可用性检查,none=不检查,具体方法看官方文档
  30.         interface=eth0;    # 可用性检查所用的interface名
  31.         interval=10m;      # 检查频率
  32.         purge_cache=off;   # 如果off,pdnsd不会主动清除缓存中过期的项目 除非缓存满了
  33.         edns_query=on;    # 是否使用edns
  34. }
复制代码

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

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

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

三、启动
给pdnsd设置开机启动:
  1. /etc/init.d/pdnsd enable
复制代码

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

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

PS:如果出现问题,排查DNS问题推荐使用DIG工具
  1. dig www.youtube.com

  2. ; <<>> DiG 9.10-P1 <<>> www.youtube.com
  3. ; (1 server found)
  4. ;; global options: +cmd
  5. ;; Got answer:
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4971
  7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 0, ADDITION

  8. ;; OPT PSEUDOSECTION:
  9. ; EDNS: version: 0, flags:; udp: 4096
  10. ;; QUESTION SECTION:
  11. ;www.youtube.com.               IN      A

  12. ;; ANSWER SECTION:
  13. www.youtube.com.        61398   IN      CNAME   youtube-ui.l.google.com
  14. youtube-ui.l.google.com. 98     IN      A       173.194.117.233
  15. youtube-ui.l.google.com. 98     IN      A       173.194.117.238
  16. youtube-ui.l.google.com. 98     IN      A       173.194.117.230
  17. youtube-ui.l.google.com. 98     IN      A       173.194.117.232
  18. youtube-ui.l.google.com. 98     IN      A       173.194.117.224
  19. youtube-ui.l.google.com. 98     IN      A       173.194.117.226
  20. youtube-ui.l.google.com. 98     IN      A       173.194.117.229
  21. youtube-ui.l.google.com. 98     IN      A       173.194.117.225
  22. youtube-ui.l.google.com. 98     IN      A       173.194.117.227
  23. youtube-ui.l.google.com. 98     IN      A       173.194.117.231
  24. youtube-ui.l.google.com. 98     IN      A       173.194.117.228

  25. ;; Query time: 161 msec
  26. ;; SERVER: 192.168.1.1#53(192.168.1.1)
  27. ;; WHEN: Sun Nov 16 00:37:18 UTC 2014
  28. ;; MSG SIZE  rcvd: 254
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表