在法國用舊 Raspberry Pi 跑 Pi-hole 當家中 DNS:上游一換就全斷的實測

这篇内容暂时只有 繁體中文 版本,以下是原文。

家裡是 Orange 光纖,Livebox 5,DHCP 發下來的 DNS 一直是 Livebox 自己。我一直覺得這樣看不到查詢紀錄,就把抽屜裡那台 Raspberry Pi 3B 拿出來,插上 8GB 的 SanDisk 卡,裝 Raspberry Pi OS Lite(bookworm, 32-bit),跑 Pi-hole。網路不大,大概十來個裝置(手機、筆電、電視、兩台 NAS),每天查詢量看 dashboard 大約一萬到兩萬次。

做法很直接:Pi 用有線接在 Livebox 的 LAN 口,固定 IP 從路由器那邊綁 MAC 發,避免 Pi 自己設靜態之後和 DHCP 打架。Pi-hole 裝好後我把 upstream 指到 Livebox(192.168.1.1),想說先讓它轉發,不要把上游直接換成 1.1.1.1,這樣至少 Livebox 的 DNS 還能當第一層。查詢介面照預設 53,web 介面留在 80。

真正要動的是 DHCP 的 DNS 欄位。Livebox 5 的管理介面在「網路 → DHCP」裡可以改發給客戶端的 DNS,但那個欄位只吃一個位址,填了 Pi 的 IP 之後,Livebox 自己的 DNS 就等於被繞過。如果只想先試,可以不改路由器,先手動把一兩台裝置的 DNS 指到 Pi,確認穩定再全量。

# /etc/dhcpcd.conf(舊寫法,bookworm 已改用 NetworkManager,這裡只是示意固定 IP)
interface eth0
static ip_address=192.168.1.53/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Pi-hole 端我只改了 upstream:

# Settings → DNS → Upstream DNS Servers
192.168.1.1   # Livebox

為什麼要這樣繞一層:Pi-hole 本身不解析,它只是把查詢轉出去,所以上游一掛,全家的 DNS 就跟著掛。這是我踩到的第一個坑:Livebox 重開或韌體更新時,Pi-hole 的 upstream 會短暫連不上,BFD(blocking)看起來正常,但實際查詢全部 timeout,手機顯示「已連線,無網際網路」。第二個坑是 Pi 3B 的 SD 卡,跑了大概兩個月,某天開機卡在 fsck,整個內網 DNS 直接失效,因為所有裝置都指到它。

邊界很清楚:只要 Pi 斷電、SD 卡壞、或 Livebox 重啟,這套就變成單點故障。我後來在 Pi-hole 上把 upstream 多加一個 1.1.1.1 當備援,並且在 Livebox 的 DHCP 裡保留第二個 DNS 位址(有些韌體版本可以填兩個,我這台只吃一個,所以只能靠裝置自己 fallback)。另一個反例是訪客網路:Livebox 的訪客 SSID 不吃自訂 DNS,走的是隔離網段,Pi-hole 看不到那邊的查詢,這點我一開始沒注意到。

現在這台 Pi 還是跑著,但我已經不把它當唯一 DNS 了。你們在法國用 Livebox 或 Freebox 的時候,是把 Pi-hole 當唯一 DNS,還是會留一台備援?備援是另一台 Pi,還是直接讓路由器當第二個?

0
赞同度 100% · 0 条评论 · 1 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。