Clash 中國大陸與海外流量分流設定:規則順序與策略組實戰

從常見地區分流需求出發,說明規則比對順序、策略組組織方式,以及調整後如何確認實際流量走向。

Routing model

先理解中國大陸與海外分流的判斷模型

Clash 的分流不是簡單判斷「目前網站位於中國大陸還是海外」,而是依照設定檔中的規則逐一檢查每條連線。規則可能依據網域、網域後綴、IP 位址、目的連接埠、程序名稱或外部規則集進行比對;命中後,再將連線交給指定的策略組、代理節點或內建動作。常見的 DIRECTPROXYREJECT 分別代表直接連線、交由名為 PROXY 的策略組處理,以及拒絕連線。

因此,「中國大陸直連、其他流量走代理」只是目標,不是一條足以涵蓋所有情況的單一規則。實際設定通常會先處理區域網路與明確例外,再判斷指定網域、地區網域和目的 IP,最後用兜底規則接住未命中的連線。某個網站使用海外網域卻在本地部署伺服器,或使用中國大陸網域卻依賴境外介面時,只根據地區資料庫判斷都可能得到不如預期的結果,此時需要加入更具體的網域規則。

還要區分「命中規則所指定的策略」與「最終使用的節點」。例如規則將連線交給 海外流量 策略組,而該組可能繼續引用 自動選擇香港節點 等下層組。日誌中看到規則命中「海外流量」,不代表它就是最終出口,仍需查看策略組目前的選項,以及連線詳細資訊中的鏈路。

規則或動作 作用 適合放置的位置
DOMAIN 精確比對一個完整網域 通用網域規則之前
DOMAIN-SUFFIX 比對某個網域及其子網域 地區與 IP 規則之前
RULE-SET 引用規則提供器中的規則集合 依規則集的具體程度排列
GEOIP 依目的 IP 所屬地區比對 網域類規則之後
MATCH 接收先前未命中的連線 規則清單最後

Rule order

規則由上而下比對,具體規則應優先

mihomo 處理連線時會從 rules 頂部向下檢查,第一條符合條件的規則會決定該連線的策略,後續規則不再參與。規則內容正確但位置錯誤,是地區分流最常見的設定問題。例如先寫入涵蓋範圍很大的中國大陸網域規則,之後才要求其中某個網域走代理,那麼後面的例外永遠不會生效。

較穩妥的排列方式,是從「最明確」逐步過渡到「最寬泛」。區域網路、迴路位址與家庭裝置網域通常需要直連;必須走代理、必須直連或需要特定出口的業務網域屬於手動例外;廣告或追蹤網域是否拒絕,應依頁面功能審慎決定;接著才是成組的地區網域、地區 IP 與最終兜底。不同訂閱提供的規則名稱不盡相同,但排序原則一致。

  1. 本地網路與私有位址:路由器管理頁面、NAS、印表機和區域網路服務通常使用 DIRECT,避免繞經遠端節點。
  2. 手動指定例外:將必須走代理、必須直連或需要特定出口的完整網域與網域後綴放在通用規則之前。
  3. 業務規則集:依服務類別引用持續維護的規則集,例如開發平台、串流影音或即時通訊服務。
  4. 中國大陸網域與 IP:網域類地區規則優先於 GEOIP,減少只依解析 IP 判斷所造成的偏差。
  5. 最終兜底:使用 MATCH 指向預設策略組,確保未分類連線有明確去向。

如果目標是「已知的中國大陸資源直連,其餘預設走代理」,兜底應指向代理策略組,而不是再次使用地區判斷。反過來,如果只希望少數服務經過代理,應先列出這些服務,最後以 MATCH,DIRECT 收尾。兩種模式沒有絕對優劣,差別在於預設行為與維護成本。

Proxy groups

用策略組區隔規則意圖與節點選擇

