先釐清層級:代理設定與虛擬網卡
系統代理和 TUN 模式都能將流量送入 Clash,但入口所在的網路層級不同。系統代理是在作業系統中登錄 HTTP、HTTPS 或 SOCKS 代理位址,應用程式讀取該設定後,主動將請求交給 Clash 的監聽連接埠。TUN 模式則建立虛擬網路介面,並配合系統路由將 IP 封包導向 Clash 核心。前者取決於應用程式是否遵循代理設定,後者主要取決於路由是否涵蓋目標流量。
這項差異會決定實際涵蓋範圍。瀏覽器、部分桌面通訊軟體,以及遵循系統網路介面的程式,通常可以直接使用系統代理。命令列工具、遊戲、獨立更新程式、採用自有網路堆疊的軟體,以及只傳送 UDP 的程式,可能會忽略系統代理。TUN 位於更低層,通常能接收這些程式產生的 TCP 或 UDP 流量,再由 mihomo 等核心依規則選擇代理、直連或拒絕。
這兩種模式也不是速度等級。開啟 TUN 不會自動提高節點頻寬,使用系統代理也不代表連線效能較差。速度仍取決於本地網路、節點負載、線路品質、傳輸協定、目標網站與 DNS 結果。模式選擇主要處理「哪些流量進入核心」以及「網域資訊如何與連線對應」這兩個問題。
| 比較項目 | 系統代理 | TUN 模式 |
|---|---|---|
| 接管入口 | 應用程式讀取作業系統代理設定 | 虛擬介面與系統路由 |
| 應用程式涵蓋範圍 | 取決於應用程式是否支援代理 | 可涵蓋更多 TCP 與 UDP 程式 |
| 權限需求 | 通常只需修改目前使用者的代理設定 | 通常需要管理員權限或系統網路擴充功能 |
| DNS 關聯 | 部分請求可直接攜帶網域名稱 | 通常搭配 DNS 劫持與 fake-ip 使用 |
| 排障複雜度 | 入口較少,關閉後容易驗證 | 需同時檢查路由、介面、DNS 與防火牆 |
系統代理:應用程式主動連線至本機連接埠
Clash 圖形化用戶端中的「系統代理」開關,通常會將作業系統的 HTTP 與 HTTPS 代理位址設為本機回送位址和核心監聽連接埠,例如 127.0.0.1:7890。如果用戶端使用 mixed-port,該連接埠可以同時接受 HTTP 和 SOCKS 連線。應用程式取得代理設定後,會先連線至這個本機連接埠,再由 Clash 讀取目標位址並執行規則比對。
以瀏覽器瀏覽 HTTPS 網站為例,瀏覽器通常會向 HTTP 代理傳送 CONNECT 請求,其中包含目標網域與連接埠。Clash 可以使用該網域比對 DOMAIN、DOMAIN-SUFFIX 或規則集。建立通道後,HTTPS 內容仍維持端對端加密;流量接管不等於解密網頁內容。對於一般 HTTP 請求,代理同樣可以從請求目標取得網域資訊。
系統代理的優點是變更範圍明確。只要程式遵循系統設定,就不必改寫系統路由,也不必建立虛擬網卡。首次設定、瀏覽器瀏覽、文件下載和常見桌面應用程式,通常可以先採用這種方式。關閉開關後,用戶端應恢復原本的系統代理狀態,因此也適合用來快速判斷問題出在代理鏈路還是本機直連鏈路。
系統代理常見的涵蓋缺口
- 應用程式忽略系統設定:部分程式內建獨立代理選項,未設定時會直接連線至網路。
- 命令列環境未繼承代理:終端機工具可能只讀取
HTTP_PROXY、HTTPS_PROXY或自身的設定檔。 - UDP 流量不經過 HTTP 代理:遊戲、語音和部分即時通訊功能可能繼續直連。
- 背景服務執行於不同帳戶:系統服務未必會讀取目前桌面使用者的代理設定。
- 應用程式固定使用自己的 DNS 與連線策略:網域解析和後續連線可能繞過系統代理入口。
因此,遇到「瀏覽器正常,但某個程式無法連線」時,不應立即更換節點。先查看程式是否提供代理選項,再檢查它是否支援 HTTP 或 SOCKS5。如果程式完全不支援代理,或必須同時接管 UDP,才需要考慮 TUN 模式。
TUN 模式:路由將 IP 封包送入核心
TUN 是三層虛擬網路介面。啟用後,用戶端或 mihomo 核心會建立虛擬網卡,並依設定新增路由,讓符合範圍的 IP 封包進入該介面。核心會從封包中讀取來源位址、目標位址和協定類型,再結合 DNS 對應、連線嗅探及規則進行判斷。由代理節點負責轉送時,核心會將原始連線轉換為相應的代理協定連線;規則命中 DIRECT 時,則透過實體網路介面直連目標。
由於涉及虛擬介面、路由表和網路堆疊,TUN 通常需要較高權限。Windows 用戶端可能要求以管理員身分安裝或啟動服務;macOS 可能要求核准網路擴充功能或輸入系統憑證;Linux 通常需要存取 /dev/net/tun、具備設定路由所需的權限,或由系統服務執行這些操作。具體方式取決於用戶端實作,不能只根據介面上是否出現開關,就判斷 TUN 已經生效。
mihomo 設定中的 TUN 區段通常包含堆疊類型、自動路由、介面偵測和 DNS 劫持選項。以下片段用於說明欄位關係,實際使用時仍應以用戶端產生的設定及目前核心文件為準:
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
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "localhost.ptlogin2.qq.com"
auto-route 用於自動設定接管路由,auto-detect-interface 用於識別實際的出站介面,避免將代理節點本身的連線再次送回 TUN。不同作業系統和核心版本支援的堆疊類型可能不同,常見值包括 system、gvisor 與 mixed。堆疊類型會影響封包在本機的處理路徑,但不能取代節點品質與規則設定。
防止代理迴圈
TUN 接管範圍過大時,必須確保 Clash 連線至代理伺服器的流量能從實體介面送出。如果該連線再次被路由回虛擬網卡,就會形成代理迴圈,表現為啟用 TUN 後所有連線逾時、日誌重複建立相同目標,或系統網路在短時間內完全無法使用。自動路由與介面偵測通常會處理這項問題,但多網卡、VPN、虛擬機器、容器和手動路由環境仍可能需要明確排除。
DNS 處理:網域規則能否準確命中
代理規則經常依網域名稱編寫,但 TUN 接收到的原始封包主要包含目標 IP。為了讓 DOMAIN-SUFFIX 等規則正確運作,核心需要建立「DNS 查詢結果與後續連線」之間的對應關係。DNS 劫持、fake-ip 和連線嗅探都是解決這項問題的手段,但三者的職責並不相同。
在 fake-ip 模式下,Clash DNS 會為網域回傳保留位址範圍內的臨時位址,並儲存網域與該位址的對應關係。應用程式隨後連線至這個臨時位址時,核心可以還原原始網域,再執行網域規則並向遠端建立實際連線。常見的預設網段屬於基準測試用途的保留位址範圍,不是公網伺服器位址。這項機制可以減少「先在本機解析為某個 IP,再依 IP 規則誤判」的情況。
部分區域網路裝置探索、列印服務、遊戲平台或依賴真實 DNS 回應的程式不適合 fake-ip。此時可以使用 fake-ip-filter 排除相應網域,讓它們取得真實解析結果。過濾項目不宜任意擴大;如果排除大量一般網域,網域與連線的關聯會減弱,規則比對可能退回 IP 判斷。
redir-host 模式通常會回傳真實 IP,並由核心記錄解析關係。它與部分應用程式的相容方式更直接,但當一個 IP 對應多個網域、DNS 快取來自其他解析器,或應用程式繞過 Clash DNS 時,網域對應可能不夠穩定。連線嗅探可以從 TLS ClientHello 的 SNI 或 HTTP Host 等資訊補充網域,但無法保證每種協定都能取得網域,也不會解密 HTTPS 內容。
避免 DNS 請求繞過接管
- 確認 Clash DNS 已啟用,並查看用戶端顯示的監聽位址。
- 啟用 TUN 時,檢查 DNS 劫持規則是否涵蓋一般 53 連接埠的查詢。
- 使用加密 DNS 的應用程式可能直接存取指定伺服器,需要依靠路由和網域規則繼續接管其連線。
- 排查時清除作業系統與瀏覽器的 DNS 快取,避免舊結果影響判斷。
- 區域網路網域解析異常時,請檢查 nameserver-policy、fallback 與 fake-ip-filter,而不是直接停用所有規則。
在系統代理模式下,瀏覽器透過 CONNECT 提交網域時,Clash 可以直接取得目標名稱,因此通常較不依賴 fake-ip。不過,如果應用程式先自行解析,再只向 SOCKS 代理提交 IP,仍可能遺失網域資訊。SOCKS5 支援提交網域,但是否採用這種方式取決於應用程式。
使用情境:依涵蓋需求選擇入口
日常瀏覽網頁和支援系統代理的桌面軟體,可以優先啟用系統代理。它對網路的變更較少,出現問題時也容易透過關閉開關恢復直連。對於剛完成訂閱匯入的使用者,這種方式方便先驗證節點、策略組和規則是否正常,再決定是否增加 TUN 層。
如果需要接管不支援代理設定的軟體、UDP 應用程式、遊戲平台、背景更新程式或多個命令列程式,TUN 會更合適。它可以減少逐一為應用程式填寫代理位址的工作,並讓不同網路堆疊的連線統一經過規則系統。使用前應確認用戶端搭載支援 TUN 的核心;目前常見實作主要是由 Clash Meta 延續而來的 mihomo,不同用戶端公開的選項名稱與權限管理方式會有所差異。
伺服器和開發環境還需考慮容器、遠端連線與管理鏈路。透過 SSH 遠端修改預設路由時,一旦 TUN 路由設定錯誤,管理連線可能立即中斷。這類環境應先保留獨立終端機、設定自動復原工作,並明確排除管理網段。容器流量是否進入 TUN,取決於主機路由、網路命名空間與轉送規則,不能只看主機瀏覽器是否成功使用代理。
建議的漸進式設定順序
- 匯入有效訂閱,選擇可連線的節點或策略組。
- 以規則模式啟用系統代理,驗證瀏覽器與常見應用程式。
- 查看連線日誌,確認網域規則、直連規則和代理規則符合預期。
- 確實存在涵蓋缺口時,再啟用 TUN,並授予用戶端所需的系統權限。
- 分別測試 TCP、UDP、區域網路存取、DNS 解析,以及系統休眠與恢復。
- 保留可正常運作的原始設定,修改路由或 DNS 選項後逐項重新測試。
一般不需要為了「更徹底」而同時依賴兩套入口。許多桌面用戶端在開啟 TUN 後仍保留系統代理開關,這不一定會造成錯誤,但會讓部分應用程式先走顯式代理,其他應用程式再走 TUN,排障時難以判斷實際入口。如果用戶端文件沒有特殊要求,可以先只啟用一種接管方式,確認穩定後再評估是否需要組合。
故障排查:從入口到出站逐層檢查
切換模式後無法連線時,應依資料路徑檢查,而不是一次修改多個 DNS、節點和規則選項。第一步確認 Clash 核心正在執行,本機 mixed-port 或其他監聽連接埠沒有被佔用。第二步確認目前使用的入口:系統代理位址是否指向正確連接埠,或 TUN 虛擬介面是否已建立。第三步再查看請求是否出現在連線記錄中。
系統代理開啟後,瀏覽器可以使用,但終端機命令仍然直連,該怎麼辦?
先檢查命令列工具是否讀取系統代理。可依工具文件設定 HTTP、HTTPS 或 SOCKS 代理,也可以在需要統一接管大量終端程式時使用 TUN。不要將代理環境變數永久寫入所有 shell 設定後忘記清理,否則 Clash 結束後,命令可能持續連線至已停止監聽的本機連接埠。
啟用 TUN 後無法存取區域網路裝置,該怎麼辦?
檢查區域網路網段是否被錯誤送入代理,確認私有位址規則維持 DIRECT,並核對 fake-ip-filter 對區域網路網域的處理方式。印表機、NAS 和路由器管理頁面通常需要本機解析與直連。多網卡裝置還要確認實際區域網路介面沒有被自動路由錯誤識別。
TUN 已開啟,但某個 UDP 程式仍無法連線,原因是什麼?
確認虛擬介面確實接收到 UDP 封包,再檢查所選節點協定及伺服器是否支援相應的 UDP 轉送。TUN 能接管 UDP,不代表每個代理節點都能成功承載這類流量。還應排除防火牆限制、嚴格 NAT、程式使用區域網路廣播,以及規則將目標錯誤分配至不可用策略組等情況。
關閉用戶端後系統顯示已連線,但網頁無法開啟,該怎麼辦?
系統代理可能仍指向已停止監聽的本機連接埠,或 TUN 路由未正常清除。先重新啟動用戶端並正常關閉相關開關,再檢查作業系統代理設定、虛擬網卡和預設路由。直接結束程序或裝置異常關機時,更容易留下需要復原的網路狀態。
規則日誌只顯示 IP、不顯示網域,該怎麼辦?
檢查應用程式是否繞過 Clash DNS、DNS 劫持是否生效,以及增強模式是否按照預期運作。若應用程式使用自帶解析器或直接連線至固定 IP,核心可能只能執行 IP-CIDR、GEOIP 等規則。可在相容範圍內啟用嗅探補充網域,但仍應先修正 DNS 路徑。
最後再比較節點。如果同一節點在系統代理下可用、在 TUN 下不可用,問題更可能出在虛擬介面、路由、DNS 或權限;如果兩種模式都無法建立代理連線,應檢查訂閱狀態、策略選擇、節點可達性和本地網路。如果只有某個目標異常,則查看它命中的具體規則與策略組,避免將單一網站問題誤判為整個 TUN 功能失效。
結論:涵蓋範圍決定模式,不由名稱決定
系統代理位於應用程式層的入口,設定直接、排障路徑短,適合遵循作業系統代理設定的程式。TUN 位於 IP 路由入口,可以涵蓋更多 TCP、UDP 以及不提供代理選項的應用程式,但需要處理權限、虛擬介面、路由、DNS 對應及代理迴圈。兩者最終都會將連線交給 Clash 或 mihomo 的規則引擎,並不會改變訂閱本身的節點品質。
合理的順序是先使用系統代理驗證基本設定,再依明確的應用程式涵蓋需求啟用 TUN。遇到異常時,依序檢查應用程式入口、DNS、規則、策略組、代理出站和實體網路介面。每次只修改一個選項,通常比頻繁切換節點和網路堆疊更快定位問題。
選擇對應平台安裝包
前往下載中心確認作業系統與架構,再依使用文件完成訂閱匯入、系統代理或 TUN 模式設定。