規則模式、全域模式、直連模式怎麼選?Clash 三種代理模式比較

比較 Clash 的 rule、global、direct 三種模式,了解流量如何匹配、各模式適用情境,以及切換後如何確認是否生效。

三種模式決定流量出口,不決定流量是否進入核心

Clash 的代理模式是流量進入核心後的處理方式。rule 依規則選擇策略,global 使用內建的全域策略 GLOBAL,direct 則直接連線。從 Clash Meta 延續至 mihomo,這三種基本模式使用的設定值都相同。

這裡要分清楚兩件事:系統代理、應用程式代理和 TUN 負責將連線送進核心;代理模式則決定收到的連線要往哪裡走。因此,「全域模式」不代表「電腦上的所有程式都已經交由核心處理」。忽略系統代理、又未由 TUN 接管的程式,不會因為切換到全域模式就自動經由節點連線。

設定值常見介面名稱新連線如何選擇出口常見用途
rule規則、Rule依序比對規則,並執行符合項目的策略日常分流、保留區域網路直連
global全域、Global使用 GLOBAL 目前選取的出口暫時統一出口、比對排查規則
direct直連、Direct不經代理節點,直接連線至目標測試本機網路、暫停代理轉送

規則模式:依序比對,符合後即停止

mode: rule 是依設定進行流量分流的模式。常見規則包括網域後綴、目標 IP 網段,以及最後的預設策略。規則通常由上而下檢查,第一條符合的規則會決定這條連線採用的策略;後續規則不會再替它重新選擇出口。

簡明易讀的分流範例

以下是設定片段,只使用內建的 DIRECT 策略,方便單獨理解語法,不會憑空建立代理節點。

mode: rule
log-level: info

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - MATCH,DIRECT

如果實際使用的訂閱中已有名為 Proxy 的代理群組,可以將最後一行改為 MATCH,Proxy。名稱必須與設定中的代理群組完全一致,包含大小寫。不要只新增規則卻漏了對應群組,否則載入設定時可能出現找不到策略的錯誤。

符合代理群組,不代表已選取代理節點

規則指向的是策略;策略可能是節點、選擇群組、自動測速群組,也可能是 DIRECT。例如規則符合 Proxy,但該選擇群組目前選的是 DIRECT,實際連線仍會直連。排查時要同時查看「符合哪條規則」及「策略群組最後選了什麼」,不能只看規則名稱。

全域模式:使用 GLOBAL,但仍受接管範圍限制

mode: global 會讓進入核心的一般連線使用內建的 GLOBAL 選擇策略,而非依照一般的 rules 清單分流。切換後,還要在用戶端的代理選擇介面找到 GLOBAL,確認目前選取的是預期的節點或策略。

用戶端可能會將這個選項顯示為「全域」或「全域選擇」。實際選單名稱會因用戶端而異;判斷時應確認目前模式為 global,且全域策略已明確選取預期項目。如果 GLOBAL 仍指向 DIRECT,全域模式也不會使用代理出口。

適合短時間進行對照測試

  1. 在規則模式下遇到某個網站連線異常,先記下符合的規則和策略。
  2. 切換至全域模式,並選取已確認可用的節點。
  3. 關閉目標網站的舊連線,再重新發出請求。
  4. 如果新連線恢復正常,再回頭檢查規則順序、網域涵蓋範圍,以及原策略群組的選取項目。

這項結果只能表示兩次測試採用不同的處理路徑,不能直接證明「規則檔損毀」。兩次使用不同節點、DNS 解析結果變動,或舊連線尚未中斷,都可能影響觀察結果。比較時盡量維持節點、目標位址和接管方式一致,只變更模式。

直連模式:不使用節點,不代表關閉用戶端

mode: direct 表示進入核心的連線會直接連至目標,不使用代理節點。系統代理設定、TUN 虛擬網卡,以及核心的 DNS 服務可能仍在運作,因此「直連模式」和「結束用戶端、關閉流量接管」並不是相同的測試條件。

例如,瀏覽器仍將請求送往本機 127.0.0.1:7890,再由核心直接連至目標,這仍是經由本機代理入口。這裡的 7890 只是常見設定範例;實際連接埠應以目前執行設定中的 mixed-port 或 port 為準。

哪些問題適合用直連模式比較

直連不保證所有網站都能存取,也不會自動將 DNS 改成電信業者的伺服器。網域解析仍可能依目前設定使用加密 DNS、指定解析器或其他 DNS 規則。要排查解析問題,應另外檢查 dns 設定,不要把模式切換當成重設 DNS 的按鈕。

