什麼是 Clash 分流規則?

許多 Clash 新手剛開始使用時,常遇到同一個問題:開啟全域代理後,瀏覽百度、淘寶、嗶哩嗶哩等中國大陸網站會明顯變慢,影片載入卡頓、網頁開啟緩慢。根本原因在於,全域代理會讓所有流量繞經海外伺服器,來回延遲往往增加 100 ms 以上;本來只需數毫秒的中國大陸直連請求,反而像「繞地球一圈」。

Clash 分流規則(Split Routing Rules)正是解決這類問題的核心機制。透過精細設定規則,你可以讓 Clash 自動判斷每個網域或 IP 的走向:存取中國大陸網站走直連,存取境外網站走代理。規則到位後,不必頻繁手動切換模式,海內外網站可同時順暢使用,體驗接近原生連線。

本文從規則引擎原理談起,涵蓋各類規則語法、GEOIP CN 中國大陸直連做法、Rule Provider 規則集進階用法,以及可直接複製參考的完整設定範例;適合已有基礎、希望做到精細分流的 Clash 使用者深入閱讀。

規則引擎運作原理

理解 Clash 如何比對規則,是寫好分流設定的前提。Clash 的規則引擎大致依下列流程運作:

規則比對順序:由上而下,第一次命中即生效

對每一個新建的連線請求,Clash 會依設定檔中 rules: 區段內規則的書寫順序由上而下比對;一旦某條規則命中,立刻採用該規則指定的策略(DIRECT/經 PROXY 代理群組),不再繼續往下比對。因此規則順序非常重要:

  • 越具體的規則越靠前:例如針對特定網域的 DOMAIN 規則應放在萬用後綴 DOMAIN-SUFFIX 之前
  • 兜底規則放最後MATCH,PROXYMATCH,DIRECT 放在規則清單末尾,承接前面皆未命中的流量
  • 例外放行優於封鎖:若要放行某子網域卻封鎖父網域,放行規則必須寫在封鎖規則之前

規則的組成結構

每條規則由三部分組成,以逗號分隔:

規則類型,匹配參數,目標策略

例如:

DOMAIN-SUFFIX,google.com,Proxy
GEOIP,CN,DIRECT
MATCH,Proxy

其中目標策略可以是內建策略名稱(DIRECTREJECT),也可以是你在 proxy-groups: 中定義的代理群組名稱(例如 ProxyAuto)。

六大核心規則類型詳解

Clash(Mihomo 核心)支援多種規則類型,以下為最常用的六類:

網域類規則

類型 說明 範例
DOMAIN 完整比對網域名稱 DOMAIN,www.google.com,Proxy
DOMAIN-SUFFIX 符合該網域及其所有子網域 DOMAIN-SUFFIX,google.com,Proxy
DOMAIN-KEYWORD 網域名稱含關鍵字即命中 DOMAIN-KEYWORD,google,Proxy

建議優先使用 DOMAIN-SUFFIX:多數情境下,DOMAIN-SUFFIX,google.com,Proxy 既可命中 google.com 本身,也可涵蓋 mail.google.comaccounts.google.com 等子網域,較不易漏規則。請謹慎使用 DOMAIN-KEYWORD:關鍵字過短時容易誤命中無關網域。

IP 類規則

類型 說明 範例
IP-CIDR 符合指定 IPv4 網段 IP-CIDR,192.168.0.0/16,DIRECT
IP-CIDR6 符合指定 IPv6 網段 IP-CIDR6,2001:db8::/32,DIRECT

IP 類規則常用於區網直連與特定 IP 區段處理。須留意:IP 類規則會觸發 DNS 解析(將網域解析成 IP 後再比對);若網域規則已命中,便不會再走 IP 規則,因此 IP 規則主要處理直接以 IP 位址連線的情境。

GEOIP 國家代碼規則

GEOIP,CN,DIRECT 是實現中國大陸 IP直連最關鍵的規則之一。運作方式是:當 Clash 取得目標 IP 後,查詢內建的 GeoIP 資料庫,判斷該 IP 是否歸屬中國大陸(CN);若是則直連,否則交給後續規則處理。

# Let all China mainland IPs connect directly
GEOIP,CN,DIRECT,no-resolve

建議加上 no-resolve 參數:在未解析 DNS 的情況下先做網域規則比對;網域規則未命中時才解析為 IP,再走 GEOIP 判斷,可減少不必要的 DNS 查詢並降低延遲。

