先選擇接管方式,再檢查分流規則
瀏覽器能開啟網頁,終端機卻連線逾時;開啟系統代理後,遊戲仍使用原本的網路出口。這些情況不一定代表節點失效,常見原因是應用程式沒有讀取系統代理設定。系統代理和 TUN 的主要差異,在於流量如何進入 Clash 核心,而不是節點速度或訂閱品質。
- 主要使用瀏覽器:先開啟系統代理。設定簡單,遇到問題也容易還原。
- 只想代理單一命令列工作:先為命令明確指定 HTTP 或 SOCKS 代理,不必急著啟用 TUN。
- 應用程式不支援代理設定,或需要處理部分 UDP 流量:再考慮使用 TUN,並檢查路由、DNS 和節點協定。
- 正在連線公司 VPN:先確認公司網路規範,避免兩套工具同時修改預設路由。
系統代理:讓應用程式主動連至本機連接埠
系統代理會將本機代理位址寫入作業系統的代理設定。支援這項設定的應用程式讀取位址後,便會將請求交給用戶端處理。例如,用戶端監聽 127.0.0.1:7890 時,瀏覽器就能透過這個本機連接埠建立代理連線。實際連接埠請以用戶端顯示為準,7890 僅為本文範例。
系統代理能接管哪些連線?
Edge、Chrome 等瀏覽器通常會遵循系統代理設定,但實際行為也會受到組織政策、擴充功能和啟動參數影響。Firefox 可選擇使用系統代理,也能另外設定連線方式。下載工具、開發工具和遊戲各有不同的實作方式,不能只看工作列顯示「系統代理已開啟」,就認定所有應用程式都已接管。
- HTTP 代理常用於網頁請求;HTTPS 通常透過 HTTP CONNECT 建立通道。這不代表用戶端會解密 HTTPS 內容。
- SOCKS5 可處理 TCP;若要使用 UDP,還需要應用程式、用戶端和節點連線都支援。
mixed-port可在同一個連接埠接收 HTTP 和 SOCKS 代理請求,但不會讓未讀取代理設定的應用程式自動改走代理。
從系統設定確認代理位址
Windows 11 可前往「設定」→「網路和網際網路」→「Proxy」,檢查手動代理或設定指令碼的狀態。macOS 可前往「系統設定」→「網路」→目前使用的網路服務→「詳細資訊」→「代理伺服器」。這些位置適合用來確認系統設定;日常切換建議優先使用用戶端,避免兩邊反覆覆寫設定。
不要將 0.0.0.0 設為應用程式的代理伺服器位址。它通常表示監聽所有 IPv4 介面;同一台電腦上的應用程式一般應連線至 127.0.0.1。只有需要與區域網路共用代理時,才另外考慮監聽位址、防火牆和存取限制。
TUN 模式:透過虛擬網路介面接收 IP 流量
TUN 會建立或使用虛擬網路介面,再透過路由等機制將符合條件的 IP 封包交給核心處理。應用程式不必提供 HTTP 代理選項,因此適合無法手動設定代理的程式。Clash Meta 後續發展的 mihomo 核心提供相關功能,但不同用戶端使用的核心、服務安裝方式和介面開關並不完全相同。
「啟用 TUN」不代表一定會「攔截所有網路流量」。實際接管範圍取決於 IPv4 和 IPv6 路由、介面排除項目、略過區域網路的設定、其他 VPN 與系統防火牆。虛擬機器、容器和 WSL 也有額外的網路路徑,不能直接視同主機上的應用程式。
| 比較項目 | 系統代理 | TUN 模式 |
|---|---|---|
| 流量入口 | 應用程式主動連線至代理監聽連接埠 | 透過虛擬介面和路由接收 IP 流量 |
| 應用程式需求 | 遵循系統設定或自行設定代理 | 通常不必支援代理協定 |
| UDP 處理 | 一般 HTTP 系統代理不處理一般 UDP 流量 | 可處理已接管的 UDP 流量,仍須節點支援 |
| 權限與服務 | 通常不需要建立虛擬介面 | 通常需要提升權限或預先安裝特權服務 |
| 排查重點 | 位址、連接埠,以及應用程式是否讀取設定 | 路由、DNS、服務權限與介面衝突 |
為什麼 TUN 通常需要管理員權限?
建立介面和修改路由都屬於系統網路操作。Windows 用戶端可能透過服務模式執行;macOS 可能需要授權輔助程式;Linux 通常會用到 /dev/net/tun 及相應的網路管理權限。安裝特權服務後,圖形介面不一定每次都要以管理員身分啟動。
若記錄顯示權限不足,請依照所用用戶端的說明安裝或修復服務,不要反覆切換 TUN。也不要為了排查問題而長期關閉系統防火牆;先確認服務狀態,再檢查遭封鎖的程式和規則。
命令列與遊戲:逐一驗證應用程式,不要憑開關猜測
命令列連不上?先測試明確指定代理
終端機中的工具不一定會讀取作業系統的代理設定。部分工具支援 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY,但支援範圍及大小寫處理方式不盡相同。排查時,明確傳入參數通常比修改全域環境變數更容易確認影響範圍。
# Windows PowerShell 使用 curl.exe,避免舊版別名干擾
curl.exe --proxy http://127.0.0.1:7890 --noproxy "" -I https://example.com
# macOS / Linux 使用 curl
curl --proxy http://127.0.0.1:7890 --noproxy "" -I https://example.com
# 使用 SOCKS5,並由代理伺服器解析目標網域
curl --proxy socks5h://127.0.0.1:7890 --noproxy "" -I https://example.com
這些命令假設 7890 是支援對應協定的混合連接埠。收到 HTTP 回應代表這次代理請求已成功建立,但不能只憑狀態碼判斷使用了哪個公開網路出口。若明確指定代理後可以連線,一般命令卻失敗,請先檢查該工具的代理參數或環境變數,不要急著更換訂閱。
遊戲使用 UDP;TUN 也不保證降低延遲
遊戲可能同時使用 TCP 登入、UDP 對戰,以及獨立的語音連線。啟用 TUN 後,只有路由已接管且節點支援的連線才可能經過代理。節點協定、伺服器設定、規則比對結果和地區限制都可能影響連線狀況。
- 先在用戶端的連線清單中尋找遊戲程序或目標位址,確認連線是否進入核心。
- 檢查命中的規則和代理群組,避免登入連線走代理,對戰連線卻意外套用直連規則。
- 確認節點是否支援 UDP 轉發,不要只看網頁測速結果。
- 在相同伺服器和時段比較直連與代理的表現,記錄遊戲內延遲、封包遺失和斷線情況。
繞道較遠的節點可能增加延遲。TUN 的作用是擴大可接管的流量範圍,不會自動加速遊戲;也請另外確認遊戲服務條款和反作弊機制的限制。
DNS 處理:區分代理解析與系統解析
系統代理和 TUN 的另一項重要差異,在於網域查詢會經過哪裡。使用 HTTP 代理連線至 HTTPS 網站時,應用程式可以將目標網域交由代理處理;但應用程式自行預先解析的網域、其他背景連線和安全 DNS 功能,仍可能採取不同路徑。因此,「網頁已經走代理」不代表所有 DNS 查詢都使用相同出口。
TUN 可搭配 DNS 接管,將符合條件的 53 連接埠查詢交給核心 DNS 模組處理。mihomo 中常見的 dns-hijack 就是用於這類情境。它不是能解密任意加密 DNS 的工具:應用程式自行發出的 DoH 使用 HTTPS,DoT 通常使用 853 連接埠,不能期待針對 53 連接埠的設定自動辨識並改寫這些流量。
如何閱讀 mihomo 設定片段?
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
這是用來說明欄位的局部片段,並非可獨立執行的完整設定。auto-route 用來自動設定相關路由,auto-detect-interface 用來自動偵測出口介面。listen 中的 1053 是本機 DNS 監聽連接埠,不是節點連接埠;DNS 接管和這個監聽連接埠也是不同概念。
Fake-IP 模式會為網域指派對應位址,再利用映射關係處理後續連線。198.18.0.1/16 是此模式使用的位址池,並非實際網站伺服器的位址。既有設定還需要合適的上游 DNS 等項目;不要直接用這段內容覆寫訂閱檔案,也不要在同一層重複加入第二個 dns 或 tun 鍵。
啟用順序:先建立基準,再新增 TUN
同時開啟系統代理和 TUN 不一定會衝突,但也不代表效果會加倍。HTTP 代理連線和虛擬介面接管可能同時存在,用戶端通常需要妥善處理自身流量與路由排除。排查問題時,先只保留一種流量入口,更容易判斷問題發生在哪一層。
- 確認節點和設定:匯入訂閱、選定一個節點並使用 Rule 模式,先透過系統代理成功開啟一次網頁。
- 記下本機連接埠:在用戶端確認 HTTP、SOCKS 或混合連接埠,不要把控制面板 API 連接埠誤認為代理連接埠。
- 準備服務權限:依照用戶端說明安裝服務或完成授權,並關閉其他正在接管網路的代理工具。
- 單獨測試 TUN:暫時關閉系統代理、啟用 TUN,重新啟動目標應用程式,並查看連線清單和記錄。
- 檢查日常服務:測試網頁、命令列、區域網路裝置及公司內部網站,確認規則沒有誤判原本需要直連的位址。
Android 用戶端通常透過系統 VPN 介面接管流量;同一個使用者下通常只能有一個 VPN 服務處於啟用狀態。這和在電腦上填寫 HTTP 系統代理並非相同操作。iOS 的網路延伸功能也採用獨立機制,不要將桌面版的 YAML 欄位和開關位置直接套用到行動裝置。
啟用 TUN 後無法上網?依照現象逐步縮小範圍
系統代理正常,只有 TUN 無法使用
- 確認服務是否正在執行,並查看記錄中是否出現建立介面、設定路由或權限錯誤。
- 檢查其他 VPN、虛擬網卡和安全軟體是否也在修改路由;每次只停用一項,再重新測試。
- 確認 IPv6 接管設定。IPv4 請求成功,不代表所有連線都走相同路徑。
部分網站正常,部分應用程式顯示網域錯誤
- 確認 DNS 模組是否啟用、上游 DNS 是否可連線,以及應用程式是否另行設定 DoH。
- 檢查 Fake-IP 過濾和直連規則,特別留意區域網路網域、企業內部網域,以及需要真實位址的服務。
- 比對連線記錄,確認問題是解析失敗、規則選錯,還是節點連線失敗;不要把所有逾時都歸因於 DNS。
關閉用戶端後仍然無法上網
先正常關閉 TUN 和系統代理,再結束用戶端。若程式異常結束,請檢查系統代理是否仍指向已停止監聽的 127.0.0.1:7890,以及原有 VPN 或網路服務是否已恢復。重新啟動相關網路服務或系統前,請先儲存工作內容;未記錄原始設定前,不要大量刪除路由。
若仍找不到問題,可繼續參閱無法上網疑難排解和設定檔檢查。提交記錄時,請隱藏訂閱連結、節點密碼和存取權杖,只保留錯誤時間、核心資訊、錯誤訊息和重現步驟。