什麼是 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,PROXY或MATCH,DIRECT放在規則清單末尾,承接前面皆未命中的流量 - 例外放行優於封鎖:若要放行某子網域卻封鎖父網域,放行規則必須寫在封鎖規則之前
規則的組成結構
每條規則由三部分組成,以逗號分隔:
規則類型,匹配參數,目標策略
例如:
DOMAIN-SUFFIX,google.com,Proxy
GEOIP,CN,DIRECT
MATCH,Proxy
其中目標策略可以是內建策略名稱(DIRECT、REJECT),也可以是你在 proxy-groups: 中定義的代理群組名稱(例如 Proxy、Auto)。
六大核心規則類型詳解
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.com、accounts.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-01、JP-01、US-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 之前有規則將該流量誤判為直連。建議排查:
- 在 Clash 客戶端的「連線」(Connections)面板找出目標請求,查看實際命中的規則
- 檢查該網域是否被「大陸網域規則集」誤收;若是,將該網域加到代理規則較前的位置
- 確認設定檔中
MATCH指向代理群組而非DIRECT
開啟除錯日誌
在設定檔頂端加入 log-level: debug,Clash 會記錄各連線的規則命中細節,有助找出規則衝突或漏設:
log-level: debug # Options: silent / error / warning / info / debug
查看日誌後,請將 log-level 改回 info 或 warning:debug 輸出量大,長期開啟可能影響效能。
分流效果如何,客戶端同樣關鍵
即便規則寫得再細,若客戶端對規則引擎支援不完整、介面難操作,或 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;點選下方按鈕即可取得適合你系統的最新版本: