什麼是 TUN 模式:從應用代理到系統代理
在傳統代理模式下,我們通常依賴瀏覽器設置(HTTP/SOCKS5)或系統環境變數來讓應用程式走代理。然而,許多應用程式(如各類終端工具、遊戲用戶端、後台服務)並不遵循系統代理設置。這導致了「網頁能開,終端報錯」的尷尬局面。
TUN 模式(TUN Device Mode)是解決這一痛點的終極方案。它不依賴於應用層的代理協議,而是直接在作業系統內核層創建一個虛擬網路卡(TUN 接口)。一旦開啟,所有流經作業系統的網路包都會通過這塊虛擬網路卡。Clash 會接管這塊網路卡收到的三層(IP 層)數據包,根據規則進行轉發。
技術原理:虛擬網卡與三層流量接管
要理解 TUN 模式,我們需要從作業系統的網路協議棧說起。
當一個應用程式嘗試訪問網際網路時,它會構造一個數據包交給內核。在沒有 TUN 模式時,內核查路由表,將包發往真實的物理網路卡(如 Wi-Fi 或乙太網路)。
開啟 TUN 模式後,Clash 會執行以下操作:
- 創建虛擬設備:在系統內核申請一個 TUN 字符設備,並分配一個 IP 範圍。
- 修改路由表:將系統默認路由(0.0.0.0/0)指向這個虛擬設備。
- 數據包捕獲:內核將原本要發往物理網路卡的包,重新定向到虛擬網路卡。Clash 作為一個用戶態程序,透過文件描述符讀取這些原始 IP 數據包。
- 協議棧重組: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 包,這是影響效能和穩定性的關鍵:
- System:使用作業系統自身的網路協議棧。相容性最好,但在處理大量短連接時開銷較大,且某些系統下 UDP 效能欠佳。
- gVisor:使用來自 Google 的用戶態協議棧。它在用戶態完成協議解析,安全性極高,且完全掌控連接狀態,但 CPU 消耗略高於 System。
- Mixed:這是目前最推薦的選擇。它將 TCP 交給效能穩定的內核處理(或類似高效方案),而將 UDP 交給 gVisor 或專用模組處理,兼顧了吞吐量與遊戲低延遲。
避坑指南:DNS 洩漏與繞過問題
即便開啟了 TUN,如果配置不當,依然可能發生 DNS 洩漏(即 DNS 請求直接發給了本地電信業者,導致訪問記錄被記錄或劫持)。
為了確保 DNS 不洩漏,建議開啟 fake-ip 模式:
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 影片、千兆寬頻用戶),可以考慮以下調整:
- 開啟 TCP 並發:
tcp-concurrent: true可以加快連接建立速度。 - 調整 MTU:如果在某些網路環境下出現「網頁加載半截」或「連接被重置」,嘗試將
mtu降低至 1400 或 1350。 - 使用高級核心:確保使用基於最新 mihomo 核心的用戶端,如 Clash V.CORE,其核心優化了 TUN 讀寫效能,大幅降低了用戶態切換帶來的延遲。
總結來說,TUN 模式是目前現代網路環境下實現真正透明代理的最佳解。雖然它需要管理員權限且配置稍顯複雜,但一旦部署成功,它所帶來的「無感上網」體驗是傳統應用代理無法比擬的。
如果您正在尋找一個能完美駕馭 TUN 模式,同時又不希望手動去維護複雜的 YAML 設定檔的工具,那麼 Clash V.CORE 絕對值得一試。它將這些底層技術封裝在優雅的 UI 之後,讓您一鍵開啟全系統級的高效能透明代理。