将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析國内域名用本地 DNS[ZT+實踐]
原文位址:
1、https://typcn.com/legacy/blog/posts/openwrt-dnscypt.html
2、http://www.openwrt.pro/post-376.html
下面紅字部份為本人實踐的筆記
之前一直用的是 ChinaDNS-C 結果發現解析速度奇慢無比,通路一個網站需要等 30 秒左右的主機解析時間,大概是到 Google DNS 的線路被随機丢包了吧
試了試 OpenDNS 帶 Anycast 的 DNSCrypt 伺服器,70+ ms 還不錯,于是就部署到了路由器上
dl
first
一般情況下,直接使用
opkg install dnscrypt-proxy
就可以安裝,如果提示未找到包的話,在下方選擇合适的平台進行下載下傳。
這些安裝包收集于網絡,我沒有找到更多的平台,手頭沒有 linux 的機子也沒法編譯,有條件的可以自己下載下傳源代碼進行交叉編譯。
ar71xx
- 本體
- libsodium
brcm63xx
- 本體
x86
- 本體
- libsodium
安裝方法
别告訴我你不會安裝 ipk
使用方法
啟動
預設的設定可以直接使用
/etc/init.d/dnscrypt-proxy start #啟動
/etc/init.d/dnscrypt-proxy enable # 設定開機自啟
如果沒問題的話,程式已經成功 listen 到 2053 端口了[注:我在LEDE上最新的包安裝後的端口是5353]
設定 DNSmasq
vi /etc/config/dhcp
# 在 config dnsmasq 區域的最後加入
option noresolv \'1\'
list server \'127.0.0.1#2053\' [同樣,這裡也需要改為:127.0.0.1#5353]
# 如果有 option resolvfile 開頭的行 請删掉
重新開機服務
/etc/init.d/dnsmasq restart
修改 DNS
将你電腦的 DNS 伺服器修改為你路由器的 IP,通常為 192.168.1.1
設定完成
Before - GOV DNS SPOFFING
After - CORRECT RESULT
Why
之前我們使用了 DNSCrypt 來防止 DNS 解析的污染,但是 DNSCrypt 解析速度往往有些慢,而且部分網站的 CDN 會将你識别在國外,這樣通路也很慢,用着就非常不爽,那麼就需要再加一些配置使其在解析國内域名時使用本地 DNS 。
修改啟動腳本
由于 OpenWrt (luci) 的配置檔案是自動生成的,我們需要對他的啟動腳本進行小 hack
vi /etc/init.d/dnsmasq
輸入 /start() 回車,Vim 會将光标自動定位到 start 函數處,我們在 start 函數内建立一行 輸入
echo "conf-dir=/etc/dnsmasq.d" >> $CONFIGFILE
如圖

[ 注:新版的LEDE裡面dnsmasq的啟動腳本已經和原文大不一樣了,複雜了很多,是以我選擇直接在/etc/dnsmasq.conf檔案的最後直接添加一行:conf-dir=/etc/dnsmasq.d ]
按 ESC 輸入 :wq 儲存并退出
下載下傳并安裝
打開 https://github.com/felixonmars/dnsmasq-china-list 點選 Download ZIP 下載下傳後解壓
建立檔案夾 /etc/dnsmasq.d
将 accelerated-domains.china.conf 和 bogus-nxdomain.china.conf 放到 /etc/dnsmasq.d 中
[ 其實這裡可以直接下載下傳兩個檔案:
vi get_dns_china_list.sh
#!/bin/ash
wget --no-check-certificate -O /etc/dnsmasq.d/accelerated-domains.china.conf "https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf"
wget --no-check-certificate -O /etc/dnsmasq.d/bogus-nxdomain.china.conf "https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf"
sed -i \'s/114.114.114.114/本地dns以獲得最快的解釋/g\' /etc/dnsmasq.d/accelerated-domains.china.conf
另外,建議做個定時任務更新上面兩個檔案,半年一次便可
]
重新開機 dnsmasq
/etc/init.d/dnsmasq restart
配置完成 !
效果
使用前:可以看到我的部落格被解析到了日本節點
使用後:正确解析到網宿節點
[ 經本人測試的結果,taobao.com和baidu.com由修改之前的解釋到美國馬上解釋回國内的位址 ]
本文章由作者:佐須之男 整理編輯,原文位址: 讓 OpenWrt 上的 DNSmasq 解析國内域名用本地 DNS