為什麼需要 TUN:從「應用程式願不願讀代理」談起

多數人第一次接觸 Clash 類工具,會從「系統代理」開始:開啟後,瀏覽器與支援讀取作業系統代理設定的程式,會自動把 HTTP 與 HTTPS 流量送到本機的混和埠。這條路徑簡單、相容性高,但有一個根本限制:它只約束願意配合的應用程式。遊戲用戶端、某些桌面背景服務、未繼承環境變數的指令列工具,或刻意忽略系統代理的網路堆疊,仍可能直接對外連線。

TUN(常與 TAP 一併被討論,泛指使用者空間透過虛擬網路介面承接流量的一類方案)想把這個缺口補起來:在更接近作業系統網路堆疊的位置建立一個「虛擬網卡」,讓符合條件的封包先進入 Clash/Mihomo 的處理管線,再走你設定檔裡的規則。視環境而定,這會比單純依賴系統代理更接近直覺上的整機覆蓋,但專業上仍應理解成在權限與路由可達的範圍內盡量涵蓋,而不是魔法般地繞過所有安全機制。

本文聚焦於搭載 Mihomo(社群維護的 Clash 相容核心)的現代用戶端,例如桌面上的 Clash Verge Rev。核心版本過舊或停更的分支,可能在 TUN、DNS、或新式傳輸上缺席,實務上會比「會不會按開關」更早踩到相容性瓶頸。

先釐清幾個關鍵觀念

系統代理、TUN 與「全域模式」不是同一件事

新手常把三者混在一起:系統代理是應用層讀設定;TUN是介面層/路由層的導流;而全域/規則/直連則是 Clash 在內部如何挑選策略群組與節點的模式。換句話說,你可以「規則模式 + TUN」作為日常組合:外面看起來像整機覆蓋,但內部仍應保留對區網、本機服務、或本地 CDN 的直連判斷。

fake-ip、redir-host 與 DNS 的一致性

啟用 TUN 後,DNS 行為對體感影響被放大。若設定檔採 fake-ip,網域名稱可能在客戶端被映射到虛構位址,再由內部邏輯還原真實目標;若與上層 DNS、或某些硬編碼 DoH 的應用程式互動不佳,會出現「網站偶發打不開」「第一次連線特別慢」等症狀。實務上要先確認 dns 區塊、tun 區塊、以及 rules 對特定網域是否有額外策略,避免三邊各說各話。

權限與安全邊界

TUN 能改寫路由,代表它也扮演高影響力的網路元件。請只使用你可稽核來源的用戶端與設定檔,並對來路不明的「一鍵最佳化」腳本保持警戒。Windows 的 UAC 提示、macOS 的隱私權對話框、以及企業環境下的行動裝置管理政策,都是在提醒:這種能力必須被有意識地授權。

什麼情境值得預設開啟 TUN?

  • 你需要讓不讀系統代理的程式也遵循同一套規則,例如特定遊戲啟動器、研發用的容器工具、或自帶網路堆疊的桌面應用。
  • 你的工作流大量依賴 UDP非 HTTP 協定,而僅開系統代理時路徑不一致。
  • 你希望減少「某些程式偷偷直連」造成的洩漏感,並願意付出維護規則與排除項的成本。

若你僅需要瀏覽器順暢上網、且所有工具都乖乖讀系統代理,則不一定非得常駐 TUN。每多一層轉送,就多一層與本機防火牆、其他 VPN、或公司零信任客戶端互動的複雜度。

Windows:從權限到開關的實務順序

  1. 確認使用的是內建或外掛足夠新的 Mihomo 核心,並已匯入有效的訂閱設定檔。
  2. 以一般身分啟動用戶端,先完成基本連線測試(規則模式 + 系統代理)。
  3. 進入設定頁啟用 TUN。若出現 UAC 提示,代表系統要求提升權限以建立虛擬介面,請審慎確認程式來源後再同意。
  4. 若你希望開機自動套用,請同步檢視「以系統管理員身分啟動」或官方文件提及的服務模式選項;否則每次重開機可能只做到一半初始化。
  5. 啟用後檢查工作管理員中的網路介面名稱是否與用戶端描述一致,並用瀏覽器與一個「不讀代理」的小工具交叉驗證。
與第三方防毒或公司資安代理並存時,驅動層級的網路過濾可能與 TUN 爭奪封包順序。若出現大範圍斷線,先暫停其中一個方案並記錄時間點,會比盲目重裝更有效。

