Clash 三種代理模式

整理 Clash 的 mode 設定,說明規則、全域與直連模式的流量處理方式、切換時機,以及 MATCH 兜底規則的用途。

先釐清:流量如何進入,以及代理模式的差異

日常依規則分流,排查問題時短暫切換至全域模式,需要由本機直接連線時則選擇直連。這三種模式決定的是連線進入 Clash 核心後,如何選擇出口;它們不會直接決定哪些應用程式的流量能進入用戶端。

例如,瀏覽器透過系統代理連入用戶端,或應用程式手動使用本機的 127.0.0.1:7890 HTTP 代理,連線才會交由核心處理。啟用 TUN 模式則是另一種流量接入方式,通常會透過虛擬網路介面與路由接管更多流量。實際接管範圍仍會受到作業系統、路由設定、排除項目與權限影響。

以下說明適用於常見的 Clash 設定語意,以及 Clash Meta(mihomo)核心。用戶端可能將入口稱為「代理模式」、「執行模式」或「模式」,但規則、全域、直連這三項通常對應相同的一組 mode 值。

mode 設定:三種模式比較

在設定檔的頂層,mode 與 mixed-port、rules 等欄位位於同一層,不應縮排至 dns 或某個策略群組內。常見寫法如下;此處僅示範模式與監聽連接埠,並非可獨立執行的訂閱設定檔。

mixed-port: 7890
mode: rule
log-level: info
介面名稱設定值出口選擇方式適用情境
規則模式rule依規則順序比對,交由符合規則的目標處理日常分流、保留區域網路直連
全域模式global交由內建的 GLOBAL 策略群組選擇出口比較測試、暫時統一出口
直連模式direct使用 DIRECT 出口比較本機網路、暫時直接連線

在介面中切換模式時,用戶端通常會透過核心控制介面變更目前的執行狀態,不一定會直接修改訂閱檔案。重新載入設定、重新啟動用戶端或更新訂閱後,是否保留所選模式,取決於用戶端的持續儲存與覆寫機制。若要固定預設值,應檢查用戶端提供的覆寫設定,不要只修改下次更新就會被取代的訂閱副本。

規則模式:由上往下比對,符合即停止

在規則模式下,核心會依照 rules 清單的順序檢查連線,第一條符合的規則會決定處理目標。目標可以是 DIRECT、REJECT,也可以是策略群組名稱。因此,「規則模式」不等於「全部走代理」,而是讓不同連線採用不同的處理方式。

容易閱讀的規則範例

以下範例假設設定中已經有名為「代理選擇」的策略群組。該名稱必須與 proxy-groups 中實際設定的 name 完全一致;只有這幾行規則無法建立代理節點或策略群組。

mode: rule

rules:
  - DOMAIN-SUFFIX,example.com,代理選擇
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - MATCH,代理選擇
  • DOMAIN-SUFFIX,example.com 會比對該網域及其子網域,前提是核心能取得該連線對應的網域資訊。
  • 三條 IP-CIDR 規則涵蓋常見的 IPv4 私有網段,適合將連往本機服務的連線交由直連出口處理。
  • no-resolve 表示比對這條 IP 規則時不額外觸發網域解析,並不代表整條連線不需要 DNS。
  • 最後的 MATCH 會接住前面都未符合的連線,並交由「代理選擇」處理。

規則清單不會自動依照「越精確越優先」排序。若將 MATCH,DIRECT 放在第一行,後面的網域規則就沒有比對機會。同樣地,較寬泛的規則若排在精確規則之前,也可能導致後者始終不生效。

策略群組的選擇仍會影響最終出口

規則符合「代理選擇」只完成第一步。若該群組目前選擇 DIRECT,連線最後仍會直連;若選擇另一個策略群組,則還要沿著引用關係繼續確認出口。遇到「符合代理規則,卻沒有使用預期節點」的情況,應一併檢查符合的規則、目標群組及群組內目前的選擇,不要只看模式按鈕。

MATCH 兜底:決定未分類連線的去向

MATCH 不需要網域、IP 或連接埠條件,會比對所有執行到該行的連線。為了讓設定行為一目了然,通常會將它放在規則清單末尾。它不是失敗重試機制,節點無法連線時也不會自動改為直連。

規則寫法未分類連線的處理結果檢查重點
MATCH,代理選擇交由指定的策略群組處理確認群組是否存在,以及目前選擇是否可用
MATCH,DIRECT由本機直接連線至目標確認本機網路是否能連上目標服務
MATCH,REJECT拒絕前面規則未允許的連線確認是否漏掉必要的允許規則

若要讓「已知的本機服務直連,其餘連線交由代理群組」,可採用前面範例的結構;若要「只代理明確列出的網域,其餘直連」,則可將最後一行改為 MATCH,DIRECT。兩者差異在於預設出口,而非規則模式本身。

全域模式:適合比較出口

