使用教學 · Clash 技術部落格

Clash 代理模式怎麼選?Rule、Global、Direct 的區別與切換方法

Rule、Global 和 Direct 決定已進入 Clash 的連線按規則分流、統一代理或本機直連。本文說明三種模式的適用情境、與系統代理和 TUN 的區別、舊版 Script 邊界及檢查方法。

  • 代理模式
  • Rule
  • Global
  • Direct
  • Script
本文目錄

切到 Global 後,有些應用程式恢復了,有些卻仍沒有反應,這並不矛盾。執行模式決定連線如何選擇路徑,系統代理或虛擬網卡則決定哪些程式的請求能進來。分清這兩件事,才能用模式切換做對照,避免把暫時測試留下來當成長期設定。

Rule、Global、Direct 決定連線走哪條路

日常使用 Rule 按規則分流。需要暫時切換出口或比較存取結果時,再用 Global 或 Direct;切換模式不會提高節點本身的速度。

模式怎樣處理連線常見用途
Rule按順序匹配規則,執行第一條命中規則的策略日常讓不同服務使用不同出口
Global交給 GLOBAL 組,實際出口取決於該組選擇臨時統一出口,或指定節點做存取對照
Direct使用本機網路出口驗證本機網路可達性,或暫時直連

這些模式只影響已經進入核心的連線。某個應用的流量沒有進入核心時,切到 Global 也不會自動接管它。應用在 Connections 中完全沒有記錄,可以檢查系統代理、應用代理或 TUN 是否生效。

在 Clash Verge Rev 等桌面用戶端中,開啟主介面的“代理模式”項,或右鍵系統匣圖示進入 Mode / 模式子選單;在行動裝置則通常位於首頁或 Proxies / 代理頁的“模式”一行。

在用戶端裡完成一次實際切換

  1. 開啟 Mode / 代理模式

    從主介面模式項或系統匣選單進入,不要去改遠端 YAML 的 mode 欄位。

  2. 選擇 Rule

    開啟目標網頁,到 Connections 記下目前命中規則和出口。

  3. 需要對照時選擇 Global 或 Direct

    保持同一節點和目標,只更改模式並重新建立連線。

  4. 對照結束切回 Rule

    再次請求目標,確認新的連線已經恢復按規則分流。

系統代理、TUN、策略群組和 DNS 的分工

系統代理、TUN 和行動裝置 VPN 決定流量怎樣進入核心;select、url-test、fallback 決定策略群組怎樣選出口;fake-ip 與 redir-host 則是 DNS 增強模式。這些設定用途不同,都叫作「代理模式」容易讓人改錯開關。

這些名稱分別控制什麼

設定類別常見選項實際決定
執行模式Rule / Global / Direct已進入核心的連線最終使用哪個出口
接管方式System Proxy / TUN / 行動裝置 VPN哪些應用或系統流量能夠進入核心
策略群組類型select / url-test / fallback一個策略群組內部怎樣選擇節點或其他策略
DNS 增強模式fake-ip / redir-host網域解析結果怎樣交給規則與連線流程

Rule 模式:規則順序與連線驗證

Rule 是 Mihomo 的預設執行模式,適合需要直連、代理、拒絕和不同策略群組並存的日常情境。它並不天然等於「國內直連、國外代理」,實際結果完全取決於目前設定中的 rules、rule-providers 及其順序。

Mihomo 從 rules 頂部向下檢查,命中第一條就停止。若網域本應走代理,卻先命中了更寬的 DIRECT 規則,後面的規則就不會執行。列表末尾常見的 MATCH 用來處理前面未匹配的連線。

開啟 Connections,找到剛才的請求,查看規則類型和策略群組。介面顯示 DOMAIN-SUFFIX、RULE-SET 或 MATCH,能直接告訴你是哪裡做了決定;憑感覺把模式來回切換,反而看不到規則順序的問題。

自包含的順序示例,只使用 Mihomo 內建動作
rules:
  - DOMAIN,api.example.com,DIRECT
  - DOMAIN-SUFFIX,example.com,REJECT
  - MATCH,DIRECT

