
Pi-hole 為何漏攔?IPv6 DNS 繞過的檢查與修正
XDA Developers 一名作者發現,家中 Pi-hole 的 IPv4 設定雖然正常,但啟用 IPv6 後,部分裝置可直接使用路由器提供的 IPv6 DNS,令廣告及追蹤網域查詢未經 Pi-hole。這不是 Pi-hole 漏洞,也不是攻擊事件;問題在於裝置取得 DNS 設定的路徑多了一條,而 Pi-hole 儀表板只會記錄實際到達它的查詢。
這個情況對使用雙協定網絡、以 Pi-hole 作家居 DNS 過濾的用戶尤其值得留意。不過,報道是單一作者個案,實際結果會受路由器的 IPv6 模式及各作業系統的 DNS 選擇邏輯影響,不能據此假定所有啟用 IPv6 的網絡均有同樣問題。
IPv4 設定正確,為何仍會繞過?
一般 Pi-hole 設定會讓路由器的 IPv4 DHCP 向裝置派發 IP 位址、閘道及 Pi-hole 的 DNS 位址。只要裝置只使用這組 DNS,查詢便會經過 Pi-hole。
但在 IPv6 下,路由器可透過 Router Advertisement(RA) 宣告網絡前綴,並以 RDNSS 選項附帶 DNS server;也可經 DHCPv6 派發 DNS,或兩者並用。消費級路由器有時會把自己、常見為 fe80 開頭的 link-local IPv6 位址,宣告為 DNS server。
結果是同一部裝置可能同時持有兩個 resolver:IPv4 的 Pi-hole,以及 IPv6 的路由器。若裝置把某次查詢交給路由器,路由器內置的 DNS forwarder 便會向其上游 DNS 查詢,過程不會經過 Pi-hole 的封鎖名單。重點不在 Pi-hole 能否處理 IPv6,而在 DNS 查詢最初被送往哪一部機器。
為何只有部分裝置受影響?
RDNSS 與 DHCPv6 的支援和優先次序因平台而異。XDA 指出,Android 長期依賴 RDNSS 取得 IPv6 DNS;Windows 支援 RDNSS,但同時收到兩種設定時仍偏向 DHCPv6 提供的 server。Apple 平台和 Linux 發行版亦各有行為差異。
因此,路由器若只以 stateless DHCPv6 派發 DNS,Android 手機未必取得 IPv6 resolver,Windows 電腦則可能取得;若改用 RDNSS,手機也可能開始使用路由器 DNS。這亦解釋了為何 Pi-hole 圖表仍有流量、看似一切正常,實際上卻只有部分裝置漏過過濾。
怎樣驗證 DNS 流向
先在 Pi-hole 的 Clients 頁面,對照已連接家居網絡的裝置。若某部常用裝置沒有出現,或其查詢量明顯不合理,便在該裝置檢視 DNS 設定:
- Windows:
ipconfig /all - macOS:
scutil --dns - Linux:
resolvectl status
若除了 Pi-hole 位址外,還看到 fe80 開頭的 IPv6 位址或 ISP 的 IPv6 DNS,便表示該裝置可能有另一條 DNS 路徑。這只能確認設定層面存在繞過可能;要判斷某一查詢實際走哪條路,仍須按裝置與路由器的行為進一步核對。
修正方向:保留 IPv6,或停止派發另一個 DNS
希望繼續使用 IPv6 的用戶,較直接的做法是為 Pi-hole 配置穩定的 IPv6 位址,然後在路由器的 IPv6 設定中,讓 RA/RDNSS 或 DHCPv6 宣告該 Pi-hole 位址為 DNS,而非路由器本身。
若家中沒有需要 IPv6 的服務,XDA 作者的替代做法是直接在路由器停用 IPv6。這能移除 IPv6 DNS 這條額外路徑,但代價是放棄 IPv6 連線能力,較適合已確認沒有相關需求的網絡。
此外,IPv6 並非唯一可避過 Pi-hole 的方法。來源亦提到 DNS-over-HTTPS 及內置公開 DNS 的裝置都可能造成類似盲點。對家居網絡而言,下一步值得觀察的是路由器介面是否能清楚顯示並分別控制 RA、RDNSS 與 DHCPv6 的 DNS 宣告;這會比只檢查 IPv4 DHCP 設定更能反映 Pi-hole 的實際覆蓋範圍。
延伸閱讀
AI 輔助說明: 本文由 AI 協助整理,並經兩輪獨立自動品質審核;資料及連結仍以原始來源為準。
參考來源
- XDA Developers — I thought Pi-hole was blocking everything on my network, but IPv6 was letting half my devices walk straight past it — original report
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。




