在 Ubuntu Server 24.04 上加密 Pi-hole 上游 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;軟體套件版本因架構而異,並可能隨著更新的發布而更改。

在 Ubuntu 伺服器終端機提示符號下執行命令 sudo apt install dnscrypt-proxy
用於從 Noble 軟體包儲存庫安裝 dnscrypt-proxy 的 Ubuntu 終端命令。

1. 安裝 Ubuntu 軟體包

更新 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 連接埠服務競爭。

Nano 編輯器顯示一個綁定到 127.0.0.1 連接埠 5053 的 systemd 套接字覆蓋。
套接字覆蓋,TCP 和 UDP 監聽器均已清除,並重新綁定至 localhost 的 5053 連接埠。

2. 將代理程式綁定到本機主機連接埠 5053

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,因為那樣會將代理暴露在每個網路介面上。

Nano 編輯器顯示了已配置套接字啟動的 dnscrypt-proxy 和 cloudflare-security 解析器的介面。
使用 systemd 套接字啟動並選擇 Cloudflare Security 解析器的 dnscrypt-proxy TOML 設定。

3. 選擇 DoH 解析器

開啟軟體包設定檔:

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在繼續操作之前檢查服務日誌。

Ubuntu 終端機提示符顯示了 Pi-hole 命令,該命令將 127.0.0.1 的 5053 連接埠設定為其上游 DNS 伺服器。
Pi-hole CLI 命令,用於將本機加密 DNS 代理程式設定為上游解析器。

4. 將 Pi-hole 指向本地代理

只有在本地測試成功後,才將 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 切換到代理,直到其本地查詢測試成功為止。

留下評論

使用 Systemd 定時器可靠地執行 ownCloud 後台作業

將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。

透過尋找故障路由來恢復 ownCloud WebDAV 同步

透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。

設定 Nextcloud 的公共 URL,以便它可以存取自身。

透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。

使用 Systemd 定時器自動執行 Nextcloud Cron

檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。

使用 Redis 清除 Nextcloud 的檔案鎖定警告

啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。

如何才能獲得 Nextcloud A+ 安全評級

如何才能獲得 Nextcloud A+ 安全評級

使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。

啟用 Nextcloud 伺服器端加密,並評估其影響

為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。

將 Elasticsearch 全文搜尋功能新增至 Nextcloud

將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。

為 Nextcloud 已刪除檔案設定可靠的過期策略

為 Nextcloud 已刪除檔案設定可靠的過期策略

配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。