GEOIP 資料庫需定期更新:內建資料可能落後於實際 IP 歸屬變動。建議在設定中啟用 geodata-mode: true,並定期執行「更新 GEO 資料」;部分客戶端(如 Clash Verge Rev)支援自動更新。

MATCH 兜底規則

MATCH 規則必須放在所有規則的最後:它沒有匹配參數,只有策略,代表「前面所有規則皆未命中的流量」。最常見寫法如下:

# Catch-all: unmatched traffic goes to proxy
MATCH,Proxy

也就是說:凡未被前面規則涵蓋的網域與 IP,一律走代理群組 Proxy。即使是你尚未手動列出的境外網站,也能自動走代理,不必逐一站點新增規則。

中國大陸直連:精細設定實務

僅依賴 GEOIP,CN,DIRECT 有時仍不夠精準——部分中國大陸服務(例如經境外 CDN 分發的內容、雙向 BGP 線路的跨國企業站)可能被誤判為境外。以下提供更完整的「大陸網站/大陸 IP 走直連」思路:

第一層:區網與保留位址直連

# LAN and reserved addresses go direct
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
IP-CIDR,127.0.0.0/8,DIRECT,no-resolve

第二層:常見中國大陸網域直連

將百度、阿里、騰訊、字節跳動等主要平台的頂層網域以 DOMAIN-SUFFIX 明確設為直連,通常比單純依賴 GEOIP 更快(網域規則不必先經 DNS 解析):

DOMAIN-SUFFIX,baidu.com,DIRECT
DOMAIN-SUFFIX,qq.com,DIRECT
DOMAIN-SUFFIX,weixin.qq.com,DIRECT
DOMAIN-SUFFIX,taobao.com,DIRECT
DOMAIN-SUFFIX,tmall.com,DIRECT
DOMAIN-SUFFIX,jd.com,DIRECT
DOMAIN-SUFFIX,bilibili.com,DIRECT
DOMAIN-SUFFIX,zhihu.com,DIRECT
DOMAIN-SUFFIX,weibo.com,DIRECT
DOMAIN-SUFFIX,bytedance.com,DIRECT
DOMAIN-SUFFIX,douyin.com,DIRECT

第三層:GEOIP CN 兜底(大陸 IP 直連)

GEOIP,CN,DIRECT,no-resolve

三層疊加後,多數中國大陸網站可穩定走直連,既節省代理流量,也避免繞路造成的速度損失。

Rule Provider 規則集進階設定

手動逐條撰寫規則費時且難維護。Clash(Mihomo)提供 Rule Provider 機制,可從遠端 URL 或本機檔案載入規則集,大幅減少設定篇幅,並便於跟著社群更新保持規則庫新鮮。

Rule Provider 的三種 behavior

behavior 內容格式 適用情境
domain 每行一個完整網域,或帶 +. 前綴的萬用網域 網域黑白名單,效能最佳
ipcidr 每行一個 CIDR 網段 IP 區段直連/代理清單
classical 標準規則格式(TYPE,ARG,POLICY 省略 POLICY) 混合多種規則類型的複雜場景

使用遠端規則集

以下以社群維護的 blackmatrix7 規則集為例,在設定檔中可依下列結構宣告:

rule-providers:
  # Direct list for China mainland domains
  ChinaDomain:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt"
    path: ./ruleset/ChinaDomain.txt
    interval: 86400     # Refresh every 24 hours

  # Proxy list for common proxy targets
  ProxyGFW:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.txt"
    path: ./ruleset/ProxyGFW.txt
    interval: 86400

接著在 rules: 區段以 RULE-SET 引用:

rules:
  # LAN direct connect
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  # China domain set — direct
  - RULE-SET,ChinaDomain,DIRECT
  # Proxy target set — use proxy group
  - RULE-SET,ProxyGFW,Proxy
  # China IPs direct
  - GEOIP,CN,DIRECT,no-resolve
  # Catch-all
  - MATCH,Proxy

離線使用建議:將 path: 指向本機路徑後,首次連線時 Clash 會自動下載並快取到對應位置;之後即使暫時無法連上 GitHub,仍可依本機快取正常分流。

完整分流設定範例

以下是一份可據此調整的 Clash YAML 分流骨架,涵蓋代理群組、規則集與規則三大區塊:

