DNSCrypt 是一個用於對 DNS 客戶端和 DNS 解析器之間通訊進行加密和驗證的協議。它能夠阻止 DNS 欺騙或中間人攻擊。 DNSCrypt 可用於大多數的操做系統,包括 Linux,Windows,MacOSX ,Android 和 iOS。而在本教程中我使用的是內核爲4.1的 archlinux。linux
Unbound 是用來解析收到的任意 DNS 查詢的 DNS 緩存服務器。若是用戶請求一個新的查詢,unbound 會將其存儲到緩存中,而且當用戶再次請求相同的請求時,unbound 將採用已經保存的緩存。這將比第一次請求查詢更快。數據庫
如今我將嘗試安裝「DNSCrypt」,以確保 DNS 的通訊的安全,並用「Unbound」加速。緩存
第一步 - 安裝 yaourt安全
Yaourt 是AUR(ARCH 用戶倉庫)的輔助工具之一,它可使用戶可以很容易地從 AUR 安裝程序。 Yaourt 和 pacman 使用相同的語法,你可使用 yaourt 安裝該程序。下面是安裝 yaourt 的簡單方法:服務器
一、 用 nano 或者 vi 編輯 arch 倉庫配置文件,存放在「/etc/pacman.conf」中。網絡
$ nano /etc/pacman.conf運維
二、 在 yaourt 倉庫底部添加,粘貼下面的腳本:編輯器
[archlinuxfr]ide
SigLevel = Never工具
Server = http://repo.archlinux.fr/$arch
三、 用「Ctrl + x」,接着用「Y」保存。
四、 接着升級倉庫數據庫並用pacman安裝yaourt:
$ sudo pacman -Sy yaourt
第二步 - 安裝 DNSCrypt 和 Unbound
DNSCrypt 和 unbound 就在 archlinux 倉庫中,你能夠用下面的 pacman 命令安裝:
$ sudo pacman -S dnscrypt-proxy unbound
接着在安裝的過程當中按下「Y」。
第三步 - 安裝 dnscrypt-autoinstall
Dnscrypt-autoinstall 是一個在基於 Linux 的系統上自動安裝和配置 DNSCrypt 的腳本。DNSCrypt 在 AUR 中,所以你必須使用「yaourt」命令來安裝它。
$ yaourt -S dnscrypt-autoinstall
注意 :
-S = 這和 pacman -S 安裝程序同樣。
第四步 - 運行 dnscrypt-autoinstall
用 root 權限運行「dnscrypt-autoinstall」來自動配置 DNSCrypt。
$ sudo dnscrypt-autoinstall
下一步中按下「回車」,接着輸入"Y"來選擇你想使用的 DNS 提供者,我這裏使用不帶日誌和 DNSSEC 的 DNSCrypt.eu。
第五步 - 配置 DNSCrypt 和 Unbound
一、 打開 dnscrypt 的「/etc/conf.d/dnscrypt-config」 ,確認配置文件中「DNSCRYPTLOCALIP」指向本地ip,「DNSCRYPTLOCALPORT」根據你本人的意願配置,我是用的是40端口。
$ nano /etc/conf.d/dnscrypt-config
DNSCRYPT_LOCALIP=127.0.0.1
DNSCRYPT_LOCALIP2=127.0.0.2
DNSCRYPT_LOCALPORT=40
保存並退出。
二、 如今你用 nano 編輯器編輯「/etc/unbound/」下 unbound 的配置文件:
$ nano /etc/unbound/unbound.conf
三、 在腳本最後添加下面的行:
do-not-query-localhost: no
forward-zone:
name: "."
forward-addr: 127.0.0.1@40
確保forward-addr和DNSCrypt中的「DNSCRYPT_LOCALPORT」一致。如你所見,用的是40端口。
接着保存並退出。
第六步 - 運行 DNSCrypt 和 Unbound,接着添加到開機啓動中
請用 root 權限運行 DNSCrypt 和 unbound,你能夠用 systemctl 命令來運行:
$ sudo systemctl start dnscrypt-proxy unbound
將服務添加到啓動中。你能夠運行「systemctl enable」:
$ sudo systemctl enable dnscrypt-proxy unbound
命令將會建立軟連接到「/usr/lib/systemd/system/」目錄的服務。
第七步 - 配置 resolv.conf 並重啓全部服務
resolv.conf 是一個在 linux 中用於配置 DNS 解析器的文件。它是一個由管理員建立的純文本,所以你必須用 root 權限編輯並讓它不能被其餘人修改。
用 nano 編輯器編輯:
$ nano /etc/resolv.conf
並添加本地IP 「127.0.0.1」。如今用「chattr」命令使他只讀:
$ chattr +i /etc/resolv.conf
注意:
若是你想要從新編輯,用「chattr -i /etc/resolv.conf」加入寫權限。
如今你須要重啓 DNSCrypt 和 unbound 和網絡;
$ sudo systemctl restart dnscrypt-proxy unbound netctl
若是你看到錯誤,檢查配置文件。
測試
一、 測試 DNSCrypt
你能夠經過 dnsleaktest來確認 DNSCrypt,點擊「標準測試」或者「擴展測試」,而後等待程序運行結束。
如今你能夠看到 DNSCrypt.eu 就已經與做爲 DNS 提供商的 DNSCrypt 協同工做了。
Testing DNSCrypt
Testing DNSCrypt
二、 測試 Unbound
如今你應該確保 unbound 能夠正確地與「dig」和「drill」命令一塊兒工做。
這是 dig 命令的結果:
$ dig linoxide.com
咱們如今看下結果,「Query time」是「533 msec」:
;; Query time: 533 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 14:48:19 WIB 2015
;; MSG SIZE rcvd: 188
再次輸入命令,咱們看到「Query time」是「0 msec」。
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 14:51:05 WIB 2015
;; MSG SIZE rcvd: 188
Unbound Test
Unbound Test
DNSCrypt 對 DNS 客戶端和解析端之間的通信加密作的很好,而且 Unbound 經過緩存讓相同的請求在另外一次請求同速度更快。
總結
DNSCrypt 是一個能夠加密 DNS 客戶端和 DNS 解析器之間的數據流的協議。 DNSCrypt 能夠在不一樣的操做系統上運行,不管是移動端或桌面端。選擇 DNS 提供商還包括一些重要的事情,應選擇那些提供 DNSSEC 同時沒有日誌的。Unbound 可被用做 DNS 緩存,從而加快解析過程,由於 Unbound 將請求緩存,那麼接下來客戶端請求相同的查詢時,unbound 將從緩存中取出保存的值。 DNSCrypt 和 Unbound 是針對安全性和速度的一個強大的組合。
免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/
或者勾搭Q2430675018
歡迎加入linux交流羣 478068715