Clash TUN 模式與系統代理差異:流量入口、涵蓋範圍與選擇方式

比較兩種流量接管方式的工作層級、應用程式相容性、DNS 處理與權限需求,協助你依常見裝置環境做出選擇。

系統代理和 TUN 模式解決的是同一個入口問題:如何將裝置產生的連線送入 Clash 或 mihomo 核心。兩者都不會直接決定某個網站使用代理還是直連。流量進入核心後,仍須依目前的運作模式、規則集、策略組與節點狀態完成匹配。因此,「啟用 TUN」不等於切換至 Global 全域模式,「啟用系統代理」也不代表所有應用程式都會被接管。

流量入口:系統代理讀取設定,TUN 接收網路封包

系統代理的運作路徑

啟用系統代理時,Clash 用戶端通常會將作業系統的 HTTP、HTTPS 或 SOCKS 代理位址寫入本機回環位址,並指向核心監聽的連接埠。例如核心運作於 127.0.0.1:7890,支援系統代理的瀏覽器或桌面應用程式讀取這項設定後,便會主動將請求交給該連接埠。用戶端關閉系統代理時,則會還原先前的作業系統設定。

這種方式位於應用程式層。應用程式必須讀取系統代理,或明確使用作業系統提供的網路介面,流量才會進入 Clash。常見瀏覽器、辦公軟體與部分桌面用戶端通常可以直接運作;自行實作網路堆疊、忽略代理設定,或只支援特定協定的程式,則可能繼續直接連線。命令列工具也各有差異:有些會讀取環境變數,有些則需要另外指定 HTTP_PROXYHTTPS_PROXY 或 SOCKS 位址。

TUN 模式的運作路徑

TUN 模式會建立虛擬網路介面,並透過系統路由將符合條件的 IP 流量送入該介面。mihomo 核心從虛擬介面讀取網路封包,辨識目標位址與協定,再依規則決定直連、拒絕,或轉送至代理節點。由於入口更接近作業系統網路層,應用程式通常不需要理解 HTTP 或 SOCKS 代理,也不必主動讀取系統代理設定。

因此,TUN 更適合接管遊戲啟動器、終端機程式、部分商店應用程式、使用 UDP 的程式,以及忽略系統代理的桌面軟體。不過,TUN 的涵蓋範圍仍會受到路由表、排除項目、核心協定支援與作業系統限制影響。區域網路網段、預設網卡、虛擬機網卡、容器網路或其他 VPN 都可能改變實際路徑,不能只根據開關狀態判斷是否已完成接管。

四項關鍵差異:涵蓋範圍、協定、DNS 與權限

比較項目 系統代理 TUN 模式
工作層級 應用程式讀取作業系統代理設定後,連線至本機代理連接埠 虛擬網路介面接收經由系統路由的 IP 流量
應用程式涵蓋範圍 主要涵蓋遵循系統代理的程式 可涵蓋更多忽略系統代理的程式
協定範圍 取決於應用程式支援的 HTTP、HTTPS、SOCKS 代理能力 通常可統一處理 TCP,並依核心與設定處理 UDP
DNS 路徑 取決於應用程式、代理協定與 Clash DNS 設定 可搭配 DNS 劫持與增強模式,統一送入核心
系統權限 通常只需修改系統代理設定 通常需要系統管理員權限、系統服務或網路延伸功能
衝突來源 瀏覽器擴充功能、手動代理、殘留的代理位址 其他 VPN、虛擬網卡、安全軟體、路由優先順序

應用程式相容性不只是簡單的「瀏覽器與非瀏覽器」

瀏覽器通常會遵循系統代理,但實際行為還會受到安全 DNS、QUIC、瀏覽器擴充功能與企業原則影響。部分基於 Chromium 的應用程式會沿用系統網路設定,另一些則內建獨立的代理選項。遊戲平台可能由啟動器、更新程式、登入元件與遊戲程序共同組成,其中只有部分元件會讀取系統代理。此時網頁可以開啟,並不能證明下載、登入與即時通訊都經過同一條連線路徑。

TUN 模式能從更低層接收這些連線,涵蓋範圍通常更完整。對於 UDP 流量,能否正常轉送仍取決於節點協定、代理服務端、策略規則與核心設定。啟用 TUN 只提供流量入口,不會自動補足上游節點不支援的能力。

DNS 處理決定網域規則能否穩定匹配

