快轉到主要內容
  1. 文章列表/

【2025 香港家庭】用 OpenWRT 強制 Pi-hole 封鎖 8.8.8.8,列印機 mDNS 救星

·
Site部大開發 pihole openwrt dns封鎖 mdns 香港家庭網路
目錄
Pi-hole去廣告 - 本文屬於一個選集。
§ 2: 本文
# 如何強制所有本地流量經過 Pi-hole:OpenWRT 進階設定

> **前文提要**:你已在本機網路(Raspberry Pi 或容器)安裝好 Pi-hole。  
> 本文以 **OpenWRT** 路由器為例,教你 **強制** 所有裝置 DNS 查詢 **必須** 經過 Pi-hole,杜絕繞過、廣告漏網。

---

## 為什麼要「強制」所有流量經過 Pi-hole?

| 優勢 | 說明 |
|------|------|
| **100% 廣告攔截** | 即使裝置手動設 8.8.8.8,也無法繞過 |
| **統一管理黑名單** | 所有裝置共用 Pi-hole 規則 |
| **防止 DNS 洩漏** | 避免 ISP 或第三方追蹤 |
| **家庭網路安全** | 封鎖惡意域名、釣魚網站 |

> **目標**:`scutil --dns` 顯示 Pi-hole IP,應用程式無法直連外部 DNS。

---

## 基礎設定:讓 Pi-hole 成為唯一 DNS 來源

### 1. OpenWRT DHCP 設定(最重要!)

```bash
# 登入 OpenWRT LuCI
網路 > 介面 > LAN > 編輯 > DHCP 伺服器 > 進階設定



# DHCP 選項
DNS 伺服器:192.168.1.53     # 你的 Pi-hole IP
# 若需填兩個:192.168.1.53 192.168.1.53

如果 OpenWRT 強制要求兩個 DNS?
→ 兩個都填 192.168.1.53
→ 避免備援 DNS 變成洩漏點


2. Pi-hole 本地 DNS 設定(封鎖外部 DNS 直連)
#

在 Pi-hole Web 介面:

設定 > DNS > Local DNS Records

新增以下項目:

# 域名          IP 位址
1.1.1.1       0.0.0.0
8.8.8.8       0.0.0.0
8.8.4.4       0.0.0.0
9.9.9.9       0.0.0.0
dns.google    0.0.0.0

為什麼用 0.0.0.0 而不是 Pi-hole 本身 IP?
#

選項 結果
0.0.0.0 查詢失敗 → 裝置學會「不要再問」
192.168.1.53 無限迴圈 → Pi-hole 再問自己 → 延遲、崩潰

0.0.0.0 = 黑洞,最安全、最有效


命令列方式(不進 Web 介面)
#

# SSH 進 Pi-hole
sudo nano /etc/pihole/local.list

# 加入以下內容
0.0.0.0 1.1.1.1
0.0.0.0 8.8.8.8
0.0.0.0 8.8.4.4
0.0.0.0 9.9.9.9
0.0.0.0 dns.google

# 重新載入
pihole restartdns

進階:OpenWRT 防火牆強制所有 DNS 走 Pi-hole
#

OpenWRT 使用 nftables / iptables
封鎖所有非 Pi-hole 裝置發送的 DNS(port 53)請求

防火牆規則(LuCI)
#

# 網路 > 防火牆 > 流量規則

規則 1:允許 Pi-hole 發送 DNS
#

名稱:Allow Pi-hole DNS
來源區域:lan
來源位址:192.168.1.53
目的區域:wan
目的端口:53
協定:tcp, udp
動作:接受

規則 2:封鎖其他裝置發送 DNS
#

名稱:Block External DNS
來源區域:lan
來源位址:192.168.1.0/24
目的區域:wan
目的端口:53
協定:tcp, udp
動作:拒絕

拖動規則:允許 Pi-hole 在最上面!


命令列方式(/etc/config/firewall
#

# SSH 進 OpenWRT
vi /etc/config/firewall

# 加入以下區塊
config rule
    option name 'Allow Pi-hole DNS'
    option src 'lan'
    option src_ip '192.168.1.53'
    option dest 'wan'
    option dest_port '53'
    option proto 'tcp udp'
    option target 'ACCEPT'

config rule
    option name 'Block External DNS'
    option src 'lan'
    option src_ip '192.168.1.0/24'
    option dest 'wan'
    option dest_port '53'
    option proto 'tcp udp'
    option target 'DROP'

# 重新載入
/etc/init.d/firewall restart

常見問題:列印機無法發現(Printer Error)
#

原因
#

防火牆封鎖了 mDNS(port 5353 UDP) 多播流量

解決:新增 mDNS 例外規則
#

名稱:Allow mDNS
來源區域:lan
來源位址:192.168.1.0/24
目的區域:lan
目的端口:5353
協定:udp
動作:接受

目的區域必須是 lan(避免出 WAN)
目的位址留空或填 224.0.0.251(若支援)


最終驗證(絕對不要用 nslookup!)
#

正確指令(macOS / Linux)
#

# macOS:檢查系統 DNS
scutil --dns | grep -A1 "resolver #1"

# 預期輸出
nameserver[0] : 192.168.1.53



# Linux:檢查 resolv.conf
cat /etc/resolv.conf

# 預期輸出
nameserver 192.168.1.53



# 清除 DNS 快取(macOS)
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder



# 清除 DNS 快取(Linux)
sudo systemd-resolve --flush-caches

總結:你的 Pi-hole 鐵壁防線
#

項目 狀態
OpenWRT DHCP 僅 Pi-hole 192.168.1.53
Pi-hole 本地封鎖 0.0.0.0
防火牆規則 強制 DNS 走 Pi-hole
mDNS 例外 列印機正常
驗證方式 scutil --dns

恭喜!
你已建成 香港最強 Pi-hole 防禦系統
零廣告 · 零洩漏 · 列印機正常

下篇:如何在 iPhone 行動數據使用 Pi-hole 規則(無靜態 IP)


標籤#PiHole #OpenWRT #強制DNS #防火牆 #mDNS #香港網路
作者:米先生 @micyung

---

**@micyung -- 文章已打包成 `pi-hole.md`**  
**直接儲存為 `pi-hole.md` 即可用於 Hugo**  
**今晚不再浪費時間,Pi-hole 鐵壁達成!**

需要我幫你加 **英文版** 或 **iPhone 行動篇**?隨時說。
Pi-hole去廣告 - 本文屬於一個選集。
§ 2: 本文

相關文章

【2025 香港】Raspberry Pi 安裝 Pi-hole 10分鐘教學 + 三大黑名單
Site部大開發 pihole raspberrypi dns封鎖 家庭網路
1password to vaultwarden
Site部大開發 語言模型
Deploy n8n with Nginx using Portainer
Site部大開發 VPN n8n Nginx Portainer