將 mode 設為 global 後,進入核心並由核心處理的連線會交由內建的 GLOBAL 策略群組,而不會依照一般的 rules 清單逐條分流。請在用戶端的代理頁面確認全域群組目前的選擇;只切換模式而未檢查全域群組,無法確保出口是預期的節點。

全域群組可選的內容取決於核心與用戶端的呈現方式。若目前選擇的是 DIRECT,即使介面顯示「全域」,最後仍可能直接連線。因此,全域描述的是統一選擇出口的方式,不保證「一定使用遠端代理」。

規則模式失敗、全域模式成功時的排查方式

  1. 使用相同的目標位址,先在規則模式下建立新連線,並記錄連線頁面顯示的符合規則、策略鏈與出口。
  2. 切換至全域模式,在 GLOBAL 中明確選擇剛才要測試的同一個節點,再建立新連線。
  3. 若只有全域模式成功,優先檢查規則順序、規則集是否已載入,以及規則模式所用策略群組的實際選擇。
  4. 若兩種模式都失敗,請改查節點狀態、本機接入方式、DNS 與目標服務,不要只繼續調整規則。

全域模式也有使用限制。區域網路連線原本可能由直連規則處理,切換後一般分流規則便不再參與選擇。若印表機、NAS 或內部網站出現異常,應先切回規則模式並檢查連線路徑,而不是長期把全域模式當成通用的修復方法。

直連模式:不等於關閉用戶端

mode: direct 會讓核心處理的連線透過 DIRECT 出口連線至目標。此時用戶端仍可能監聽本機連接埠、接收系統代理流量或執行 TUN;核心的 DNS 模組也可能繼續參與解析。這與結束用戶端、關閉系統代理或關閉 TUN 是不同操作。

這項差異對疑難排解很重要:直連模式可用來比較「透過遠端代理」與「由本機連線」的結果,但無法單獨證明用戶端接管完全沒有影響。若要測試作業系統原本的網路路徑,也應分別關閉系統代理與 TUN,並確認應用程式沒有手動指定代理位址。

適合使用直連模式的三種情境

  • 測試本機服務:確認目前的網路能否直接連上目標,再決定是否需要新增直連規則。
  • 比較節點與線路:對同一個位址分別透過直連與代理出口建立新連線,比較實際連線狀況,而非只看介面上的測速結果。
  • 暫時恢復預設出口:維持用戶端執行,同時暫時讓進入核心的連線直接連線至目標。

直連模式同樣不會依照一般規則清單分流,因此其中的 REJECT 規則不會繼續執行規則式封鎖。若某些存取限制仰賴這些規則,切換前請先了解行為變化。

系統代理、TUN 與 DNS 的檢查順序

遇到「切換模式後沒有變化」時,可依序檢查流量接入、模式、規則與出口。先確認連線是否出現在用戶端的連線頁面,再查看比對資訊,比反覆重新啟動更容易縮小問題範圍。

  1. 確認接入連接埠:若實際的 mixed-port 為 7890,應用程式就應使用對應的本機代理位址。若連接埠已改為 7891,應用程式仍指向 7890,就可能連線失敗或接入另一個程序。
  2. 確認目前模式:在用戶端的模式選單中檢查實際選取的項目,不要只查看磁碟上的 mode 設定。介面可能已變更目前的執行狀態。
  3. 確認策略鏈:規則模式要看符合的項目與策略群組;全域模式要看 GLOBAL;直連模式則確認是否使用 DIRECT。
  4. 重新建立連線:切換模式通常會影響新連線,既有的下載、影片串流或長連線未必會立即切換。可先關閉測試頁面再重新開啟,必要時只結束對應的連線。
  5. 單獨檢查解析設定:切換模式不會自動改寫所有 DNS 設定。應用程式的加密 DNS、系統快取、核心 DNS 與 TUN 的 DNS 接管,都可能影響最後取得的位址。

日常模式選擇與恢復檢查

對於已設定好訂閱、策略群組與規則的用戶端,規則模式通常較適合作為日常預設選項。它能保留區域網路直連、指定網站代理及必要的拒絕規則;全域模式適合短時間驗證出口,直連模式則適合比較本機網路路徑。

  • 日常使用:選擇規則模式,確認末尾的 MATCH 指向符合需求的目標。
  • 分流異常:短暫切換至全域模式,並明確選擇要比較的節點;確認差異後,回到規則清單找出問題。
  • 測試網路基準:先使用直連模式進行比較;若還要排除流量接管的影響,再關閉系統代理與 TUN 測試。
  • 測試完成:恢復原本的模式與策略群組選擇,再檢查區域網路服務及常用網站,避免長期保留暫時設定。

掌握兩個不同的問題,就能減少混淆:系統代理或 TUN 決定連線如何進入用戶端,mode 則決定連線進入後如何選擇出口。在規則模式下,再檢查「由上往下比對,最後由 MATCH 收尾」,就能解釋大多數模式切換與分流結果。

下載 Clash依平台選擇用戶端