分类
OpenWRT

OpenWRT ChinaDNS配置

本文作为树莓派3B/3B+刷OpenWRT原生img 作为旁路由让全屋免配置上机场(二)的分支部分,填补ChinaDNS的配置说明。

by itgeeker.net

在技术奇客网站关于树莓派作为旁路由的方案中,Dnsmaq 接收来自局域网的 DNS 请求后直接转发给 ChinaDNS 处理;ChinaDNS通过上级服务器(Upstream Servers)进行DNS查询。

ChinaDNS安装

opkg update

opkg install ChinaDNS
opkg install luci-app-chinadns

ChinaDNS启动

/etc/init.d/chinadns start

ChinaDNS原理及配置

ChinaDNS 分国内 DNS 和国外DNS。ChinaDNS 会同时向国内 DNS 和国外的 DNS 发请求,如果国外的 DNS 先返回,则采用可信 DNS 的数据;如果国内 DNS 先返回,又分两种情况,返回的数据是国内的 IP, 则采用,否则丢弃并转而采用国外 DNS 的结果。


所以ChinaDNS 需要配置至少两个上游 DNS,并且至少一个为国内 DNS,一个为国外 DNS;当 ChinaDNS 解析一个域名时,它会同时向这些 DNS 服务器发送解析请求,如果国内 DNS 返回的地址是国外的,则过滤掉这个结果,使用国外 DNS 返回的地址;做到智能解析。

使用 chnroute 区分国内外IP地址


我们可以通过建立国内 IP 路由表来区分,可以从网上获取文件并保存到/etc/chinadns_chnroute.txt

wget -O /tmp/delegated-apnic-latest 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' && awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' /tmp/delegated-apnic-latest > /etc/chinadns_chnroute.txt

编辑 crontab 任务计划,每周一凌晨 3 点更新 ,以便保持名单的更新:

chinadns_chnroute.txtcrontab -e
# 输入
0 3 * * 1    wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O /tmp/delegated-apnic-latest && awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' /tmp/delegated-apnic-latest > /etc/chinadns_chnroute.txt
/etc/init.d/cron start
/etc/init.d/cron enable
# 验证 crontab 任务是否正确执行
logread | grep crond

另外一个备选的IP清单,孰好孰坏就自己选择了,ITGeeker只提供一个备选:

cp /etc/chinadns_chnroute.txt /etc/chinadns_chnroute_apnic.txt
wget --no-check-certificate https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt -O /tmp/china_ip_list.txt && mv /tmp/china_ip_list.txt /etc/chinadns_chnroute.txt

配置 ChinaDNS(参看插图)

  1. 勾选 Enable Bidirectional Filter
  2. 勾选Also filter results inside China from foreign DNS servers
  3. 将上游 DNS (Upstream Servers)修改为 202.96.209.133,127.0.0.1:5353。(前者用于解析国内域名,可选择自己当地最快的DNS服务器;后者为 ss-tunnel 提供的 DNS 端口转发或者DNSForwarder的端口 ,由远程服务器解析国外网站,ITGeeker的树莓派路由器建议使用DNSForwarder的端口,实测效果比ss-tunnel好) 
  4. 选择启用 ChinaDNS

“OpenWRT ChinaDNS配置”上的1条回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注