# ── Proxy Groups ──────────────────────────────────────
proxy-groups:
  - name: "Proxy"
    type: select
    proxies:
      - Auto
      - HK-01
      - JP-01
      - US-01

  - name: "Auto"
    type: url-test
    url: "https://www.gstatic.com/generate_204"
    interval: 300
    proxies:
      - HK-01
      - JP-01
      - US-01

# ── Rule Providers ─────────────────────────────────────
rule-providers:
  ChinaDomain:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt"
    path: ./ruleset/ChinaDomain.txt
    interval: 86400

  ProxyGFW:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.txt"
    path: ./ruleset/ProxyGFW.txt
    interval: 86400

# ── Rules ──────────────────────────────────────────────
rules:
  # LAN and loopback 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

  # High-frequency China domains (faster than GeoIP)
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,qq.com,DIRECT
  - DOMAIN-SUFFIX,taobao.com,DIRECT
  - DOMAIN-SUFFIX,jd.com,DIRECT
  - DOMAIN-SUFFIX,bilibili.com,DIRECT
  - DOMAIN-SUFFIX,zhihu.com,DIRECT

  # China domain rule-set
  - RULE-SET,ChinaDomain,DIRECT

  # Proxy target rule-set
  - RULE-SET,ProxyGFW,Proxy

  # China IPs fallback
  - GEOIP,CN,DIRECT,no-resolve

  # Catch-all: unmatched traffic → proxy
  - MATCH,Proxy

實際使用時,將 HK-01JP-01US-01 替換成你訂閱/機場設定中對應的節點名稱即可。

常見問題與排查技巧

問題 1:中國大陸網站卻走了代理(規則未命中)

最常見原因是 DNS 解析結果落在境外 CDN 的 IP,導致 GEOIP 判定為境外。處理方式:

  • 將該網域明確寫成 DOMAIN-SUFFIX,example.com,DIRECT,並放在 GEOIP 規則之前
  • 設定 dns: enhanced-mode: fake-ip,並在 fake-ip-filter 排除已知中國大陸網域,避免將大陸網域解析成境外 IP
  • 檢查 Rule Provider 規則集是否已涵蓋該網域;若未涵蓋則手動補上

問題 2:境外網站走了直連(代理本身正常但頁面打不開)

代表在 MATCH 之前有規則將該流量誤判為直連。建議排查:

  1. 在 Clash 客戶端的「連線」(Connections)面板找出目標請求,查看實際命中的規則
  2. 檢查該網域是否被「大陸網域規則集」誤收;若是,將該網域加到代理規則較前的位置
  3. 確認設定檔中 MATCH 指向代理群組而非 DIRECT

開啟除錯日誌

在設定檔頂端加入 log-level: debug,Clash 會記錄各連線的規則命中細節,有助找出規則衝突或漏設:

log-level: debug  # Options: silent / error / warning / info / debug

查看日誌後,請將 log-level 改回 infowarningdebug 輸出量大,長期開啟可能影響效能。

分流效果如何,客戶端同樣關鍵

即便規則寫得再細,若客戶端對規則引擎支援不完整、介面難操作,或 Rule Provider 無法自動更新,分流體驗仍會大打折扣。以下列舉常見的已停止或過舊客戶端為例:

  • Clash for Windows(CFW):原作者已刪庫停更,最後版本停留在 2023 年,不完全支援 Mihomo 核心的新特性(例如 behavior: domain 的高效索引結構),Rule Provider 效能明顯落後新版
  • ClashX(macOS):同樣停止維護,無法使用 Hysteria 2、VLESS Reality 等新協定,規則集更新多需手動操作
  • 部分 Android 客戶端:介面陽春,代理群組切換不直覺,TUN 模式選項藏得較深,對新手較不友善

相對地,目前社群仍在積極維護的客戶端通常具備:

  • 視覺化規則/連線偵錯面板,即時顯示每筆請求命中的規則
  • Rule Provider 可一鍵更新,亦可設定自動定時重新整理
  • 完整支援 Mihomo 核心特性,含 Hysteria 2、VLESS Reality、TUN 模式
  • 介面對中文使用者友善,代理群組切換與延遲測試操作直覺

若你已依本文完成分流規則,實際效果仍不理想,不妨改用持續維護的 Clash 客戶端,往往可立即改善分流準確度與整體穩定性。本站提供各平台安裝包直接下載,無需開啟 GitHub;點選下方按鈕即可取得適合你系統的最新版本:

免費下載 Clash 客戶端