把每條海外規則直接綁定到特定節點,看似簡單,但節點名稱一旦隨訂閱更新而變更,大量規則就會失效。更容易維護的方法,是讓規則指向穩定的策略組名稱,再由策略組管理節點、自動測試組或其他策略組。規則負責表達「這類流量如何處理」,策略組負責決定「目前由哪個出口執行」。

實用的結構通常包含總入口、地區選擇與自動測試三層。總入口可命名為 海外流量,類型使用 select,允許手動選擇自動組、某個地區組或 DIRECT。地區組可以引用訂閱中的對應節點,也可以透過 proxy-providers 與篩選條件動態取得節點。自動組常用 url-test 定期探測候選節點,依探測結果選擇延遲較低的出口。

url-test 的結果只反映探測網址當下的回應情況,不等同於所有網站的實際速度。跨區域鏈路、目標網站限制與節點負載都會影響使用體驗。對登入地點敏感、需要固定地區或需要穩定出口的業務,手動地區組通常比頻繁切換的自動組更容易控制。

proxy-groups:
  - name: 海外流量
    type: select
    proxies:
      - 自動選擇
      - 香港節點
      - 日本節點
      - DIRECT

  - name: 自動選擇
    type: url-test
    proxies:
      - HK-01
      - JP-01
      - SG-01
    url: https://www.gstatic.com/generate_204
    interval: 300

  - name: 中國大陸流量
    type: select
    proxies:
      - DIRECT
      - 海外流量

上例中的節點名稱必須與 proxies 中實際存在的名稱一致。如果節點來自代理提供器,組內應使用對應的 use 設定,而不是照抄不存在的節點名稱。設定引用關係有嚴格要求:規則引用的策略組、策略組引用的節點或下層組,都必須已在設定中定義。Clash Verge Rev 匯入訂閱後產生的組名可能不同,修改前應先查看目前的設定結構。

YAML practice

從例外到兜底的分流設定實戰

以下規則片段展示一種常見思路:本地位址直接連線,指定的開發服務經過代理,明確的中國大陸業務直接連線,接著使用地區資料涵蓋一般情況,最後將未識別流量交給海外策略組。這是結構範例,不應直接覆蓋現有訂閱,因為實際設定還需包含連接埠、DNS、節點、策略組,以及可能存在的規則提供器定義。

rules:
  - DOMAIN,router.lan,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve

  - DOMAIN-SUFFIX,github.com,海外流量
  - DOMAIN-SUFFIX,githubusercontent.com,海外流量

  - DOMAIN-SUFFIX,gov.cn,DIRECT
  - DOMAIN-SUFFIX,example.cn,DIRECT

  - GEOSITE,CN,DIRECT
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,海外流量

GEOSITE 屬於 mihomo 支援的地理網站規則,依賴相應的地理資料檔案。不同設定使用的資料載入方式與規則集可能不同;如果目前設定沒有可用的 GeoSite 資料,應使用已定義好的 RULE-SET,或維護必要的網域規則,不要只增加一行無法載入的資料引用。GEOIP 則依目的 IP 判斷地區,適合補充網域規則未涵蓋的連線。

no-resolve 用來告訴核心:檢查這條 IP 類規則時,不要為了取得目的 IP 而主動觸發額外的網域解析。它適合放在部分 IP-CIDRGEOIP 規則的末尾,但不代表停用整個用戶端的 DNS 功能。如果連線內容已帶有目的 IP,規則仍可正常判斷。

使用外部規則提供器時,可以將規則主體與更新來源分開。規則提供器需要定義行為類型、格式、儲存路徑與更新間隔,之後才能在 rules 中透過 RULE-SET 引用。以下展示其邏輯關係,網址與檔名應替換為實際維護來源提供的有效內容。

rule-providers:
  local-direct:
    type: http
    behavior: domain
    format: yaml
    path: ./ruleset/local-direct.yaml
    url: https://rules.example.com/local-direct.yaml
    interval: 86400

rules:
  - RULE-SET,local-direct,DIRECT
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,海外流量

