先釐清代理模式與流量接管

Clash 的三種代理模式,決定的是進入核心的連線要選擇哪個出口。規則模式依規則分流,全域模式交由全域策略處理,直連模式則直接連線至目標。這三種模式不是接管裝置流量的不同方式,也不是三種速度設定。

系統代理、應用程式內的代理設定與 TUN,則負責將連線送進核心。例如,瀏覽器使用 127.0.0.1:7890 作為 HTTP 代理時,瀏覽器的相關請求就會進入這個監聽埠。未使用系統代理的應用程式,仍可能自行連線;開啟全域模式不會自動改變這點。

三種模式的流量路徑比較

模式與欄位值 出口選擇方式 適用情境
規則模式 rule 依照 rules 順序比對,採用第一條符合規則所指定的目標 日常瀏覽、區分台灣本地與中國大陸流量、依網域選擇策略
全域模式 global 使用內建 GLOBAL 策略組所選的出口 暫時排除規則影響、比較節點連線狀況
直連模式 direct 由核心直接連線至目標,不經代理節點轉送 比較本地網路、排查代理出口與區域網路連線

此處的「直連」仍在核心處理流程中,並不代表退出用戶端。DNS、監聽埠以及已啟用的流量接管機制仍可能參與連線。這三種模式也不會替你補上節點資訊、修復訂閱或修改伺服器端設定。

規則模式:依序比對,再交由策略組處理

規則模式適合長期使用。核心會由上而下檢查 rules,遇到第一條符合的規則時,就使用該規則指定的目標。目標可以是 DIRECT、REJECT、某個代理節點,或設定檔中已有的策略組。

規則目標與策略組選擇是兩個步驟

假設某條網域規則指向「節點選擇」,核心會先判定這條連線屬於「節點選擇」,再依據該組的類型與目前狀態決定實際出口。手動選擇組會使用目前選項;自動測速組則依自身設定選擇。規則符合某個策略組,不代表該組一定會轉送至遠端節點;如果組內選的是 DIRECT,最後仍會直連。

以下是用來說明規則順序的設定片段,並非完整訂閱。「節點選擇」必須與現有 proxy-groups 中的名稱完全一致,也應確認其他規則是否需要排在它前面。

mode: rule

rules:
  - DOMAIN-SUFFIX,home.arpa,DIRECT
  - 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 會依網域後綴比對。核心必須取得相應的網域資訊,不能假設所有純 IP 連線都能符合網域規則。
  • IP-CIDR 會比對目標 IP 網段。這三個網段涵蓋常見的私有 IPv4 位址。
  • no-resolve 表示不為這條 IP 規則額外觸發網域解析;已取得目標 IP 的連線仍可符合規則。
  • MATCH 是兜底規則,應放在需要優先執行的規則之後。若放在最前面,後續的一般規則就沒有比對機會。

網站走錯出口時,該檢查哪些項目

開啟連線詳細資訊,依序確認目標網域或 IP、符合的規則、策略鏈與最終節點。如果連線符合 MATCH,表示前面的規則都沒有接住它;如果符合正確的策略組,卻走到錯誤節點,應調整組內選項,而不是繼續新增類似規則。若要進一步設定,請參閱進階手冊中的策略組說明。

全域模式:透過 GLOBAL 暫時略過分流判斷

全域模式會將進入核心的連線交由 GLOBAL 策略組處理,不再使用一般的 rules 清單進行出口分流。用戶端介面通常會提供全域策略的選擇入口,實際名稱與位置則依用戶端版本而異。

切換至 global 後,還要確認 GLOBAL 目前選擇了什麼。它可能選擇某個節點、策略組,也可能是 DIRECT。光看「全域模式」四個字,無法判斷實際出口;平常在規則模式使用的「節點選擇」,也不一定是此時採用的全域選項。

透過全域模式區分規則問題與節點問題

  1. 記下目前在規則模式下無法開啟的網址,以及連線詳細資訊中的符合規則。
  2. 切換至全域模式,並在 GLOBAL 中明確選擇要測試的節點。
  3. 關閉該網址對應的舊連線,再重新發出請求,觀察新的連線紀錄。
  4. 如果全域模式可用、規則模式不可用,優先檢查規則比對結果與策略組選擇;如果兩者都無法使用,再檢查節點、DNS 與流量接管路徑。
  5. 測試結束後,切回規則模式,並再次確認日常使用的策略組。

直連模式:排查本地網路,不等於關閉 Clash

在直連模式下,核心會直接連線至目標,不透過代理節點中轉。這個模式適合用來確認一件事:同一個請求不經遠端代理出口時,能否成功?例如無法開啟路由器管理頁面時,可以先切換至直連模式,重新建立連線,再確認是否恢復正常。

