為什麼在 OpenWrt 上使用 TUN 透明代理?
若你已在 Windows 或 macOS 上安裝 Clash Verge Rev、Mihomo Party 等客戶端,每台裝置都要單獨開啟 TUN、匯入訂閱,維護成本很高。把 Mihomo(原 Clash Meta 核心)部署在 OpenWrt 路由器上,則能讓全屋裝置——手機、平板、智慧電視、遊戲主機——在無需安裝任何代理 App 的前提下,自動走同一套分流規則與節點策略。
路由器端的「透明代理」有兩種主流實作:Redir-Host(依賴 iptables/nftables 轉發)與 TUN 模式(建立虛擬網卡,在 IP 層接管流量)。TUN 能更完整地處理 TCP 與 UDP,對遊戲、視訊通話、DNS 查詢等場景相容性更好,也是 OpenClash 近年預設推薦的全屋方案。本文以 OpenClash + Mihomo 核心 為主線,說明從硬體準備到 DNS 防洩漏的完整配置流程。
硬體與韌體環境準備
OpenClash 搭配 TUN 模式對路由器資源有一定要求。記憶體不足時,核心可能反覆崩潰,表現為「網路時好時壞」或 LuCI 無回應。部署前請先確認下列條件:
| 項目 | 最低建議 | 說明 |
|---|---|---|
| RAM | 256 MB 以上 | 128 MB 僅適合精簡訂閱與 Redir 模式,TUN 易 OOM |
| Flash / 儲存 | 剩餘 30 MB+ | 需容納 OpenClash、Mihomo 核心、GeoIP/GeoSite 資料庫 |
| CPU 架構 | x86_64 / aarch64 / armv8 等 | 下載核心時必須與架構完全一致 |
| 韌體 | 官方或社群 OpenWrt 23.05+ | 需支援 TUN 模組(kmod-tun)與 nftables/iptables |
常見可玩 OpenClash 的機型包括 x86 軟路由(如 N100 小主機)、R4S/R5S、GL.iNet 部分型號、Redmi AX6000 刷機版等。刷機前請備份原廠韌體,並確認你的 ISP 撥號方式(PPPoE、DHCP、靜態 IP)在 OpenWrt 上可正常連線。
- 刷入或升級至穩定版 OpenWrt,完成 WAN 上網與 LAN DHCP 設定。
- SSH 登入路由器,執行
opkg update,確認可正常下載套件。 - 安裝 TUN 核心模組:
opkg install kmod-tun(部分韌體已內建)。 - 若使用軟路由,建議將 DNS 與 DHCP 服務集中在 OpenWrt 本機,避免下游裝置使用外部 DNS 造成洩漏。
安裝 OpenClash 與 Mihomo 核心
OpenClash 是 OpenWrt 上最成熟的 Clash 系 LuCI 外掛,支援訂閱更新、策略組圖形化、TUN/Redir 切換與日誌檢視。安裝方式依你的韌體來源略有不同,常見流程如下:
- 下載與你 OpenWrt 版本、架構相符的
luci-app-openclash與依賴 ipk 套件(通常包含 clash 核心管理腳本)。 - 在 LuCI「系統 → 軟體包」上傳並安裝,或透過
opkg install從自訂軟體源安裝。 - 重新整理 LuCI,左側選單應出現 服務 → OpenClash。
- 進入 OpenClash「插件設定 → 版本更新」,選擇 Mihomo(Meta)核心,下載與 CPU 架構對應的最新穩定版。
- 同步更新 GeoIP Database、GeoSite Database 與 Country.mmdb,供
GEOIP,CN等規則使用。
除 OpenClash 外,進階使用者也可在 OpenWrt 上直接部署 Mihomo 二進位 + init 腳本,但需自行處理 LuCI、訂閱轉換與 TUN 路由,維護成本較高。對多數家庭使用者,OpenClash 的圖形介面與社群文件更適合入門。
匯入訂閱與基礎設定
OpenClash 支援 Clash 格式訂閱連結(YAML 或 Base64 訂閱)。在「配置訂閱」頁新增訂閱 URL,設定自動更新間隔(建議 24 小時),並點選「更新配置」拉取節點與規則。
- 在「配置檔案管理」中,將剛更新的訂閱設為預設配置。
- 確認「運行模式」預設為規則模式(Rule),避免長期全域代理拖慢國內流量。
- 在「覆寫設定」中可追加自訂規則或策略組,無需直接編輯遠端訂閱(更新時不會被覆蓋)。
- 首次啟動前,在「調試日誌」等級設為
info,便於排查啟動失敗原因。
訂閱品質直接影響全屋體驗:節點過多會增加記憶體占用與 url-test 負擔;規則不完整可能導致國內網站繞道變慢。若訂閱已內建 GEOIP,CN,DIRECT 與 MATCH,Proxy,多數場景可直接使用;否則請在下一節配合覆寫補齊。
# 覆寫範例:在 OpenClash「覆寫設定 → 規則設定」追加
rules:
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- GEOIP,CN,DIRECT
- MATCH,Proxy
規則語法與匹配優先順序的詳細說明,可參考本站《Clash 規則組精講:DOMAIN / GEOIP / MATCH 完整語法詳解》。
啟用 TUN 模式與透明代理
完成訂閱匯入後,核心步驟是將 OpenClash 的運行模式從 Redir-Host 切換為 TUN 模式,並啟用透明代理,使閘道後的所有裝置流量進入 Mihomo 隧道。
- 進入 OpenClash「插件設定 → 模式設定」,將運行模式選為 TUN 模式(或 Fake-IP + TUN,依版本文案略有不同)。
- 啟用 透明代理(部分版本稱「Redirect/透明代理」),確保 LAN 側流量被導向 Mihomo。
- 確認
auto-route、auto-detect-interface等 TUN 相關選項已開啟(OpenClash 預設通常已勾選)。 - 在「DNS 設定」中啟用本地 DNS 劫持,防止客戶端使用 8.8.8.8 等外部 DNS 繞過分流。
- 儲存設定後,點選「重啟 OpenClash」,觀察日誌是否出現
tun0或類似 TUN 介面建立成功的訊息。
TUN 配置在 Mihomo YAML 中大致對應如下片段(OpenClash 會自動生成,僅供理解原理):
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
啟動成功後,在 LuCI「狀態 → OpenClash」或「連線」頁可看到即時連線與命中規則。此時將手機 Wi‑Fi 的 DNS 設為「自動(路由器分配)」,即可測試是否無需客戶端即可存取海外網站。
DNS 與防洩漏配置
路由器透明代理最常見的問題不是「節點連不上」,而是 DNS 洩漏:網頁能開,但 DNS 查詢仍走 ISP,導致分流失效或隱私暴露。Mihomo 在 TUN 模式下通常配合 fake-ip 模式使用,以加快解析並強制流量進入核心。
建議在 OpenClash DNS 設定中確認:
- 運行模式:fake-ip(多數家庭場景)或 redir-host(部分內網應用需真實 IP 時)。
- nameserver:國內 DNS(如運營商 DNS 或 223.5.5.5)解析國內域名。
- fallback:海外 DNS(如 tls://1.1.1.1)解析被牆或國外域名。
- fake-ip-filter:加入
*.lan、*.local、+.stun.*.*等,避免內網與 STUN 被誤解析。 - 啟用 IPv6 相關選項時,需同時配置
ipv6: true與對應直連規則,否則可能從 IPv6 側洩漏。
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- tls://1.1.1.1
- tls://8.8.8.8
fake-ip-filter:
- '*.lan'
- '*.local'
- '+.stun.*.*'
驗證 DNS 是否洩漏:在連上路由器 Wi‑Fi 的裝置上,造訪 DNS 洩漏測試網站(搜尋 "DNS leak test"),確認顯示的 DNS 伺服器為你配置的 fallback 或路由器本機,而非 ISP 預設 DNS。
分流規則與策略組優化
全屋 TUN 若長期使用全域模式,國內影片、網銀、政府網站也會繞道,延遲與頻寬浪費明顯。應以規則模式為主,讓 GEOIP,CN 與常用國內域名直連,僅海外或被封域名走代理。
策略組方面,可保留訂閱內建的「自動選擇」「手動選擇」,並視需要新增 url-test 組供串流或遊戲使用。路由器 CPU 較弱時,應拉長 url-test 間隔(如 600 秒),避免頻繁測速佔滿 CPU。
| 流量類型 | 建議策略 | 範例規則 |
|---|---|---|
| 區網裝置 | DIRECT | IP-CIDR,192.168.1.0/24,DIRECT |
| 中國大陸 IP | DIRECT | GEOIP,CN,DIRECT |
| 海外串流 | 指定策略組 | DOMAIN-SUFFIX,netflix.com,Proxy |
| 其餘 | 訂閱預設組 | MATCH,Proxy |
若希望「僅部分裝置走代理」,可在 OpenClash 中使用按 IP/MAC 分流(依版本支援程度),或在交換機下掛第二台不跑代理的路由器作為國內專線。進階場景亦可用 SRC-IP-CIDR 規則指定來源 IP 段。
遊戲主機、主機平台若需低延遲,可參考站內《Clash 遊戲加速配置教學》中的 url-test 與 UDP 友善協定選擇思路,在 OpenClash 覆寫中為特定遊戲網域單獨指定策略組。
驗證、效能調優與故障排除
完成配置後,建議依下列清單逐項驗證,避免「OpenClash 顯示運行中但實際未代理」:
- 路由器本機與 LAN 裝置均可正常上網,且海外測試站可存取。
- DNS 洩漏測試通過,未出現 ISP DNS。
- 區網 NAS、印表機、Chromecast 等內網服務仍可發現與連線。
- OpenClash 日誌無持續
out of memory或核心 panic。 - CPU 占用在 idle 時低於 30%(視機型而定);若長期飽和,減少節點數或關閉不必要的日誌等級。
常見故障與處理:
- 啟動後全網斷線:檢查 TUN 路由是否與 PPPoE 介面衝突;暫時改回 Redir 模式排查,或更新 Mihomo 核心至最新版。
- 僅部分 App 無法連線:可能是 fake-ip 與該 App 不相容,嘗試切換 redir-host 或將相關域名加入 fake-ip-filter。
- 訂閱更新後規則失效:覆寫設定是否仍生效;勿直接覆蓋本地覆寫檔。
- 記憶體不足:關閉 LuCI 統計、減少 GeoSite 資料庫大小、改用精簡訂閱或外接 USB 根目錄存放核心。
相較僅在單機安裝商業「一鍵加速器」,在 OpenWrt 上運行 Clash / Mihomo + OpenClash 的優勢在於:全屋裝置零配置、規則與 DNS 完全自主、訂閱可與桌面客戶端共用同一連結,且核心開源、行為可審計。對需要長期穩定全屋分流的家庭或小型辦公室,這套方案的可維護性與擴展性明顯更好。
常見問題
OpenClash 與 PassWall、ShellCrash 該選哪個?
PassWall、ShellCrash 等外掛各有支援的核心與 UI 邏輯。若你已熟悉 Clash 訂閱與規則語法,或需在 PC 與路由器間共用同一套 YAML 邏輯,OpenClash 遷移成本最低。若訂閱為 SSR/V2Ray 原生格式為主,則需先確認轉換工具鏈是否穩定。
能否只用 Mihomo 不用 OpenClash?
可以,但需自行撰寫 init 腳本、處理開機啟動、訂閱轉換與 LuCI 缺失。除非你有 Linux 維運經驗,否則 OpenClash 大幅降低出錯機率。
TUN 模式下還需要設定客戶端代理嗎?
正常情況下不需要。連上路由器 Wi‑Fi 的裝置應關閉自身 VPN/代理 App,避免雙重隧道。若某 App 強制使用 DoH,可能繞過 53 埠劫持,需按前文 DNS 段落處理。
協定選擇有什麼建議?
路由器 CPU 較弱時,可優先 Trojan、Shadowsocks 等負載較低的協定;Hysteria2、REALITY 等較新協定需確認 Mihomo 核心版本與訂閱支援。協定對比可參考《Shadowsocks vs Trojan vs VLESS 協定對比》。