什麼是 TUN 模式?與系統代理有何不同

Clash 提供兩種工作模式將流量接入代理:系統代理TUN 模式。理解它們的差異,是正確使用 Clash 的關鍵。

比較維度系統代理(HTTP/SOCKS5)TUN 模式(虛擬網路卡)
工作層級應用層(L7)網路層(L3)
攔截方式應用程式主動設定代理位址作業系統核心層級流量劫持
覆蓋範圍僅支援代理協定的應用程式所有 TCP/UDP 流量,無需應用程式配合
UDP 支援有限,依賴應用程式實作完整 UDP 支援
所需權限一般使用者權限管理員 / root 權限

系統代理本質上是在作業系統層面設定一個 HTTP/SOCKS5 代理位址(如 127.0.0.1:7890)。瀏覽器等支援代理協定的應用程式會將請求傳送到這個位址,由 Clash 轉發。但遊戲用戶端、指令列工具、部分 Electron 應用程式往往不讀取系統代理設定,流量仍然直連。

TUN 模式透過在作業系統中建立一塊虛擬網路卡(Mihomo TUN),在驅動層攔截所有流出的網路封包,無論應用程式是否支援代理協定,流量都會被強制捕獲並由 Clash 的規則引擎處理。這才是真正意義上的「全域透明代理」。

何時需要開啟 TUN 模式

以下情境強烈建議開啟 TUN 模式:

  • 遊戲加速:Steam、Epic Games、Battle.net 等遊戲用戶端通常不走系統代理,開啟 TUN 後可直接代理遊戲流量
  • 指令列工具git clonenpm installpip installdocker pull 等預設不走系統代理,需要 TUN 或手動設定環境變數
  • UDP 協定應用程式:視訊通話(Zoom、Teams)、語音(Discord)、DNS 查詢等依賴 UDP,系統代理對 UDP 支援有限
  • 非標準代理應用程式:部分開發工具、學術軟體、VPN 用戶端不遵循系統代理設定
  • iOS/macOS 全域代理:搭配 Stash/Surge,TUN 可接管系統全部流量,包括系統更新
💡
日常瀏覽不需要 TUN:如果只是用瀏覽器翻牆,系統代理模式完全夠用,且資源佔用更低。TUN 模式主要為需要全流量代理的進階情境設計。

Windows 平台開啟 TUN 模式(Clash Verge Rev)

前置條件

TUN 模式需要以管理員身分執行 Clash Verge Rev。在工作列圖示上按右鍵 → 「以管理員身分重新啟動」,或在開始功能表中右鍵應用程式圖示 → 「以管理員身分執行」。

首次啟動 TUN 時,程式會自動安裝 wintun.dll 驅動程式(Windows TUN 虛擬網路卡驅動程式)。此過程需要連線下載約 1 MB 的驅動程式檔案,安裝完成後無需重複操作。

開啟步驟

  1. 確認 Clash Verge Rev 以管理員身分執行(標題列或工作列圖示應顯示盾牌標誌)
  2. 點擊左側導覽的「設定
  3. 找到「系統設定」區域,開啟「TUN 模式」開關
  4. 若彈出驅動程式安裝提示,點擊「確認」並等待安裝完成
  5. 開啟後,工作管理員的網路介面卡清單中會出現「Mihomo」虛擬網路卡
⚠️
與 Hyper-V / WSL2 的相容性:開啟 TUN 模式後,Hyper-V 或 WSL2 中的虛擬機器可能無法存取外網,因為 TUN 會攔截所有出站流量。解決方案:在 TUN 設定中排除虛擬機器所在網段(如 172.16.0.0/12),或暫時切換回系統代理模式。

macOS 平台開啟 TUN 模式(Clash Verge Rev)

開啟步驟

  1. 在 Clash Verge Rev 的「設定」頁面,找到「TUN 模式」並開啟
  2. 系統會彈出安全提示,前往「系統偏好設定 → 隱私權與安全性
  3. 在頁面底部找到「已封鎖使用系統延伸功能」的提示,點擊「允許
  4. 輸入 macOS 使用者密碼完成授權,返回 Clash Verge Rev 再次開啟 TUN 開關

macOS Sequoia(15)及以上版本還需在「系統設定 → VPN 與篩選器」中手動允許 Mihomo 的網路延伸功能。