macOS:注意架構、簽章與本地安全策略

  1. 優先從可驗證的發行頻道取得 .dmg 或壓縮包,避免中間被替換二進位。
  2. Apple Silicon 與 Intel 的套件不同,選錯通常直接無法啟動或無法載入網路延伸。
  3. 首次啟用 TUN 相關能力時,系統可能要求授權「網路」或「在背景監聽」類權限;請在「系統設定 → 隱私權與安全性」逐項確認。
  4. 若你同時使用公司 VPN,請先閱讀 IT 政策:分裂隧道(split tunnel)被關閉時,強制全量導向公司閘道,與本機 TUN 的預期往往衝突。

設定檔裡和 TUN 相關的要點(概念級)

實際鍵名與預設值會隨核心版本演進;以下範例僅協助你與文件對照,而非鼓勵直接複製到生產環境:

tun:
  enable: true
  stack: mixed
  auto-route: true
  strict-route: false
  dns-hijack:
    - any:53
  • stack 決定資料平面走哪種系統介面組合,錯置會影響相容性與 CPU 占用。
  • auto-routestrict-route 左右路由注入的積極程度;過於激進可能誤導本地子網路流量。
  • dns-hijack 用於把送往指定埠的 DNS 查詢導回堆疊內處理,與 fake-ip 搭配時要特別避免閉環。

多數商業訂閱會附帶已調整過的預設;若你自行維護,請將變更寫在可追蹤的覆寫檔,而不是直接竄改供應商每次更新的母檔,否則更新一來一往容易把客製化沖掉。

Android 與 Linux:對照理解即可

在 Android 上,常見 Clash 類用戶端會透過系統的 VPN 權限建立通道,本質上是把流量導入手機上的本機服務,效果接近桌面 TUN 想達成的覆蓋。差別在於行動裝置對背景連線、電池最佳化、以及「分應用程式 VPN」是否可用,會顯著影響你要怎麼設排除項。

Linux 桌面則高度依賴發行版與桌面環境;除圖形用戶端外,也有人以 systemd 與指令列核心組合達成自動啟停。若你是在伺服器上操作,請勿在不了解影響面的情況下啟用可能改寫預設路由的選項,以免鎖死遠端管理路徑。

怎麼驗證「真的走進規則管線」?

  1. 在用戶端日誌觀察連線條目:命中哪條規則、走哪個策略、延遲與重試行為為何。
  2. 準備一個已知會忽略系統代理的程式,在開啟/關閉 TUN 時比對對外行為是否一致。
  3. 對照 GEOIPDOMAIN-SUFFIXIP-CIDR 的優先順序,確認沒有「過寬的兜底」把你的區網或內網位址推進代理。
把「可重現的最小測試」寫進筆記:例如固定三個網域、兩個 UDP 服務、一個本機 API 端點。每次調整 TUN 或 DNS 只改一個變因,你能更快定位是規則、DNS,還是權限問題。

常見問題與有節奏的排查

症狀:一開 TUN 全網斷線

先降級為系統代理確認訂閱與節點本身可用,再把 strict-route、自訂路由表、或第三方防火牆規則列成檢查清單逐項暫停。多數是全量默認路由與公司側閘道互相打架,而非節點瞬間失效。

症狀:只有特定網域異常

優先檢查 DNS 模式與對應規則;再看看該網域是否被供應商規則誤判、或你的覆寫檔加入錯誤的 IP-CIDR。若只在某瀏覽器發生,也要懷疑瀏覽器自建 DoH 與 fake-ip 的互動。

症狀:延遲飆高或 CPU 居高不下

觀察是否啟用了過於耗費的協定或重試策略,並檢查 TUN stack 與驅動是否匹配。硬體層面老舊裝置在混合堆疊上確實可能吃力,必要時回到較保守的 stack 設定進行 A/B 測試。

在「覆蓋率」與「可維護性」之間取得平衡

市面上不乏主打一鍵全域的商業工具,但長期使用時,真正決定體驗的是:核心是否跟上新協定規則是否可被理解与迭代、以及社群是否能快速回應安全性議題。一些封閉方案把細節藏在黑盒子裡,短期好像省事,卻讓你在 DNS 異常、與公司 VPN 衝突、或需要審計連線路徑時無從下手。

相較之下,Clash 生態的價值在於把可讀的規則與清晰的分流語意放在首位:你能在同一套設定裡兼顧直連、代理與拒絕,必要時再透過 TUN 把範圍往系統層推進。若你正在挑選長期方案,建議優先評估持續整合 Mihomo更新節奏穩定、且來源可稽核的用戶端;把工具與設定檔放在你可掌控的邊界內,比追逐誇張口號務實得多。本站整理的 多平台下載頁以可取得性為優先,讓你能先完成安裝,再從容把 TUN、DNS 與規則微調到適合日常工作的狀態。

免費下載 Clash 用戶端,建立可稽核的系統級分流環境 →