切換後如何確認生效:分別檢查設定、連線與出口

編輯 YAML 中的 mode,不代表目前執行中的核心已採用新值。有些用戶端會以介面狀態或覆寫設定取代訂閱欄位;更新訂閱也可能覆蓋手動修改。應以用戶端目前顯示的執行模式和新連線紀錄為準。

依固定步驟檢查,別只看網頁能不能開啟

  1. 記錄原始狀態。記下模式、目前節點,以及系統代理或 TUN 的開關狀態,並保留可還原的設定。
  2. 只變更一個變數。只切換模式,先不要同時修改 DNS、節點和規則。若要在全域模式中選擇出口,也要記下選取的項目。
  3. 建立新連線。關閉測試程式的舊連線;必要時在用戶端的連線面板中結束相關連線。既有 TCP 連線通常不會自動切換至新出口。
  4. 檢查連線詳細資料。在「連線」或「Connections」頁面中,查找目標網域、目標 IP、符合的規則和策略鏈。各用戶端顯示的欄位可能不同。
  5. 確認出口。使用可信任的出口 IP 查詢服務檢查結果,再與直連基準比較。出口 IP 相同不一定代表設定無效,例如兩條連線路徑可能共用同一個公網出口。

使用 curl 固定測試入口

假設目前設定已啟用 mixed-port: 7890,可以明確指定本機代理,減少瀏覽器擴充功能和系統代理設定造成的干擾:

curl --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com
curl --noproxy "*" --connect-timeout 10 --max-time 20 -I https://example.com

第一個指令會經由指定的本機 HTTP 代理入口,再由目前模式決定出口;這不代表「強制使用遠端節點」。第二個指令不會使用 curl 明確指定的代理,但如果 TUN 仍在接管流量,請求仍可能進入核心,因此不能直接視為繞過用戶端的基準。在 Windows PowerShell 中,如果遇到 curl 別名差異,可改用 curl.exe。

範例中的 10 秒連線逾時和 20 秒總逾時只是測試上限,不是速度標準。指令回傳 HTTP 狀態只表示收到回應,不能證明出口符合預期。最後仍須搭配核心的連線紀錄判斷;若目標網站不支援 HEAD 請求,也應改用一般 GET 請求重新確認。

依使用情境選擇:日常分流、臨時排查與直連基準

使用情境優先選擇同時確認
日常瀏覽,同時使用內網和外部服務規則模式本機網段、網域規則與預設策略是否合適
懷疑某個網域被錯誤分流暫時切換至全域模式比較GLOBAL 的選取項目、舊連線是否已結束
暫時不想使用代理節點直連模式DNS 與流量接管仍可能持續運作
某個程式完全沒有出現在連線面板先檢查接管方式應用程式代理設定、系統代理支援與 TUN 路由
需要測試不經由用戶端的本機網路關閉流量接管後再測試系統代理、TUN 與應用程式手動代理皆已還原

日常使用通常從規則模式開始:明確設定哪些連線直連,哪些連線使用代理群組。全域模式適合短時間統一出口或比對規則;直連模式適合暫時不使用節點,或建立部分測試基準。三者沒有固定的速度排名,實際表現取決於出口、節點品質、目標服務和本機網路。

常見誤判:切換模式無法解決的幾種問題

全域模式可以上網、規則模式不行,是否必須一直使用全域模式?

不必急著下這個結論。先查看規則模式下失敗的連線符合哪條規則,再確認對應群組是否選取可用節點。也可能是同一服務使用多個相關網域,只涵蓋主網域不足以處理登入、靜態資源或 API 請求。依照連線紀錄補上規則,比長期略過所有分流規則更能保留內網存取。

切換至直連後,為什麼記錄還在增加?

直連模式並未停止核心運作。只要系統代理或 TUN 繼續將流量交給核心,連線紀錄就會持續出現。要判斷是否使用遠端節點,應查看最終策略與出口,而不是看用戶端是否仍有流量計數。

全域模式是否代表所有 UDP 都能透過代理傳送?

不是。UDP 能否進入核心取決於接管方式,能否轉送則取決於入口、所選節點的通訊協定及其設定。只設定瀏覽器使用的 HTTP 系統代理,不保證遊戲或語音程式的 UDP 流量也會被接管;切換成 global 也無法補上這段缺少的路徑。

如需進一步設定,請參閱使用指南;要確認 mode、rules、連接埠與 DNS 欄位時,請查看設定參考。排查順序保持一致:先確認流量已進入核心,再確認策略選擇,最後檢查實際出口。

Clash 下載