WireGuard VPN 結合 Pi‑Hole 廣告封鎖與 Unbound DNS 的架設指南 (★ 
101 分)
原文詳細說明如何以開放原始碼工具自架安全、可控的私人 VPN 環境,結合 WireGuard、Pi‑Hole 與 Unbound 三者達成網路加密、廣告過濾與遞迴式 DNS 解析。作者原先使用 Mullvad VPN,但為了取得完整的 DNS 查詢控制權及自訂內部連線名稱,如 `emby.home.server`,改採自行搭建方案。他先在距離所在地較近、具 1 Gbps 頻寬的 VPS (虛擬私人伺服器) 架設中心節點,採「星狀 (hub‑and‑spoke) 網路拓樸」,讓家庭伺服器、桌機、筆電與行動裝置透過加密通道 interconnect,VPS 再作為對外出口,同時進行封包遮蔽與廣告阻擋。為確保系統安全,他先設定 SSH 金鑰登入、停用密碼認證與 root 登入、更改預設埠號、啟用自動安全更新,並透過 UFW 防火牆僅開啟 WireGuard 與管理連線所需的埠。
在 WireGuard 部分,作者為每台裝置產生公私鑰與預共用金鑰,定義各自的 `Interface` 與 `Peer` 組態,並在 VPS 端設定 IP 位址 
10.10.10.1/24、開啟封包轉送與 masquerading,以便內網節點皆以 VPS 為對外來源。接著使用 Pi‑Hole 安裝腳本讓其在 `wg0` 介面上運作,透過新增 UFW 規則開放 53 ( DNS ) 與 80 ( HTTP ) 埠供 VPN 內裝置查詢與管理。為避免上游 DNS 洩露查詢隱私,他再配置 Unbound 遞迴 DNS,調整成在本機 
127.0.0.1 : 5353 埠提供解析,Pi‑Hole 則改以此為唯一上游。完成後可執行 DNS 泄漏測試確認所有查詢只透過 VPS 傳出。
文中也介紹如何以 `qrencode` 將裝置組態轉成 QR Code 供 Android 或 iOS 版 WireGuard 掃描導入,並說明在行動端調整 `AllowedIPs` 以排除家用區段 192.168.x.x,確保同時能連回家中的伺服器資源。他透過 Pi‑Hole 的 Local DNS 功能設定本地與出外對應的網域名稱,如 `emby.home.server` 與 `emby.travel.server`,並增加防火牆轉送規則讓 VPN 使用者可從任何地點存取。最後使用 `iperf3` 進行速度測試與效能調整,提供從 10 Mbps 到 300 Mbps 間的實測結果。作者結語建議若認同此做法,可捐助 WireGuard、Pi‑Hole、Unbound 等開源專案,並指出此自架方案僅需約每月 10 美元即可涵蓋多裝置且完全自主可控。
Hacker News 討論區延伸了多樣經驗分享。部分讀者指出僅憑 Unbound 使用阻擋清單即可,無需 Pi‑Hole;作者回應自己選用 Pi‑Hole 主因是其具備圖形化介面與便利的本地 DNS 管理。也有使用者推薦改採 AdGuard Home,認為其介面較現代、IPv6 支援較佳;另一些人則說明 Pi‑Hole 6.X 在某些 Raspberry Pi 型號上會因效能問題導致全網緩慢。另有意見認為不必啟用完整 VPN,只需暴露 AdGuardHome 的 DNS‑over‑TLS (TCP 853 埠) 即可在 Android 設定「Private DNS」達成長期去廣告,而使用 WireGuard 反而耗電。也有人更青睞商業服務 NextDNS,指出每年約 20 美元即可省去維運、兼顧家人使用便利。另幾篇留言提到 WireGuard 協定在部分地區容易被偵測封鎖,需要額外混淆層才能繞過。
作者在討論中補充,他評估過 AdGuardHome 與 docker-compose 等封裝方案,但仍偏好以 OS 層級配置以便學習;VPN 是整體架構核心,其餘功能再附加。他也提到曾考慮其他自架網狀網路如 Headscale 與 Nebula,但目前聚焦於原始 WireGuard 實作以更理解運作機制。整體上,多數留言肯定他撰文清晰、細部指令完整,對想建立自營 VPN 與廣告過濾服務的使用者而言是一份可直接操作的實務指南。
👥 
15 則討論、評論 💬
https://news.ycombinator.com/item?id=45552049