三種模式改變的是出站決策
Clash Meta,也就是目前常見的 mihomo 核心,會先接收進入本機代理連接埠或 TUN 虛擬網卡的連線,再為連線決定出口。規則、全域、直連三種模式改變的是這一步的決策方式,不會改變訂閱中的節點數量,也不會自動納入未進入核心處理的流量。
以瀏覽器造訪 HTTPS 網站為例,連線可能先進入本機的 HTTP 或 mixed 連接埠,例如設定中常見的 7890,也可能由 TUN 模式接管系統網路堆疊。核心辨識目標網域、目標 IP、連接埠與網路類型後,才會依目前模式選擇代理節點或本地網路。未開啟系統代理、應用程式未單獨設定代理,且 TUN 未接管時,該應用程式的連線會繞過 Clash;此時切換模式通常不會影響它。
| 模式 | 進入核心後的決策 | 典型用途 | 主要檢查項目 |
|---|---|---|---|
| 規則 | 由上而下比對規則,交給對應策略組或 DIRECT | 日常瀏覽、長時間執行、依網站分流 | 規則順序、規則集狀態、末尾規則 |
| 全域 | 通常交給 GLOBAL 策略組中目前選定的出口 | 暫時排除規則影響、測試單一節點連線能力 | GLOBAL 目前選擇、區域網路繞行設定 |
| 直連 | 使用 DIRECT 透過本地網路建立連線 | 本地網路基準、內網除錯、暫停代理出口 | DNS 是否仍由核心處理、連線是否重新建立 |
規則模式:依命中順序選擇出口
規則模式適合長期使用。它會依照設定檔中的 rules 清單逐條檢查連線,第一條成功比對的規則會立即生效,後續規則不再參與。網域規則、IP 規則、程序規則與規則集合可以同時存在,因此順序比規則數量更重要。
mode: rule
mixed-port: 7890
external-controller: 127.0.0.1:9090
rules:
- DOMAIN-SUFFIX,example.cn,DIRECT
- DOMAIN,api.example.net,Proxy
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- MATCH,Proxy
這段範例會先讓指定的中國大陸網域直連,再讓一個 API 網域進入名為 Proxy 的策略組。兩個私有位址區段用於區域網路直連,最後的 MATCH 接住先前未命中的連線。若把 MATCH,Proxy 放在第一行,其餘規則就沒有機會生效。
規則模式中的三個實際判斷
- 命中的是哪個策略。用戶端的連線頁面通常會顯示規則名稱或鏈路,例如
DOMAIN-SUFFIX → DIRECT、MATCH → Proxy。只看節點名稱不足以判斷規則是否正確。 - 策略組目前選了什麼。規則寫入
Proxy後,最終出口仍取決於該策略組。若它是手動選擇組,會使用目前節點;若它是url-test或fallback組,則由組內測試結果決定。 - 網域是否已解析為 IP。某些連線只能看見目標 IP,網域規則可能無法參與。啟用 DNS 劫持、嗅探或合適的 TUN 設定後,核心可以取得更多網域資訊,但具體行為仍取決於設定與協定。
規則模式也適合處理區域網路與開發環境。例如將 localhost、127.0.0.0/8、192.168.0.0/16 與公司內網網域放在前面,可以減少內網請求被送往遠端節點的情況。除錯前仍應確認企業 VPN、虛擬機網段或容器網段是否與這些位址重疊。
日常上網為什麼優先選擇規則模式
- 本地服務、印表機、NAS 與路由器管理頁面都能維持直連。
- 不同網站可以交給不同策略組,而不是固定使用同一個節點。
- 更新規則集後,不必逐一修改應用程式的代理設定。
- 連線記錄會保留命中的規則,方便找出特定網域走錯出口的問題。
全域模式:略過一般規則進行單一出口測試
全域模式常被理解為「所有裝置流量都強制代理」,這個說法並不準確。它只處理已進入 Clash 核心的連線,通常會將這些連線交給 GLOBAL 策略組。未進入代理連接埠、未被 TUN 接管或遭路由排除的連線,依然不會因為模式名稱而改變。
全域模式的價值主要在於故障隔離。某個網站在規則模式下無法開啟,切換到全域後立即恢復,表示節點本身具備存取能力,問題更可能出在規則命中、策略組選擇或直連網路。如果全域模式下仍然失敗,則應繼續檢查節點連線能力、DNS、TLS 時間、網路防火牆與目標服務狀態。
適合使用全域模式的情境
- 驗證單一節點。在 GLOBAL 組中固定選擇一個節點,分別測試網頁載入、TCP 建立連線與 UDP 需求,避免自動選擇組在測試期間切換出口。
- 暫時排除規則問題。同一網址在規則與全域模式下結果不同時,可回到連線記錄檢查規則命中鏈。
- 執行可重現的代理測速。固定伺服器、節點與測試時段,減少規則將不同測試網域送往不同出口所造成的偏差。
一次可重現的測速記錄
實驗可以先在直連模式下建立本地網路基準,再切換到全域模式測試同一節點。某次千兆有線網路記錄中,直連下載速度為 742 Mbps、上傳速度為 93 Mbps、空載延遲為 8 ms;固定同一代理節點後,下載速度為 186 Mbps、上傳速度為 61 Mbps、空載延遲為 48 ms。這些數字只代表該網路、該節點與該時段的鏈路,不應作為其他裝置的速度預期。
- 關閉正在同步檔案、下載更新或播放影片的應用程式。
- 在直連模式下對同一測速伺服器執行三次,記錄中位數。
- 切換到全域模式,在 GLOBAL 組中固定一個節點。
- 關閉測速頁面後重新開啟,確保建立新連線,再執行三次測試。
- 同時記錄下載速度、上傳速度、空載延遲、負載延遲與封包遺失率。
用戶端節點清單中的延遲測試通常只是向指定測試 URL 發出較短的 HTTP 請求,用於判斷可達性與往返時間。顯示 52 ms 不代表節點能穩定跑滿頻寬,也不表示 UDP、長連線或大型檔案傳輸一定正常。
直連模式:保留接管,出口改為本地網路
直連模式會讓進入核心的連線使用 DIRECT 出站。它適合測量不經代理節點時的網路基準,也適合存取區域網路裝置、除錯本地服務,或判斷故障是否來自遠端節點。直連不等於退出用戶端:本地監聽連接埠、TUN 虛擬網卡、連線記錄與 DNS 模組可能仍在運作。
直連模式與完全關閉 Clash 的差異
| 操作 | 本地代理連接埠 | TUN 接管 | Clash DNS |
|---|---|---|---|
| 切換直連模式 | 通常繼續監聽 | 通常維持原狀態 | 可能繼續解析 |
| 關閉系統代理 | 連接埠仍可能監聽 | 不一定關閉 | 取決於 TUN 與系統 DNS 設定 |
| 退出用戶端 | 停止監聽 | 應撤銷虛擬網卡與路由 | 核心 DNS 停止 |
因此,排查 DNS 問題時,只切換直連模式不一定能得到「完全不經 Clash」的結果。若設定啟用了 dns.enable、TUN 的 DNS 劫持或 fake-ip,查詢仍可能由核心處理。若要建立作業系統原始網路基準,應記錄並逐項恢復系統代理、TUN、DNS 與路由狀態。
內網除錯的建議順序
- 先在規則模式中查看目標位址命中了哪條規則。
- 確認目標屬於實際內網網段,例如
192.168.1.0/24,並檢查是否存在同名的公網網域。 - 切換到直連模式,關閉舊連線後重新存取服務。
- 若仍然失敗,檢查本機路由表、企業 VPN、容器網路與服務監聽位址。
- 直連可用而規則模式失敗時,為該網域或網段新增一條置前的 DIRECT 規則。
本地開發時還要區分監聽位址。服務只監聽 127.0.0.1:3000 時,其他裝置無法透過區域網路 IP 存取;這不是 Clash 模式造成的問題。若服務監聽 0.0.0.0:3000,再檢查系統防火牆、區域網路隔離與對應網段的 DIRECT 規則。
切換模式後,舊連線不會自動改道
Clash 通常會在建立連線時決定出站方式。既有的 TCP 連線不會因為從規則切換到全域而轉移至另一個節點,WebSocket、SSH、影片串流、雲端硬碟同步與 HTTP/2 長連線尤其明顯。介面顯示的新模式只代表後續新建立的連線會依新邏輯處理。
讓測試結果反映新模式
- 重新整理網頁前先關閉對應分頁,必要時完全退出並重新啟動瀏覽器。
- 在用戶端連線頁面中終止舊連線;測試 SSH 時重新建立工作階段。
- 等待應用程式連線池釋放,或重新啟動持續在背景執行的應用程式。
- 切換節點後重新發起 DNS 查詢,避免將舊解析結果與新出口混在一起判斷。
- 測試 UDP 應用程式時重新啟動工作階段,因為部分應用程式會長時間重用映射。
在常見的圖形化用戶端中,模式入口通常位於「代理」→「模式」,可選擇「規則」「全域」或「直連」;部分用戶端會將其放在「設定」→「Clash 設定」→「執行模式」,系統匣選單也可能提供同名選項。選單名稱會隨用戶端版本變化,但核心對應值仍是 rule、global 與 direct。
若啟用了 mihomo 的外部控制器,例如 127.0.0.1:9090,控制面板會透過控制介面修改模式。請求本文中的值同樣使用小寫英文:
PUT /configs
Content-Type: application/json
{"mode":"rule"}
外部控制器應只監聽受信任的介面,並設定存取憑證。修改後可重新讀取執行設定,並在連線記錄中建立新請求,確認實際模式與命中鏈一致。手動編輯設定檔時還要執行重新載入;只修改磁碟上的檔案,無法保證正在執行的核心立即採用新值。
依使用情境選擇模式
日常瀏覽與長時間背景執行
選擇規則模式。先確保區域網路、常用直連服務與代理服務分別命中預期規則,再讓策略組處理節點切換。規則模式提供更清楚的流量記錄,也能避免所有連線集中到同一個遠端出口。
某個網站突然無法開啟
維持規則模式查看連線記錄,記下命中的規則與策略組;接著切換到全域模式,使用同一節點重新建立連線。全域可用時回頭檢查規則,全域仍不可用時檢查節點、DNS 與目標服務。測試結束後恢復規則模式。
比較本地網路與節點效能
先以直連模式測試三次本地基準,再以全域模式固定節點測試三次。測試伺服器、裝置連線方式與時段應保持一致。不要直接在規則模式下比較多個測速網域,因為它們可能命中不同規則或策略組。
存取 NAS、路由器與開發服務
先嘗試規則模式中的區域網路 DIRECT 規則。暫時切換直連可用於確認代理出口是否參與故障,但長期處理方式應是補齊內網網域與網段規則。若 TUN 路由與企業 VPN 衝突,還需要調整路由排除項目,單純設定直連模式無法修復路由表。
暫停遠端代理但保留用戶端觀察
選擇直連模式可以保留連線記錄與本地接管結構,方便比較請求行為。若目標是恢復作業系統原始網路狀態,則還應關閉系統代理與 TUN,並確認 DNS、預設路由與虛擬網卡已恢復。
一份可執行的模式排查清單
- 確認應用程式流量透過系統代理、手動代理或 TUN 進入 Clash。
- 記錄目前的執行模式,不要將模式與策略組名稱混為一談。
- 在連線頁面查看目標網域、目標 IP、命中規則與實際鏈路。
- 規則模式異常時,使用全域模式固定同一節點進行對照。
- 需要本地基準時切換到直連,並注意 DNS 可能仍由核心處理。
- 每次切換後關閉舊連線,重新開啟頁面或重新啟動測試應用程式。
- 問題定位完成後回到規則模式,修正規則順序、規則集或策略組選擇。
三種模式沒有統一的速度排序。規則模式的結果取決於命中的規則與策略組,全域模式取決於 GLOBAL 選定的節點,直連模式則取決於本地電信商鏈路。選擇模式時應先釐清測試對象:是規則決策、遠端節點,還是本地網路。將三者分開記錄,才能從連線記錄中得到可重現的結論。