分類
Linux

編譯安裝 dnscrypt-wrapper 搭建防污染 DNS 服務器

眾所周知,在我朝局域網當中想要獲取國外 DNS 資訊,必定會遭到關鍵字污染。為此,有人想到了使用異常埠,比如5353而不使用 DNS 專用埠53——因為目前 女朋友牆 只污染53;也有人想到了使用 TCP 連線要求,因為 DNS 的應答機制參考 DHCP決定了它會接受第一個返回的回應,後邊的會被丟棄,而使用 TCP 則強制接受選定的資料包;甚至有人想到了把那些發污染包的 IP 位址收集起來,然後在用戶端處過濾——加入黑名單,這樣最終就會收到正確的回應包。

總之,這些都不是什麼長久之計,使用 OpenDNS 出品的 dnscrypt 是一個不錯的選擇,它在 DNS 的基礎之上增加了加密的選項,讓你的 DNS 請求能夠像使用 SSL 一樣加密地請求伺服器,這樣便從根本上杜絕了 DNS 污染問題。

那麼問題來了,就算你是用了 dnscrypt,可是伺服器 IP 被認證了呢? 答案是——這就是最近 dnscrypt 越來越不給力的原因。另外,OpenDNS 雖然搗鼓出了這麼個給力的玩意兒,但是他們卻沒有公開服務端——也就是說你必須使用那有限的幾個國外的伺服器,速度絕對快不到哪裡去。

所以,我朝有大神根據 dnscrypt 的用戶端寫出了牛逼閃閃的服務端——dnscrypt-包裝

我們現在可以自己在境外伺服器搭建一個 dnscrypt 伺服器,本地來連接就好了——你可以選擇一個速度比較快的 vps。

教程開始

作為演示,我這裡的伺服器是 Ubuntu的 14.04.

編譯安裝依賴庫檔

dnscrypt-包裝 依賴 libsodiumlibevent2;前者一般源裡沒有,後者一般預設版本不是2而是比較舊的1,我們得先來手動編譯這兩個庫。

我們從這裡下載 libsodium 的最新版本 ,截止到本文完成時,最新版本為1.0.2 1.0.10:

然後我們從這裡下載 libevent2 ,這裡我們選擇 2.0.22 穩定版:

編譯 dnscrypt-wrapper

搞定兩個依賴庫之後,就可以開始編譯 dnscrypt-包裝 啦:

如果你在 make configure 這一步出錯,你可能需要先安裝 autoconfig:

如果沒什麼問題,那麼就可以開始編譯安裝了:

至此編譯完成。

dnscrypt-wrapper 的配置和使用

這裡系統會回饋一個指紋資訊,這個資訊就是用戶端配置時候需要的「provider_public_key”! 所以一定要保存好。

類似這個樣子:

然後,我們使用命令生成有時限的加密金鑰對以及生成預簽章憑證:

這樣,dnscrypt-包裝 就已經準備好了。

使用命令來運行 dnscrypt-wrapper,用「-VV」來顯示比較詳細的 debug 資訊:

其中的 --provider-name= 並不必要,可以隨便填寫,但注意必須是以 2.dnscrypt-證書. 開頭:)

然後去國內 vps 安裝用戶端:

安裝好後配置一下:

保存後使用如下命令重啟用戶端服務,如果你的埠沒有被防火牆擼掉,那伺服器那邊就應該能夠看到 debug 資訊,表示已經有用戶端接入。

使用命令來測試一下:

多次重複命令,發現獲取到的 IP 均相同且為真正的正確 IP 位址,服務生效。

創建腳本

每次直接運行命令多少有些不方便,即使使用「-d」來後臺執行,一樣讓人感到不適,我們使用 shell 來創建一個啟動 dnscrypt-wrapper 的腳本。

以後則只需要使用 sh start-dnscrypt-wrapper.sh 就可以啟動了。

——至於關閉嘛,使用命令「killall dnscrypt-wrapper“。

延伸閱讀:

HTTPS://github.com/Cofyc/dnscrypt-wrapper

HTTP://03k.org/dnscrypt-wrapper-usage.html

本文由 落格博客 原創撰寫:落格博客 » 編譯安裝 dnscrypt-wrapper 搭建防污染 DNS 服務器

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/981.html

通過 落格博客

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

10 在回答“編譯安裝 dnscrypt-wrapper 搭建防污染 DNS 服務器”

確實需要一台國內的vps來作為 DNS 53 端口服務器,我這裡主要是為了給任意設備使用(尤其是移動端),如果你僅在自己一台電腦上使用,那麼就在本地起客戶端然後設置DNS地址為回環即可。實際上你可參考我最新的文章,DoT DoH 除了 DNSCrypt,你還可以了解一下更好的 DNS 加密方案 這些都是不錯的 DNS 解決方案,都可以按照本文架構實現任意設備使用DNS(或者根據你的需要,在本地計算機直接起客戶端,方便快捷~)

發表評論

您的電子郵件地址不會被公開. 必填字段標 *