OpenWrt的DNS智能解析方案

2 mins to read

由于ChinaDns的一个问题,经常无法正常解析,甚至无响应。于是寻找替代方案。 目前我是用dnsmasq-china-list分流国内外站点域名的DNS解析,而本地DNS服务器可以使用pdnsd或ss转发。

方式一:使用pdnsd通过TCP方式进行DNS查询

修改/etc/pdnsd.conf配置

glocal{
    #...
    server_port = 54;       #本地端口
    query_method=tcp_only;      #查询方式TCP
    #...
}
#....
server{
    #...
    ip = 8.8.4.4
    port = 53
    #...
}

/etc/init.d/pdnsd enable

方式二:继续使用shadowsocks-libev-spec的DNS转发功能

UDP本地端口:5300
UDP转发地址:8.8.4.4:53

dnsmasq-china-list

dnsmasq-china-list是一个dnsmasq的配置文件,令列表内的域名使用114(默认是114,可以修改为你喜欢的DNS)解析,不再列表外的域名则使用dnsmasq默认设置解析。

  1. 将 accelerated-domains.china.conf 和 bogus-nxdomain.china.conf 放到/etc/dnsmassq.d/目录(如果不存在则新建)。
  2. 修改/etc/dnsmasq.conf
    1. 反注释conf-dir=/etc/dnsmasq.d,如果没有则自己新增
    2. LuCI 中定位至 「网络 - DHCP/DNS」-「基本设置」- 本地服务器 填写 127.0.0.1#5300 或者 127.0.0.1#54(以上例子中pdnsd使用了54端口,而ss转发则用了5300端口)
  3. /etc/init.d/dnsmasq restart

当然,也可以在pdnsd中设置上游服务器为ss的转发。