在系統代理情境下,DNS 可能由應用程式本機查詢,也可能透過代理協定交由核心處理。不同程式的行為並不一致。如果網域在進入 Clash 前已解析成 IP,核心取得的資訊可能與直接接收網域請求時不同,規則匹配結果也可能隨之改變。瀏覽器自有的加密 DNS 設定還可能繞過作業系統的 DNS 路徑。

TUN 常與 mihomo 的 DNS 模組、dns-hijack、Fake-IP 或 Redir-Host 模式搭配使用。DNS 請求先進入核心後,核心便能將網域映射關係與後續連線關聯,再執行網域規則。Fake-IP 回傳的是供本機映射使用的虛擬位址,實際目標解析與代理選擇則由核心繼續完成。區域網路裝置探索、遊戲平台,以及依賴特殊 DNS 結果的應用程式,可能需要加入 Fake-IP 排除清單,或改用更適合目前環境的 DNS 增強模式。

權限與系統變更範圍不同

系統代理主要修改作業系統儲存的代理位址,所需權限相對較少。TUN 需要建立虛擬介面並調整路由,因此 Windows 用戶端常透過系統管理員權限或背景服務運作,macOS 可能要求核准網路延伸功能,Android 與 iOS 則通常藉由系統 VPN 介面完成接管。首次啟用時出現權限確認,是建立網路入口的正常步驟。

完成權限申請後,仍須確認服務是否實際啟動。用戶端介面顯示 TUN 已開啟,不一定代表路由寫入、DNS 劫持與預設介面辨識都成功。mihomo 日誌中的介面建立、路由設定與監聽錯誤,比單獨觀察開關更具判斷價值。

選擇方式:依裝置與應用程式範圍判斷

日常瀏覽與辦公:先使用系統代理

如果主要需求是瀏覽器存取、文件同步與遵循系統代理的桌面應用程式,系統代理通常更直接。它對路由表的影響較小,開啟與關閉路徑清楚,也方便判斷某個應用程式是否主動使用代理。發生問題時,可以先檢查本機連接埠、作業系統代理位址與策略組,不必同時處理虛擬網卡與路由衝突。

遊戲、命令列與獨立網路堆疊:優先檢查 TUN

若應用程式明確忽略系統代理,或包含 UDP、更新程式、子程序與獨立登入元件,可以使用 TUN 作為主要接管入口。常見情境包括終端機套件管理器未讀取代理變數、遊戲平台下載正常但遊戲連線直連、商店應用程式無法使用系統代理,以及同一程式的不同元件採用不一致的連線路徑。

行動裝置:系統 VPN 介面通常扮演 TUN 角色

行動系統中的 Wi-Fi 手動代理通常只對目前的無線網路生效,而且應用程式是否遵循該設定仍取決於應用程式本身。行動網路也不會使用這項 Wi-Fi 代理設定。需要裝置層級接管時,支援 Clash 或 mihomo 的用戶端一般會透過系統 VPN 介面建立通道。系統狀態列顯示 VPN 後,仍應在用戶端日誌中確認連線確實由規則處理。

開發環境、虛擬機與容器:先確認路由邊界

虛擬機與容器通常擁有獨立網卡、閘道或網路命名空間。主機啟用 TUN 後,來賓系統的流量是否進入該介面,取決於橋接、NAT 與預設路由關係。容器存取主機回環位址時,127.0.0.1 指向容器本身,並不等於主機上的 Clash 連接埠。這類環境應先繪製主機、虛擬網卡、容器網橋與出口網卡之間的路徑,再決定使用 TUN、區域網路監聽或應用程式層級代理。

系統代理和 TUN 是否需要同時開啟

多數情況下,選擇一個主要入口會更容易排查。TUN 已穩定接管目標應用程式時,系統代理並非必要;只使用瀏覽器與一般桌面應用程式時,也不必為了擴大涵蓋範圍而固定開啟 TUN。部分用戶端允許兩者同時運作,核心通常會處理本機連線與路由排除,但複雜環境可能出現流量繞行、回環或難以判斷實際入口的問題。

需要同時開啟時,應確認系統代理指向目前核心的連接埠,TUN 已排除必要的本機位址,並檢查日誌中同一連線是否只被接收一次。切換接管方式進行測試時,建議先關閉舊入口,再啟動新入口,避免殘留的系統代理或舊路由干擾結果。