規則集的 behavior 必須與檔案內容相符。domain 用於網域類載荷,ipcidr 用於網段類載荷,classical 可容納帶有規則類型的經典規則。格式不符可能導致規則提供器更新失敗或載荷無法解析。遠端規則集也應具備穩定的更新來源;如果來源暫時無法連線,用戶端通常會繼續使用已儲存的本機檔案,但首次取得失敗時可能沒有可用快取。

DNS and TUN

DNS、系統代理與 TUN 如何影響結果

規則本身決定連線去向,但用戶端能否接收到連線、網域能否正確還原,以及解析請求要經由哪裡,都會影響最終觀察結果。系統代理只涵蓋遵循作業系統代理設定的應用程式;某些遊戲、命令列工具、虛擬機器程式或自行實作網路堆疊的軟體可能繞過系統代理。此時即使規則再完整,未進入 mihomo 的流量也不會出現在連線清單中。

TUN 模式透過虛擬網路介面接管更廣泛的 TCP 與 UDP 流量,適合需要涵蓋不讀取系統代理設定之程式的情境。啟用 TUN 不會改變規則由上而下比對的原則,只是擴大可進入規則引擎的流量範圍。TUN 也可能受到系統權限、路由表、其他 VPN 軟體與安全工具影響,因此應先在系統代理模式驗證基本分流,再依需求啟用。

DNS 設定尤其容易造成「規則看似正確,結果卻不一致」。在 fake-ip 模式下,用戶端可先回傳保留位址,並在內部保留網域與連線的對應關係,讓後續規則仍有機會依網域比對。部分區域網路服務、裝置探索或不相容於虛擬位址的程式,可能需要加入 fake-ip-filter。在 redir-host 等模式下,解析流程與建立連線的方式不同,但同樣需要確保 DNS 查詢沒有被其他程式完全繞過。

如果網域先在系統外部解析成 IP,核心收到的連線可能缺少可供網域規則使用的內容,最後只能落到 IP 類規則或 MATCH。因此排查網域規則未命中時,應同時查看連線詳細資訊中的目標主機、解析結果與命中規則,而不是只檢查 YAML 拼寫。

Verification

調整後如何確認實際流量走向

驗證分流不能只看網頁是否開啟。直連與代理都可能成功存取,但延遲、出口位置與命中規則各不相同。可靠的檢查方式,是結合設定載入狀態、連線詳細資訊、規則命中結果、策略組選擇與外部出口結果,並且每次只調整一類條件。

第一步:確認設定已成功載入

儲存 YAML 後查看用戶端提示與核心日誌,確認沒有縮排、欄位類型、重複名稱或規則提供器解析錯誤。YAML 使用空格表示層級,Tab 字元與錯誤縮排都可能導致載入失敗。如果用戶端仍在使用舊設定,後續測試不會反映剛才的修改。

第二步:清除舊連線再測試

瀏覽器會重複使用 HTTP/2、HTTP/3 與長連線,應用程式也可能保留連線池。修改規則後,已建立的連線通常不會自動依新規則重新選擇出口。應關閉目標連線、重新開啟應用程式,或在用戶端中結束對應連線,再發起新的存取。DNS 快取也可能影響比較,必要時等待快取失效,或依系統方式重新整理。

第三步:查看連線詳細資訊與命中鏈路

在 Clash Verge Rev 的連線頁面定位目標網域,檢查命中的規則類型、規則載荷、策略組與最終節點。如果預期命中 DOMAIN-SUFFIX 卻顯示 MATCH,表示網域沒有進入該規則、規則順序被更前面的規則截獲,或連線只保留了 IP 資訊。如果命中的策略組正確但節點錯誤,應前往代理組頁面檢查目前選項,而不是修改規則。

第四步:分別驗證直連與代理出口

