什麼是 TUN 模式:從應用代理到系統代理

在傳統代理模式下,我們通常依賴瀏覽器設置(HTTP/SOCKS5)或系統環境變數來讓應用程式走代理。然而,許多應用程式(如各類終端工具、遊戲用戶端、後台服務)並不遵循系統代理設置。這導致了「網頁能開,終端報錯」的尷尬局面。

TUN 模式(TUN Device Mode)是解決這一痛點的終極方案。它不依賴於應用層的代理協議,而是直接在作業系統內核層創建一個虛擬網路卡(TUN 接口)。一旦開啟,所有流經作業系統的網路包都會通過這塊虛擬網路卡。Clash 會接管這塊網路卡收到的三層(IP 層)數據包,根據規則進行轉發。

透明代理:用戶無需在任何應用中做設置,應用甚至意識不到代理的存在,網路流量在底層被悄無聲息地轉發,這就是所謂的「透明」。

技術原理:虛擬網卡與三層流量接管

要理解 TUN 模式,我們需要從作業系統的網路協議棧說起。

當一個應用程式嘗試訪問網際網路時,它會構造一個數據包交給內核。在沒有 TUN 模式時,內核查路由表,將包發往真實的物理網路卡(如 Wi-Fi 或乙太網路)。

開啟 TUN 模式後,Clash 會執行以下操作:

  1. 創建虛擬設備:在系統內核申請一個 TUN 字符設備,並分配一個 IP 範圍。
  2. 修改路由表:將系統默認路由(0.0.0.0/0)指向這個虛擬設備。
  3. 數據包捕獲:內核將原本要發往物理網路卡的包,重新定向到虛擬網路卡。Clash 作為一個用戶態程序,透過文件描述符讀取這些原始 IP 數據包。
  4. 協議棧重組:Clash 內部實作了一個輕量級的 TCP/IP 協議棧,將捕獲的原始包還原為連接,再透過規則分流發送到對應的節點。

系統代理 vs. TUN 模式:深度對比

維度 系統代理 (HTTP/SOCKS5) TUN 模式 (三層接管)
接管範圍 僅限遵循設置的應用 全系統所有流量
UDP 支援 較差 (常需特殊支援) 原生完整支援
DNS 劫持 依賴瀏覽器 DOH 或設置 強制接管所有 DNS 請求
資源開銷 極低 中等 (涉及內核態拷貝)
配置難度 簡單 需管理員權限

實戰配置:開啟極致透明代理體驗

在 Clash.Meta (mihomo) 核心中,TUN 模式的功能得到了極大的增強。以下是一份推薦的最佳實踐配置,旨在實現高能量與防洩漏:

config.yaml - TUN 模式核心配置
tun:
  enable: true
  stack: mixed          # 網路棧選擇,推薦 mixed
  auto-route: true      # 自動設置系統路由,接管全流量
  auto-detect-interface: true # 自動檢測物理出口網路卡,防止環路
  dns-hijack:
    - 'any:53'          # 劫持所有發往 53 端口的 DNS 請求
  strict-route: true    # 嚴格路由模式,防止流量繞過 TUN
  device: Meta          # 定義虛擬網路卡名稱
  mtu: 1500             # 保持默認或根據網路環境微調

網路棧選擇:System、gVisor 與 Mixed

stack 字段決定了 Clash 如何處理捕獲到的 IP 包,這是影響效能和穩定性的關鍵:

避坑指南:DNS 洩漏與繞過問題

即便開啟了 TUN,如果配置不當,依然可能發生 DNS 洩漏(即 DNS 請求直接發給了本地電信業者,導致訪問記錄被記錄或劫持)。

核心原則:開啟 TUN 模式時,必須同時正確配置 Clash 內部的 DNS 模組。

為了確保 DNS 不洩漏,建議開啟 fake-ip 模式:

搭配 TUN 的 DNS 配置
dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - 'https://doh.pub/dns-query'
    - 'https://dns.alidns.com/dns-query'
  fallback:
    - 'tls://8.8.8.8:853'
    - 'tls://1.1.1.1:853'

fake-ip 模式下,當應用程式請求 DNS 時,Clash 立即返回一個虛擬 IP(如 198.18.x.x)。應用程式發起連接到這個虛擬 IP,流量到達 TUN 網路卡後,Clash 再根據內部快取的真實網域進行分流轉發。這完美避免了應用程式在系統層面進行真實的解析嘗試。

效能優化建議

對於追求極致速度的用戶(如 4K 影片、千兆寬頻用戶),可以考慮以下調整:

  1. 開啟 TCP 並發tcp-concurrent: true 可以加快連接建立速度。
  2. 調整 MTU:如果在某些網路環境下出現「網頁加載半截」或「連接被重置」,嘗試將 mtu 降低至 1400 或 1350。
  3. 使用高級核心:確保使用基於最新 mihomo 核心的用戶端,如 Clash V.CORE,其核心優化了 TUN 讀寫效能,大幅降低了用戶態切換帶來的延遲。

總結來說,TUN 模式是目前現代網路環境下實現真正透明代理的最佳解。雖然它需要管理員權限且配置稍顯複雜,但一旦部署成功,它所帶來的「無感上網」體驗是傳統應用代理無法比擬的。

如果您正在尋找一個能完美駕馭 TUN 模式,同時又不希望手動去維護複雜的 YAML 設定檔的工具,那麼 Clash V.CORE 絕對值得一試。它將這些底層技術封裝在優雅的 UI 之後,讓您一鍵開啟全系統級的高效能透明代理。

立即體驗 Clash V.CORE,開啟透明代理新紀元