ℹ️
macOS 的 TUN 模式基於 Network Extension 框架實作,每次 macOS 主要版本升級後可能需要重新授權系統延伸功能。

Android 平台 TUN 模式(ClashMeta for Android)

Android 版 CMFA 的 TUN 模式基於系統的 VpnService API 實作,無需 root 權限。啟動代理時系統彈出的 VPN 權限請求即為 TUN 模式的授權。

  1. 啟動 CMFA,確保設定檔已啟用
  2. 點擊主介面的啟動按鈕,首次啟動會彈出 VPN 權限請求
  3. 點擊「確定」,Android 狀態列出現鑰匙圖示即表示 TUN 已啟用
  4. 在「設定 → 覆寫設定」中可調整 TUN 的工作模式(Mixed / TUN only / System Proxy only)

Android 的 TUN 預設接管所有 APP 的流量,無需額外設定。可在應用程式清單中排除特定 APP(如銀行 APP),避免觸發風控機制。

TUN 模式 YAML 設定詳解

透過在設定檔中新增 tun 欄位,可以對 TUN 模式進行精細控制:

tun:
  enable: true
  stack: mixed          # mixed(推薦)/ system / gvisor
  auto-route: true      # 自動新增路由規則,讓流量進入 TUN
  auto-detect-interface: true  # 自動偵測出口網路卡,多網路卡環境下必開
  dns-hijack:
    - any:53            # 劫持所有 DNS 請求(含 UDP 53 埠)
  strict-route: false   # true 時丟棄非 TUN 流量,安全性更高但會影響區域網路
  mtu: 9000             # 最大傳輸單元,9000 可減少分封,提升吞吐量

# DNS 設定需搭配 TUN 使用
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - tls://8.8.8.8:853
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: CN

stack 參數選擇

stack 值說明推薦情境
mixedTCP 用系統堆疊,UDP 用 gVisor,相容性最佳預設推薦,大多數情境
system全部使用系統網路堆疊,效能最高Linux / macOS 高效能情境
gvisor使用者態虛擬網路堆疊,隔離性佳遇到相容性問題時嘗試

TUN 模式常見問題排查

開啟後無法上網

  1. 確認以管理員權限執行(Windows)或已授權網路延伸功能(macOS)
  2. 檢查設定檔中是否包含 GEOIP,CN,DIRECT 規則,避免國內流量迴圈
  3. 查看 Clash 紀錄,確認 TUN 介面已成功建立(紀錄中出現 "inbound started" for tun)
  4. 暫時關閉防毒軟體,部分安全軟體會攔截虛擬網路卡驅動程式

遊戲還是直連

確認以下設定均已完成:

  • TUN 開關已開啟,且 auto-route: true
  • 代理模式為「規則」或「全域」,不是「直連」
  • 設定檔中遊戲伺服器網域/IP 對應的規則指向代理策略而非 DIRECT
  • 在 Clash 紀錄中搜尋遊戲程序名稱,確認流量確實經過了 Clash

DNS 迴圈 / 解析失敗

TUN 開啟後,dns-hijack: any:53 會捕獲所有 DNS 請求交由 Clash 處理。若 Clash 的 DNS 設定本身有問題(如 nameserver 無法存取),會導致 DNS 解析失敗。

排查步驟:暫時將 DNS nameserver 改為 223.5.5.5(阿里 DNS),確認基礎連通性後再調整。

開啟 TUN 後速度變慢

TUN 模式因需在核心層處理封包,有約 5–15% 的額外 CPU 開銷。如遇明顯速度下降:

  • stackgvisor 改為 mixedsystem
  • 確認 auto-route: true 已開啟(避免路由表衝突)
  • 檢查是否有其他 VPN 軟體同時執行,造成雙重代理
下載 Clash 用戶端,立即體驗 TUN 全域代理

總結:TUN 模式使用要點

  • TUN 模式在驅動層攔截所有流量,系統代理只覆蓋支援代理協定的應用程式
  • 遊戲、指令列工具、UDP 應用程式情境下,TUN 是唯一可靠的解決方案
  • Windows 需管理員權限 + wintun 驅動程式;macOS 需授權網路延伸功能;Android 基於 VpnService 無需 root
  • YAML 設定中 stack: mixed + auto-route: true + dns-hijack: any:53 是最佳實踐組合
  • 設定檔必須包含國內直連規則(GEOIP,CN,DIRECT),否則國內流量也會走代理造成速度損失

延伸閱讀