本教程向您展示如何在 Linux Mint 上保護您的 DNS 隱私 基於 TLS 的 DNS使用。 敦實,但首先讓我解釋一下為什麼 DNS 不安全。
DNS 漏洞
DNS 不安全,因為默認情況下 DNS 查詢未加密。它們以明文形式發送,可被中間實體濫用。例如,中國的防火牆(GFW更多) 使用一種名為 DNS緩存中毒 中國的網絡審查。 (我們還使用了本文範圍之外的其他方法。)
GFW 會檢查所有發送到中國境外 DNS 服務器的 DNS 查詢。由於明文 DNS 協議基於 UDP(一種無連接協議),因此 GFW 可以欺騙客戶端和服務器 IP。 當 GFW 在阻止列表中找到一個域名時,它會修改 DNS 響應。
例如,當中國的互聯網用戶嘗試訪問 google.com 時,GFW 會向用戶的 DNS 解析器返回位於中國的 IP 地址,而不是 Google 的實際 IP 地址。然後,DNS 解析器向用戶的計算機返回一個虛假的 IP 地址,用戶無法訪問 google.com。
什麼是基於 TLS 的 DNS,您如何保護您的 DNS 隱私?
DNS over TLS 意味著 DNS 查詢是通過使用 TLS(傳輸層安全)加密的安全連接發送的,TLS 與用於加密 HTTP 流量的技術相同,因此第三方無法看到您的 DNS 查詢。 結合 HTTPS 站點和加密的 SNI(服務器名稱指示),您的 Web 瀏覽歷史完全不受 ISP 間諜的攻擊。
敦實 一個開源的 DNS 存根解析器。存根解析器是最終用戶計算機上的小型 DNS 客戶端,它接收來自 Firefox 等應用程序的 DNS 請求,並將請求轉發到遞歸解析器,例如 1.1.1.1 和 8.8.8.8。 Stubby 的特別之處在於它支持基於 TLS 的 DNS。默認情況下,它只發送加密的 DNS 查詢。
注意:本教程僅適用於 Linux Mint 19,包括 19.1 和 19.2。 如果您使用的是 Linux Mint 18,請升級您的系統。
如何在 Linux Mint 上使用 Stubby 配置基於 TLS 的 DNS
Stubby 包含在 Linux Mint 19 軟件存儲庫中。打開終端窗口並運行以下命令進行安裝:
sudo apt install stubby
安裝後,stubby會自動在後台運行。您可以通過以下方式檢查狀態:
systemctl status stubby
提示:如果上述命令沒有立即退出, 聽 結束命令並重新獲得終端控制權的鍵。
Stubby 在 TCP 和 UDP 端口 53 上偵聽 localhost (127.0.0.1)。這可以通過運行以下命令來驗證:
sudo netstat -lnptu | grep stubby
提供的默認存根解析器 systemd-resolved
在 127.0.0.53 處偵聽 TCP 和 UDP 端口 53。
sudo netstat -lnptu | grep systemd-resolve
現在 stubby 已經安裝並運行了,我們需要告訴 Linux Mint 系統使用它。點擊 網絡管理員 點擊桌面右下角的圖標,然後 網絡設置.
單擊齒輪圖標以配置您的網絡。
選擇 IPv4 選項卡關閉 自動的 在 DNS 中。這將阻止您的 Linux Mint 系統從您的路由器獲取 DNS 服務器地址。接下來,指定 Stubby 地址 (127.0.0.1) 裡面 服務器 文本域。點擊 應用 按下按鈕關閉 通訊網絡 窗戶。
然後通過在終端中運行以下命令重新啟動 NetworkManager 以使上述更改生效:
sudo systemctl restart NetworkManager
重新連接路由器後, 網絡管理員 再次選擇圖標 網絡設置可以看到 Linux Mint 系統當前正在使用 . 127.0.0.1 作為(短粗的)DNS 服務器。
如何從命令行切換到 Stubby
您還可以將 Linux Mint 系統配置為使用 stubby。 系統分析 從命令行。您可以使用此命令查看默認的 DNS 服務器。
systemd-resolve --status
要將 Stubby 設置為默認服務器,請在命令行文本編輯器(例如 Nano)中打開 systemd 解析的配置文件。
sudo nano /etc/systemd/resolved.conf
使用箭頭鍵上下移動。裡面 [Resolve]
將以下行添加到該部分以使系統使用 Stubby。
DNS=127.0.0.1
保存並關閉文件。 (要將文件保存在 Nano 文本編輯器中, Ctrl+O
按 Enter
確認。按退出 Ctrl+X
.)
然後重啟systemd解析的服務。
sudo systemctl restart systemd-resolved
通過運行以下命令檢查默認 DNS 服務器:
systemd-resolve --status
您可以看到 127.0.0.1 在全局部分設置為 DNS 服務器。
如何檢查 DNS 流量是否已加密
WireShark 可用於監控 DNS 流量。通過在終端中運行以下命令,從 Linux Mint 存儲庫安裝 WireShark:
sudo apt install wireshark
當詢問“非 root 用戶可以捕獲數據包嗎?”時,使用箭頭鍵選擇是,然後按 Enter。
安裝後,運行以下命令將您的用戶帳戶添加到 Wireshark 組,以便您可以捕獲數據包。交換 your-username
請使用您的實際用戶名。
sudo adduser your-username wireshark
註銷並重新登錄以使更改生效。然後從“應用程序”菜單中打開 WireShark。
在 WireShark 中選擇一個網絡接口。例如,我的以太網接口名稱是 enp0s3。 如果您使用的是 Wi-Fi,則網絡接口名稱將類似於 wlp0s3。然後輸入 port 853
作為捕獲過濾器。這將導致 WireShark 僅捕獲端口 853 上的流量。這是 DNS over TLS 使用的端口。
按 Enter 開始捕獲流量。然後在終端窗口中運行以下命令並使用以下命令查詢域名: dig
公共事業。例如,您可以查詢您的域名的 A 記錄。
dig A linuxbabe.com
現在您可以看到 WireShark 捕獲的 DNS 流量。如您所見,我的 DNS 查詢轉到 185.49.141.37
, 145.100.185.15
還 145.100.185.16
,在 stubby 配置文件中定義的三個默認 DNS 解析器。通過 TCP 建立連接並使用 TLS 加密。這正是我想要的。單擊左上角的紅色按鈕停止捕獲流量。
當 DNS 查詢未加密發送時,您的計算機會在端口 53 上連接到 DNS 服務器。您可以再次捕獲數據包 port 53
作為捕獲過濾器。但是,WireShark 不顯示任何數據包。這意味著 stubby 正在加密 DNS 查詢。
包起來
我們希望本教程幫助您在 Linux Mint 上使用 DNS over TLS 保護您的 DNS 隱私。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。當心。