用 DNSCrypt 加密 DNS 傳輸

DNS(Domain Name System)是專門用來解析域名的一項協議。

比如我們要訪問 Google 主頁,大致過程如下:首先瀏覽器向 DNS 服務器發出請求,DNS 服務器會返回一個對應的 IP 地址,接著瀏覽器向這個 IP 地址發出 HTTP 連接請求,建立連接傳輸網頁數據,瀏覽器解析網頁數據。

這是一個傳統的解析過程,然而由於最初設計方面的缺陷,在 DNS 解析和 HTTP 連接全過程中,都是採用明文傳輸的數據(類似於「裸奔」),極易泄露數據和受到攻擊。

那麽為了確保客戶端與服務器之間安全的傳輸,後來制定了 DNSSEC 、HTTPS 等協議。HTTPS 加密了 HTTP 傳輸的數據,確保了傳輸安全,而 DNSSEC 只是對 DNS 數據加了電子簽名,在傳輸過程中並沒有對數據進行加密,只能驗證傳輸過程中數據是否經過了篡改。

基於此,計算機網絡界大佬——Cisco 公司,基于 DNSCurve,研發了一個加密 DNS 傳輸的協議——DNSCrypt(介紹頁面)。使用 DNSCrypt 協議可以加密傳輸客戶端到支持 DNSCrypt 協議的 DNS 服務器之間的連接,確保不會受到 DNS 攻擊。

使用 DNSCrypt

DNSCrypt 已經開源,可以運行在絕大多數系統之上。

在 macOS 系統上使用

推薦使用 DNSCrypt-OSXClient 工具,這是一個圖形化工具,安裝包採用標準的 pkg 安裝過程。安裝完成後只需打開 DNSCrypt ,在提供的 DNS 服務器列表中選擇一個服務器(按需選擇,建議選擇 OpenDNS 服務器),然後勾選上「Enable DNSCrypt」,DNSCrypt 就開始工作了。

在 Windows 系統上使用

推薦使用 Simple DNSCrypt 工具,這也是一個圖形化易於操作的工具。打開 Simple DNSCrypt 后,在「網卡列表」中勾選要應用的網卡,然後設置服務器。這個工具提供了兩個服務器設置的選項,可以根據需要設置服務器並且開始工作。

在 Linux 系統上使用

推薦使用 DNSCrypt-LoaderPcap_DNSProxy 工具。當然也可以根據源碼自己編譯。

在 iOS、Android 系統上使用

在 iOS 上使用首先要越獄設備,Android 系統上要 Root 系統,然而這些操作可能會導致一定的安全風險,我們並不提倡這麽做,除非你非要使用 DNSCrypt。

在路由器上使用

根據官網的介紹,DNSCrypt 可以在 Tomato、OpenWrt 和 Entware 系統上工作。當然也可以根據源碼自己編譯。

搭建服務器

你可以在傳統 DNS 服務器上添加 DNSCrypt 協議的支持,最簡單的方法就是通過 Docker 映像 來運行。

更多介紹請到 DNSCrypt 項目官網 瞭解。

測試 DNSCrypt 是否正常運行

很簡單,在瀏覽器裏面打開一個以往不是能那麽順利打開的網站(最好是 HTTPS 訪問哦),如果現在很輕松就能打開了,那麽 DNSCrypt 就已經在工作啦 😏

安全的享受互聯網,祝你好運!