天天看點

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析國内域名用本地 DNS[ZT+實踐] - 9394952

将 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      

如圖

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析國内域名用本地 DNS[ZT+實踐] - 9394952

[    注:新版的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      

配置完成 !

效果

使用前:可以看到我的部落格被解析到了日本節點

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析國内域名用本地 DNS[ZT+實踐] - 9394952

使用後:正确解析到網宿節點

[   經本人測試的結果,taobao.com和baidu.com由修改之前的解釋到美國馬上解釋回國内的位址  ]

本文章由作者:佐須之男 整理編輯,原文位址: 讓 OpenWrt 上的 DNSmasq 解析國内域名用本地 DNS

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析國内域名用本地 DNS[ZT+實踐] - 9394952