在 Ubuntu Server 24.04 上加密 Pi-hole 上游 DNS
在 Ubuntu 24.04 上將 dnscrypt-proxy 設定為 Pi-hole 的本地 DoH 橋,設定僅限 localhost 的監聽器、解析器選擇以及切換 DNS 前的檢查。
在這個範例中,Linh 在 Ubuntu Server 24.04 上執行 Pi-hole,並希望加密 Pi-hole 向上游發送的 DNS 請求。安裝 [此處應填寫特定步驟dnscrypt-proxy],將其綁定到 [127.0.0.1:5053此處應填寫特定路徑],選擇一個 DNS-over-HTTPS (DoH) 解析器,測試該本地代理,然後將 Pi-hole 指向它。本教學假設 Pi-hole 已安裝並正常運作;Linh 只是一個假設範例,並非實際的安裝或測試報告。
Pi-hole 本身並不會直接使用 DoH 協定與上游解析器通訊;它通常將 DNS 請求轉送到指定的 IP 位址和連接埠。本機代理程式負責橋接這兩種協定:Pi-hole 將標準 DNS 請求傳送到本機私有監聽器,然後由該代理程式將加密請求傳送到選定的解析器。在本例中,Linhdnscrypt-proxy在同一台伺服器上使用 DoH 協議,並將其監聽器配置在環回位址上,因此其他裝置無法直接連接到該代理程式。
避免使用舊版配置方案進行新安裝cloudflared proxy-dns。 Pi-hole 目前的 Cloudflare 頁面顯示,Cloudflare 已於 2025 年 11 月棄用該功能,因此不建議在新安裝中使用。 Pi-hole 的 dnscrypt-proxy 設定指南提供了一個維護良好的替代方案。 Ubuntu Noble 軟體套件清單目前包含 dnscrypt-proxy dnscrypt-proxy;軟體套件版本因架構而異,並可能隨著更新的發布而更改。

更新 APT 的軟體包清單並安裝 Noble 軟體來源軟體包:
sudo apt update
sudo apt install dnscrypt-proxy
該軟體包位於 Ubuntu 的 Universe 元件中。如果 APT 找不到它,請檢查 Universe 是否已啟用並重新執行命令sudo apt update。不要為了解決軟體來源配置問題而下載任何第三方建置版本。
在繼續操作之前,請確認 Ubuntu 已安裝 Pi-hole 程式使用的 systemd 套接字單元:
systemctl list-unit-files dnscrypt-proxy.socket
Ubuntu Noble 軟體包檔案清單包含dnscrypt-proxy.socket,而 Pi-hole 指令使用該套接字提供本機 DNS 監聽器,而不會與 Pi-hole 自己的 53 連接埠服務競爭。

Pi-hole 的 FTL DNS 服務通常佔用 53 連接埠。給 dnscrypt-proxy 分配一個不同的端口,並使其僅綁定到伺服器本身。建立一個 systemd 覆蓋配置:
sudo systemctl edit dnscrypt-proxy.socket
將以下幾行新增到空的覆蓋檔案中,儲存並退出:
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5053
ListenDatagram=127.0.0.1:5053
空白分配會清除套接字單元原有的 53 連接埠監聽器,然後再新增位址。保持監聽器位址127.0.0.1不變非常重要:對於這種同主機配置,不要將其變更為其他位址0.0.0.0,因為那樣會將代理暴露在每個網路介面上。

開啟軟體包設定檔:
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
設定以下值,同時保持軟體包中其餘配置不變:
listen_addresses = []
server_names = ['cloudflare-security']
空listen_addresses列表會指示 dnscrypt-proxy 使用 systemd 套接字啟動。 Pi-hole 的 dnscrypt-proxy 指南中使用了名為 Cloudflare Security 的解析器作為範例;除了 Pi-hole 本身的黑名單之外,它還會應用該解析器的惡意軟體過濾功能。如果您偏好其他提供者或不需要額外的安全過濾,請從維護的公共解析器清單中選擇目前的 DoH 解析器,並使用其確切的伺服器名稱。可用名稱和解析器策略可能會發生變化,因此請驗證當前條目,而不是從舊帖子複製過時的名稱。
重新啟動套接字和服務,使覆蓋設定和 TOML 設定生效:
sudo systemctl restart dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy.service
在更改 Pi-hole 的上游配置之前,請先測試本地監聽器:
dig @127.0.0.1 -p 5053 example.com
DNS 回應和退出狀態碼為零表示本機代理程式已回應查詢。若要確認所選上游是否使用 DoH,請檢查最近的服務訊息並尋找標記為「:」的解析器OK (DoH)。
sudo journalctl -u dnscrypt-proxy.service -n 50 --no-pager如果dig未安裝,請安裝 Ubuntu 的dnsutils軟體套件。如果查詢逾時或日誌中未顯示 DoH 解析器,請sudo systemctl status dnscrypt-proxy.socket dnscrypt-proxy.service在繼續操作之前檢查服務日誌。

