為什麼在 OpenWrt 上使用 TUN 透明代理?

若你已在 Windows 或 macOS 上安裝 Clash Verge RevMihomo Party 等客戶端,每台裝置都要單獨開啟 TUN、匯入訂閱,維護成本很高。把 Mihomo(原 Clash Meta 核心)部署在 OpenWrt 路由器上,則能讓全屋裝置——手機、平板、智慧電視、遊戲主機——在無需安裝任何代理 App 的前提下,自動走同一套分流規則與節點策略。

路由器端的「透明代理」有兩種主流實作:Redir-Host(依賴 iptables/nftables 轉發)與 TUN 模式(建立虛擬網卡,在 IP 層接管流量)。TUN 能更完整地處理 TCP 與 UDP,對遊戲、視訊通話、DNS 查詢等場景相容性更好,也是 OpenClash 近年預設推薦的全屋方案。本文以 OpenClash + Mihomo 核心 為主線,說明從硬體準備到 DNS 防洩漏的完整配置流程。

與單機 TUN 的差異:桌面客戶端的 TUN 只影響本機;OpenWrt TUN 作為閘道,所有經過路由器的流量都會被 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 上可正常連線。

  1. 刷入或升級至穩定版 OpenWrt,完成 WAN 上網與 LAN DHCP 設定。
  2. SSH 登入路由器,執行 opkg update,確認可正常下載套件。
  3. 安裝 TUN 核心模組:opkg install kmod-tun(部分韌體已內建)。
  4. 若使用軟路由,建議將 DNS 與 DHCP 服務集中在 OpenWrt 本機,避免下游裝置使用外部 DNS 造成洩漏。
風險提示:刷機可能導致裝置保固失效。請僅在了解恢復方式的前提下操作,並遵守當地法律法規與服務條款。

安裝 OpenClash 與 Mihomo 核心

OpenClash 是 OpenWrt 上最成熟的 Clash 系 LuCI 外掛,支援訂閱更新、策略組圖形化、TUN/Redir 切換與日誌檢視。安裝方式依你的韌體來源略有不同,常見流程如下:

  1. 下載與你 OpenWrt 版本、架構相符的 luci-app-openclash 與依賴 ipk 套件(通常包含 clash 核心管理腳本)。
  2. 在 LuCI「系統 → 軟體包」上傳並安裝,或透過 opkg install 從自訂軟體源安裝。
  3. 重新整理 LuCI,左側選單應出現 服務 → OpenClash
  4. 進入 OpenClash「插件設定 → 版本更新」,選擇 Mihomo(Meta)核心,下載與 CPU 架構對應的最新穩定版。
  5. 同步更新 GeoIP DatabaseGeoSite DatabaseCountry.mmdb,供 GEOIP,CN 等規則使用。

除 OpenClash 外,進階使用者也可在 OpenWrt 上直接部署 Mihomo 二進位 + init 腳本,但需自行處理 LuCI、訂閱轉換與 TUN 路由,維護成本較高。對多數家庭使用者,OpenClash 的圖形介面與社群文件更適合入門。

若你尚未熟悉 Clash 訂閱格式,可先閱讀站內 Clash 完全使用指南,了解訂閱 URL、協定類型與規則模式後,再回到路由器端部署。

匯入訂閱與基礎設定

OpenClash 支援 Clash 格式訂閱連結(YAML 或 Base64 訂閱)。在「配置訂閱」頁新增訂閱 URL,設定自動更新間隔(建議 24 小時),並點選「更新配置」拉取節點與規則。

  1. 在「配置檔案管理」中,將剛更新的訂閱設為預設配置
  2. 確認「運行模式」預設為規則模式(Rule),避免長期全域代理拖慢國內流量。
  3. 在「覆寫設定」中可追加自訂規則或策略組,無需直接編輯遠端訂閱(更新時不會被覆蓋)。
  4. 首次啟動前,在「調試日誌」等級設為 info,便於排查啟動失敗原因。

訂閱品質直接影響全屋體驗:節點過多會增加記憶體占用與 url-test 負擔;規則不完整可能導致國內網站繞道變慢。若訂閱已內建 GEOIP,CN,DIRECTMATCH,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 隧道。

  1. 進入 OpenClash「插件設定 → 模式設定」,將運行模式選為 TUN 模式(或 Fake-IP + TUN,依版本文案略有不同)。
  2. 啟用 透明代理(部分版本稱「Redirect/透明代理」),確保 LAN 側流量被導向 Mihomo。
  3. 確認 auto-routeauto-detect-interface 等 TUN 相關選項已開啟(OpenClash 預設通常已勾選)。
  4. 在「DNS 設定」中啟用本地 DNS 劫持,防止客戶端使用 8.8.8.8 等外部 DNS 繞過分流。
  5. 儲存設定後,點選「重啟 OpenClash」,觀察日誌是否出現 tun0 或類似 TUN 介面建立成功的訊息。

TUN 配置在 Mihomo YAML 中大致對應如下片段(OpenClash 會自動生成,僅供理解原理):

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
注意:TUN 會改寫系統路由表。若同時運行 WireGuard、ZeroTier 或其他 VPN,可能發生路由衝突。建議先單獨測試 OpenClash TUN,確認穩定後再疊加其他隧道。

啟動成功後,在 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。

若智慧電視或遊戲主機硬編碼使用 Google DNS,可在 OpenClash 中啟用「禁止客戶端使用非指定 DNS」或透過 firewall 將 53 埠 Redirect 至本機,具體選項名稱依 OpenClash 版本而異。

分流規則與策略組優化

全屋 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 顯示運行中但實際未代理」:

  1. 路由器本機與 LAN 裝置均可正常上網,且海外測試站可存取。
  2. DNS 洩漏測試通過,未出現 ISP DNS。
  3. 區網 NAS、印表機、Chromecast 等內網服務仍可發現與連線。
  4. OpenClash 日誌無持續 out of memory 或核心 panic。
  5. 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 協定對比》。

立即免費下載 Clash,開啟流暢上網新體驗 →