選擇一個明確設定為直連的目標,以及一個明確設定為代理的目標進行比較。必要時可使用可信的出口位址查詢服務確認公網出口,但請注意不同查詢服務可能使用不同網路、快取與 IP 地理資料庫。地區標籤只能作為輔助證據,最關鍵的仍是用戶端顯示的命中規則與鏈路。

  • 直連目標應顯示 DIRECT,或先命中某個策略組,而該組目前選擇的是 DIRECT
  • 代理目標應顯示預期的策略組,並沿著鏈路連到實際節點。
  • 拒絕規則應呈現連線遭到攔截,同時確認沒有破壞頁面所需的介面或靜態資源。
  • UDP、QUIC 與 TCP 可能形成不同連線,排查時應留意通訊協定類型。

Troubleshooting

分流結果異常時的排查順序

中國大陸網站仍然經過代理

先檢查是否存在位於中國大陸規則之前的寬泛代理規則,例如涵蓋整個頂級網域或某個大型規則集。接著確認中國大陸策略組目前是否確實選擇了 DIRECT。如果只設定了 GEOIP,CN,DIRECT,而目標使用境外 CDN 位址,可能無法命中;可為穩定的業務增加明確的網域直連規則。

海外服務偶爾變成直連

檢查目標是否包含多個業務網域。現代網站通常會同時存取登入、介面、圖片、影片與統計網域,只為主網域設定代理無法涵蓋所有請求。可以從連線清單收集實際網域,再加入必要的網域後綴,或使用維護良好的服務規則集。不要把觀察到的每個臨時 CDN 主機都寫成精確規則,應優先辨識穩定的網域邊界。

規則顯示正確但服務無法使用

命中代理規則只代表連線已交給相應策略,不代表節點一定可連線。請繼續檢查策略組是否選中了有效節點、節點是否支援所需的 UDP 流量、DNS 是否正常、目標服務是否限制出口地區,以及系統時間是否準確。也可以暫時切換同組中的另一個節點進行比較,以區分規則問題與節點鏈路問題。

啟用 TUN 後區域網路裝置失去連線

確認私有網段規則位於前面並指向 DIRECT,同時檢查 TUN 的自動路由、嚴格路由設定,以及系統中的其他虛擬網路介面。區域網路裝置若透過主機名稱存取,也應確保本地域名解析或搜尋網域沒有被遠端 DNS 取代。先使用裝置 IP 測試,有助於區分路由問題與本地域名解析問題。

訂閱更新後自訂規則消失

直接編輯由訂閱產生的設定,可能在下次訂閱更新時被新內容覆蓋。Clash Verge Rev 可透過設定合併、腳本或覆寫功能保留本地調整,具體入口取決於目前版本與設定管理方式。執行前請先備份可用設定,將自訂策略組與規則維持為獨立且易於檢查的片段,並在訂閱更新後確認引用名稱仍然存在。

Checklist

一套可持續維護的分流檢查清單

穩定的中國大陸與海外分流,依賴清楚的預設策略與少量必要例外,而不是無止境堆疊規則。完成設定後,可依照以下檢查清單複核:

  • 區域網路與私有位址規則位於前面,並明確使用 DIRECT
  • 必須走代理或必須直連的業務網域,位於地區通用規則之前。
  • 規則引用的策略組名稱與設定定義完全一致。
  • 策略組引用的節點、下層組或代理提供器均確實存在。
  • 地區網域規則優先於地區 IP 規則,MATCH 位於末尾。
  • 外部規則集的行為類型、檔案格式與載荷內容彼此相符。
  • 修改後結束舊連線,並從連線頁面確認規則、策略組與最終節點。
  • 系統代理無法涵蓋目標程式時,再評估是否需要 TUN 模式。
  • 訂閱更新後重新檢查自訂覆寫,避免策略組引用因名稱變更而中斷。

設定的核心不是追求規則數量,而是讓每條連線都能沿著可解釋的路徑落到明確策略。先用少量規則建立「本地直連、指定例外、地區判斷、最終兜底」的骨架,再根據連線記錄補充實際需求,通常比直接匯入多個彼此重疊的規則集更容易維護與排錯。

下載Clash