只有在本地測試成功後,才將 Pi-hole 的上游清單替換為本地監聽器:
sudo pihole-FTL --config dns.upstreams '["127.0.0.1#5053"]'
sudo systemctl restart pihole-FTL.service
該值使用 Pi-hole 的自訂上游 DNS 伺服器格式:127.0.0.1`localhost` 是本機,#5053`port` 是非標準 DNS 連接埠。您也可以在 Pi-hole 管理介面的「設定」>「DNS」>「自訂上游 DNS 伺服器」中輸入此值127.0.0.1#5053。取消勾選預設的公共上游 DNS 伺服器並儲存,否則 Pi-hole 可能會繼續直接向它們發送一些請求,而未使用 DoH。
使用 Pi-hole 的 LAN 位址取代以下位址查詢 Pi-hole 本身PIHOLE_IP:
dig @PIHOLE_IP example.com
確認查找成功,Pi-hole 的查詢日誌顯示客戶端請求,且 dnscrypt-proxy 的服務狀態或日誌顯示其選擇的上游伺服器可達。最終路徑應為:客戶端透過區域網路連接到 Pi-hole,然後 Pi-hole 連接到本地代理,最後代理連接到 DoH 解析器。此方法加密伺服器到解析器之間的連結;它不會加密用戶端和 Pi-hole 在區域網路上的普通 DNS 流量,也不會隱藏對所選解析器的查詢,更不會將 Pi-hole 變成 VPN。
有關命令和版本詳情,請參閱Pi-hole dnscrypt-proxy 指南(2026 年 2 月 16 日發布)、其Cloudflared 棄用通知(2026 年 2 月 12 日發布)、Ubuntu 的Noble dnscrypt-proxy 軟體包記錄以及當前的公開數據包。如果任何服務處於非活動狀態,請勿將 Pi-hole 切換到代理,直到其本地查詢測試成功為止。
在 Ubuntu 24.04 上將 dnscrypt-proxy 設定為 Pi-hole 的本地 DoH 橋,設定僅限 localhost 的監聽器、解析器選擇以及切換 DNS 前的檢查。
在排查應用程式或硬體故障之前,請檢查 Ubuntu 的觸控板設定、確認 Wayland 以及測試 GNOME 的內建滑動功能。
建立並驗證一個雙磁碟 Debian 12 RAID 1 資料陣列,安全地格式化它,並配置它在重新啟動後組裝和掛載。
為現有的 Debian 12 交換分區設定隨機金鑰加密,驗證活動的 dm-crypt 映射,並了解休眠的權衡。
使用 chroot、適當的權限、匹配規則和安全測試,將 Ubuntu 24.04 SSH 帳戶限製到指定的 SFTP 資料夾,而不授予 shell 存取權限。
找到擁有 Ubuntu dpkg 前端鎖定的進程,讓軟體包工作完成,並在不刪除鎖定檔案的情況下修復中斷的安裝。
使用 Timeshift 在 Ubuntu Desktop 上設定定時 Btrfs 系統快照,驗證 Ubuntu 子磁碟區佈局,選擇保留策略,並了解快照無法保護的內容。
規劃更安全的 Debian 12 到 Testing 遷移:透過 Stable 版本升級,備份,清理 APT 來源,模擬依賴項更改,並驗證更改的內容。
安全地診斷 Ubuntu 伺服器緊急模式。讀取啟動日誌,檢查根目錄和 fstab 掛載點,修復故障單元,處理檔案系統錯誤,並驗證是否乾淨重新啟動。
為一個遠端客戶端設定 Debian 12 WireGuard VPN 伺服器。設定金鑰、IPv4 轉送、nftables NAT、防火牆存取和連線檢查。