不過,直連模式並不等於完整還原「原生網路」狀態。啟用 TUN 時,相關連線仍可能經過虛擬網卡;啟用 mihomo DNS 或 Fake-IP 時,解析與位址映射仍可能由核心處理。只有退出相關的流量接管路徑,才能測試應用程式是否完全繞過核心。

分兩輪比較,避免混淆原因

  • 第一輪:維持系統代理或 TUN 設定不變,只切換至直連模式。主要比較問題是否與代理節點或出口選擇有關。
  • 第二輪:依照用戶端提供的開關關閉系統代理與 TUN,並檢查瀏覽器是否另有代理設定。主要比較問題是否與核心接管、DNS 或應用程式代理有關。

如果第一輪仍然失敗,第二輪卻恢復正常,就不能直接斷定「本地網路有問題」。應繼續檢查 DNS 設定、虛擬網卡路由、代理監聽埠與防火牆。反過來說,直連失敗但代理成功,也可能是本地網路連往目標服務的路徑不同,並不代表規則模式一定有問題。

在哪裡切換模式,以及設定欄位的寫法

桌面用戶端常見的入口是主畫面的「代理模式」,或系統匣選單中的「規則/全域/直連」。手機版可能會將選項放在首頁的模式設定或側邊選單。各用戶端的介面不同,不應把某一款用戶端的選單路徑當成所有 Clash 用戶端都通用。

確認時應以實際選取的模式與核心執行狀態為準。若直接編輯 YAML,模式欄位位於頂層,不要放在 dns、tun 或 proxy-groups 之內:

# 頂層欄位;可選值為 rule、global、direct
mode: rule

修改檔案後通常需要重新載入設定。部分用戶端會將介面設定、覆寫設定或執行時狀態合併至最終設定,因此「檔案中寫著 rule」和「核心目前使用 rule」不一定始終一致。訂閱更新後,也應確認本機修改是否仍然保留。

連接埠與模式是獨立設定

mixed-port: 7890 表示在 7890 連接埠提供 HTTP 與 SOCKS 混合代理監聽,這與 mode 是不同欄位。如果瀏覽器仍連線至舊的 7890,而實際監聽埠已改為 7891,切換任何模式都無法解決連接埠不一致的問題。應同步修改應用程式代理或系統代理中的位址與連接埠。

依使用情境選擇,避免反覆切換設定

日常瀏覽:規則模式

同時使用台灣本地服務、區域網路裝置與需要代理的網站時,優先採用規則模式。先理清規則順序與策略組的對應關係,再依實際連線紀錄補上規則。不必為了單一網站,長期將所有進入核心的流量都送往同一個遠端出口。

暫時測試節點:全域模式

需要排除規則影響時,可使用全域模式並明確選擇節點。盡量固定目標網址、流量接管方式與 DNS 條件,每次只改變一個變因。節點延遲測試成功,只代表當時能連上測試目標,無法證明瀏覽器要存取的其他網域也一定正常。

路由器、NAS 與本機服務除錯:先用直連比較,再切回規則模式

存取 192.168.1.1 或本機開發服務時,可以短暫切換至直連模式進行比較。如果確認是全域代理出口造成連線失敗,長期做法通常是切回規則模式,並為實際使用的區域網路網段設定直連規則。TUN 的路由排除屬於另一層設定,不應與規則中的 DIRECT 混為一談。

不要直接把所有私有位址都視為可連線的資源:公司 VPN、遠端辦公網路與本地網路可能使用重疊網段。遇到這種情況,應依據路由表與公司網路要求判斷出口,而不是照搬通用設定片段。

切換後沒有變化:檢查舊連線、DNS 與接管範圍

  1. 先查看連線紀錄。如果沒有對應的新連線,請確認應用程式是否使用系統代理,或其流量是否由 TUN 接管。系統代理通常無法涵蓋所有應用程式與所有 UDP 流量。
  2. 再確認實際出口。確認目前模式、符合的規則與策略鏈。全域模式要檢查 GLOBAL,規則模式則要檢查符合規則所指定的目標組。
  3. 重新建立測試連線。既有下載、長連線或瀏覽器連線池,不一定會隨模式切換而改變路徑。可以在用戶端關閉對應連線後重新存取;必要時完全關閉瀏覽器再重新開啟。
  4. 另外檢查 DNS。網域解析失敗不代表規則有誤。請確認 DNS 查詢是否正常、解析結果是否符合預期;切換模式不一定會清除應用程式快取或更換 DNS 上游。
  5. 最後確認執行中的設定。檢查訂閱是否已成功載入、覆寫設定是否生效,以及介面上的模式是否覆蓋 YAML 中的設定。

選擇模式的關鍵在於控制變因:日常使用時交由規則決定流量去向;除錯時以全域模式固定代理出口,再用直連模式進行比較。每次切換後檢查一筆新連線的實際路徑,比反覆切換多個設定更容易找出問題。首次設定系統代理或 TUN,可接著閱讀使用指南中的代理模式說明。