使用教學 · Clash 技術部落格

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

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

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

先分清:執行模式、系統代理與 TUN 不是一回事

Mihomo 目前文件列出的執行模式是 Rule、Global 和 Direct,預設使用 Rule。它們處理的是已經進入核心的連線,並決定這條連線接下來按規則分流、統一交給 GLOBAL 策略群組,還是直接使用本機網路。

系統代理、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網域解析結果怎樣交給規則與連線流程

三種執行模式改變出口決定,不改變節點速度

在 Clash Verge Rev 等桌面用戶端中,開啟主介面的「代理模式」項,或右鍵系統匣圖示進入 Mode / 模式子選單;在行動裝置則通常位於首頁或 Proxies / 代理頁的「模式」一行。日常使用先點 Rule,需要判斷是不是規則導致某個網站走錯時,再短暫切到 Global 或 Direct。

三個模式接收的是同一批進入 Clash 的連線,區別在於接下來怎麼選出口。Rule 按規則從上到下匹配,Global 把連線交給全域策略群組,Direct 則直接使用本機網路。它們不會改變一個節點本身的頻寬和延遲。

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

  1. 開啟 Mode / 代理模式

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

  2. 選擇 Rule

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

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

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

  4. 對照結束切回 Rule

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

模式與實際用途

模式連線怎麼走適合什麼時候用
Rule命中第一條適用規則後執行對應策略日常使用,讓不同服務走不同出口
Global所有進入 Clash 的連線交給全域組短時間對照規則是否造成問題
Direct所有進入 Clash 的連線直接存取驗證本機網路,或暫時不使用代理

模式只影響已經進入 Clash 的流量。應用完全不讀取系統代理、Connections 裡沒有記錄時,從 Rule 切到 Global 不會讓它突然出現;應先處理系統代理、應用代理或 TUN。

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

日常使用 Rule,要能回答「這條連線命中了什麼」

檢查一條實際請求

  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 都失敗
分別查看本機網路和代理日誌,不要把結果歸給模式名稱。
三種模式都沒有連線記錄
應用繞過了 Clash,先修流量入口。

為什麼舊用戶端裡還有 Script / 指令碼模式

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

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

遇到 Script 時怎麼判斷

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

三種模式怎麼選:只改變一個變數做對照

按情境選擇執行模式

目前目的建議模式需要觀察
日常按服務分流RuleConnections 中的命中規則、策略群組和實際出口
判斷是不是規則把請求送錯短時間使用 GlobalGLOBAL 組選擇與重建後的新連線
判斷本機網路能否直達短時間使用 Direct本機 DNS、目標可達性和連線記錄
應用沒有任何連線記錄先不切模式系統代理、應用代理、TUN 或行動裝置 VPN

Rule 失敗,Global 成功

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

Global 頁面仍顯示 DIRECT

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

切到 Direct 後區域網路恢復

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

模式切換後頁面結果不變

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

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

參考資料