Centos7下dnscrypt-proxy安裝

振宇要低調發表於2016-10-30

  DNS劫持指的是“一些裝置”會攔截DNS解析請求,並將錯誤的DNS資訊返回給主機;DNS汙染指的是“一些裝置”會將錯誤的域名資訊下發至公共的DNS伺服器中(比如114),這樣使用者在進行DNS查詢的時候將會得到錯誤的IP資訊。針對這兩個問題,可通過搭建基於TCP且加密的DNS代理伺服器來解決。 

1、安裝依賴包libsodium

wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.10.tar.gz
tar -xvzf libsodium-1.0.10.tar.gz 
cd libsodium-1.0.10/
CFLAGS="-O3 -fPIC" ./configure
make && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
sudo ldconfig

2、安裝dnscrypt-proxy

wget https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.7.0.tar.gz
tar -xvzf dnscrypt-proxy-1.7.0.tar.gz 
cd dnscrypt-proxy-1.7.0/src/libevent-modified/
CFLAGS="-O3 -fPIC" ./configure
make && make install
cd ../..
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
sudo ldconfig
./configure 
make -j 2 && make install

3、執行並加入開機自啟動

[root@localhost ~]# /usr/local/sbin/dnscrypt-proxy -R yandex -E --local-address=0.0.0.0 -d
[root@localhost ~]#  vi /etc/rc.d/rc.local
#新增如下一行
/usr/local/sbin/dnscrypt-proxy -R yandex -E --local-address=0.0.0.0 -d
[root@localhost ~]#  chmod +x /etc/rc.d/rc.local

  /usr/local/share/dnscrypt-proxy/dnscrypt-resolvers.csv中存放了已經支援dnscrypt查詢的公共dns,上邊表示式中的“-R yandex”代表的是這個文件中第一列的name。

4、驗證

  由以下執行結果可以看到,在解析facebook.com這個網址時,本機上的dnscrypt-proxy能夠解析正確,而114和8.8解析出來的都是被牆篡改過的IP。

[root@localhost ~]# dig facebook.com +short @114.114.114.114
93.46.8.89
[root@localhost ~]# dig facebook.com +short @8.8.8.8
93.46.8.89
[root@localhost ~]# dig facebook.com +short @8.8.8.8
78.16.49.15
[root@localhost ~]# dig facebook.com +short @127.0.0.1
157.240.3.35
[root@localhost ~]# dig facebook.com +short @127.0.0.1
157.240.3.35

 

  如果想用這個DNS代理的話,只需要將系統的DNS伺服器配置為該伺服器即可(該伺服器上需要開放 UDP:53埠)。當然,以上只解決了DNS解析的問題,“一些裝置”還有IP封鎖等等機制來過濾相應網站。

相關文章