設定順序:先驗證設定,再擴大接管範圍

  1. 更新訂閱。確認設定能夠成功載入,代理節點與策略組均已顯示,避免將訂閱錯誤誤判為接管失敗。
  2. 選擇規則模式。日常使用通常先設定為 Rule,並確認預設策略組已有可用節點。Global 與 Direct 可用於短時間定位問題,不適合當作判斷 TUN 是否生效的唯一依據。
  3. 先測試系統代理。開啟系統代理後,使用明確遵循系統設定的瀏覽器存取目標網站,並觀察 Clash 連線記錄是否出現網域、規則與策略組。
  4. 辨識未接管的應用程式。如果特定程式完全沒有連線記錄,請確認它是否提供獨立代理設定、是否需要環境變數,或是否使用 UDP 與獨立網路堆疊。
  5. 再啟用 TUN。完成系統權限確認,檢查虛擬介面、自動路由、預設網卡辨識與 DNS 設定。
  6. 逐項恢復其他網路工具。先在單一網路環境下驗證,再啟動其他 VPN、虛擬機或安全軟體,以便找出路由衝突來源。

mihomo 設定中常見的 TUN 基本結構如下。不同用戶端可能透過圖形介面產生這些欄位,實際支援項目以用戶端整合的核心版本為準。

mixed-port: 7890
mode: rule

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 1.1.1.1

auto-route 用於自動寫入必要路由,auto-detect-interface 用於辨識目前的預設出口,dns-hijack 用於將符合條件的 DNS 請求送入核心。stack 的可用值與實作方式會隨核心版本、作業系統及用戶端封裝方式而變化,不應在不了解目前版本的情況下,直接複製整段設定來覆寫用戶端產生的項目。

系統代理側主要需要核對監聽連接埠。設定使用 mixed-port 時,同一連接埠可以接收常見的 HTTP 與 SOCKS 代理連線。用戶端寫入系統設定的連接埠必須與核心實際監聽的值一致。如果修改了設定中的連接埠,但作業系統仍保留舊連接埠,通常會表現為所有遵循系統代理的應用程式突然無法連線,而由 TUN 接管的程式可能仍可正常使用。

故障檢查:依入口、DNS、規則與出口四層定位

第一層:流量是否進入核心

開啟用戶端連線清單或即時日誌,再啟動目標應用程式。如果完全沒有新連線,優先檢查系統代理位址、TUN 服務狀態、應用程式獨立代理、路由表與防火牆。此時不要先更換節點,因為節點只會影響已進入核心且被分配至代理策略的連線。

第二層:網域是否正確解析

連線記錄只有 IP、網域規則未命中,或應用程式在網域解析階段逾時時,應檢查 DNS 模組是否啟用、TUN 的 DNS 劫持是否生效、瀏覽器是否使用獨立安全 DNS,以及 Fake-IP 排除規則是否過於寬鬆。區域網路網域與裝置探索協定仍需保留本機解析路徑。

第三層:規則與策略組是否選擇正確

流量已出現但走向不符合預期時,請查看最終命中的規則、策略組與節點。規則通常會依設定中的順序匹配,較寬泛的規則放在前面,可能覆蓋後續的精確規則。更新訂閱也可能重建策略組選擇,因此需要重新確認目前群組中選取的節點。

第四層:節點與實體網路是否可達

規則命中代理但連線逾時時,才進行出口檢查。依序確認節點狀態、節點協定對 TCP 或 UDP 的支援、目前網路對目標連接埠的限制,以及預設出口網卡是否正確。裝置從有線網路切換至 Wi-Fi,或從 Wi-Fi 切換至行動熱點後,TUN 可能需要重新辨識預設介面。

結論:以最小涵蓋範圍滿足目前裝置需求

系統代理依靠應用程式主動讀取作業系統設定,結構簡單,適合瀏覽器與一般桌面軟體。TUN 透過虛擬介面接收網路封包,涵蓋範圍更廣,適合忽略系統代理、使用 UDP 或包含多個網路元件的應用程式,但也增加了權限、路由、DNS 與虛擬網卡衝突等檢查項目。

選擇時不必固定追求某一種模式。先用系統代理驗證訂閱、節點與規則鏈路;確認目標應用程式未進入核心後,再啟用 TUN 擴大接管範圍。無論使用哪種入口,都應透過連線日誌確認流量已進入核心,並繼續核對 DNS、規則、策略組與實際出口。依這四層逐步檢查,比只切換開關更容易找出具體故障點。

下載 Clash