本文目錄
先分清:執行模式、系統代理與 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 則直接使用本機網路。它們不會改變一個節點本身的頻寬和延遲。
在用戶端裡完成一次實際切換
開啟 Mode / 代理模式
從主介面模式項或系統匣選單進入,不要去改遠端 YAML 的 mode 欄位。
選擇 Rule
開啟目標網頁,到 Connections 記下目前命中規則和出口。
需要對照時選擇 Global 或 Direct
保持同一節點和目標,只更改模式並重新增立連線。
對照結束切回 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,能直接告訴你是哪裡做了決定;憑感覺把模式來回切換,反而看不到規則順序的問題。
rules:
- DOMAIN,api.example.com,DIRECT
- DOMAIN-SUFFIX,example.com,REJECT
- MATCH,DIRECT日常使用 Rule,要能回答「這條連線命中了什麼」
檢查一條實際請求
保持 Rule 模式
在主要策略群組裡固定一條已知可用節點。
重做目標動作
開啟同一網頁、重新整理同一介面或啟動同一應用。
到 Connections 找到它
按網域、處理程式或時間定位剛產生的連線。
讀取規則與出口
確認它是 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 頁面 | 屬於用戶端設定處理能力 | 不要和核心執行模式混為一談 |
三種模式怎麼選:只改變一個變數做對照
按情境選擇執行模式
| 目前目的 | 建議模式 | 需要觀察 |
|---|---|---|
| 日常按服務分流 | Rule | Connections 中的命中規則、策略群組和實際出口 |
| 判斷是不是規則把請求送錯 | 短時間使用 Global | GLOBAL 組選擇與重建後的新連線 |
| 判斷本機網路能否直達 | 短時間使用 Direct | 本機 DNS、目標可達性和連線記錄 |
| 應用沒有任何連線記錄 | 先不切模式 | 系統代理、應用代理、TUN 或行動裝置 VPN |
Rule 失敗,Global 成功
比較兩次 Connections 的規則和出口,修正 Rule 匹配。
Global 頁面仍顯示 DIRECT
檢查 GLOBAL 策略群組的目前選擇,而不是只看頂部模式。
切到 Direct 後區域網路恢復
補充本機網段直連規則,避免長期靠切模式。
模式切換後頁面結果不變
關閉重用連線並重新請求,再看新產生的記錄。
一次對照結束後,把模式切回原計劃,再重複同一動作。如果 Rule 中已經命中正確策略且結果正常,就不需要保留 Global 作為「修復」。