檢查一條實際請求

  1. 保持 Rule 模式

    需要測試代理時,在主要策略群組中固定一個確認可用的節點;直連或拒絕規則不需要選擇代理節點。

  2. 重做目標動作

    開啟同一網頁、再次請求同一端點或啟動同一應用程式。

  3. 到 Connections 找到它

    按網域、處理程序或時間定位剛產生的連線。

  4. 讀取規則與出口

    確認它是 DIRECT、REJECT 還是某個代理策略群組。

如果結果符合預期,Rule 就是正常狀態。某個網站失敗時,只改與它有關的規則或策略群組,不要因為一條連線把全站切到 Global。

Global 模式:GLOBAL 組與節點選擇

Global 只改變已經進入 Mihomo 的連線,不會自動接管裝置上所有應用。進入該模式後,還要到 GLOBAL 策略群組確認目前選中的是具體節點、其他策略群組還是 DIRECT;只看頂部顯示 Global,無法判斷實際出口。

在 Global 模式下,先到 GLOBAL 策略群組選擇一條具體節點。若目標請求在 Rule 下命中 DIRECT 而失敗,切到 Global 後透過該節點成功,說明網路和節點至少可用,重點回到 Rule 的匹配順序。

Global 下仍然 timeout,規則就不是唯一原因;比較節點、DNS 和本機網路。測試結束後切回 Rule,因為系統更新、區域網路和國內服務等原本的直連流量在 Global 下也可能被送到同一出口。

Direct 模式:直連與退出用戶端的區別

Direct 模式會讓進入 Clash 的請求直接存取。一個本機可達的網站在 Direct 成功、在代理策略失敗,問題更可能出在節點或代理連線;Direct 也失敗,則檢查本機 DNS、網路或目標服務。

Direct 不是「關閉 Clash」的完全等價物。請求仍可能進入核心,只是出口選擇 DIRECT。要判斷應用有沒有經過 Clash,仍然要看 Connections,而不是只看頁面是否開啟。

Direct 成功,Rule 失敗且走代理
檢查該代理策略的節點和規則是否應該這樣安排。
Direct 與 Global 都失敗
分別查看本機網路和代理日誌,不要把結果歸給模式名稱。
三種模式都沒有連線記錄
重新發起請求後仍沒有記錄時,檢查系統代理、應用程式自身代理或虛擬網卡設定是否生效,不要只靠切換模式判斷接管。

Script 模式:舊用戶端與目前 Mihomo 的差別

部分歷史 Clash 用戶端、舊核心或特定設定曾提供 Script / 指令碼模式,用指令碼處理比普通規則更複雜的判斷。目前 Mihomo 通用設定文件只把 Rule、Global、Direct 列為執行模式,因此不能把 Script 寫成所有現代用戶端都具備的第四種通用模式。

舊用戶端裡能看到 Script,不代表遷移到新用戶端後仍有同名開關;新用戶端裡找不到也不表示安裝失敗。遷移舊設定時,應先確認指令碼實際判斷了哪些網域、網路或處理程序,再按目前核心能力改寫為 rules、rule-providers 或用戶端支援的覆寫。

遇到 Script 時怎麼判斷

看到的位置應怎樣理解下一步
歷史用戶端的模式選單該版本或核心提供的相容能力保留舊環境記錄並核對對應版本文件
舊設定中的指令碼段可能包含自訂路由邏輯先讀清判斷條件,再決定是否遷移
新 Mihomo 用戶端沒有 Script符合目前三種通用執行模式的介面不要強行寫入未經目前核心確認的 mode 值
Merge、覆寫或 JavaScript 頁面屬於用戶端設定處理能力不要和核心執行模式混為一談

切換模式後,如何判斷連線結果?

Rule 失敗,Global 成功

比較兩次 Connections 的規則和出口,修正 Rule 匹配。

Global 頁面仍顯示 DIRECT

檢查 GLOBAL 策略群組的目前選擇,而不是只看頂部模式。

切到 Direct 後區域網路恢復

補充本機網段直連規則,避免長期靠切模式。

模式切換後頁面結果不變

關閉重用連線並重新請求,再看新產生的記錄。

一次對照結束後,把模式切回原計劃,再重複同一動作。如果 Rule 中已經命中正確策略且結果正常,就不需要保留 Global 作為「修復」。

參考資料