規則分流完全指南:本地與海外流量智慧分道
規則路由是 Clash 最核心的能力。本文從基礎語法到進階技巧,帶你掌握精準控制每一條流量走向的方法。
規則路由的意義
Clash 的規則路由(Rule-based Routing)是它區別於單純代理工具的核心能力。一套精心配置的規則集,能讓 Clash 像一個智慧交通管理系統:訪問 PTT、蝦皮、LINE 直接走本地線路,全速訪問,零延遲;訪問 Netflix 美區、Google、GitHub 等需要解鎖或有隱私考量的服務,自動切換到代理節點,體驗更好的串流解鎖與隱私保護;廣告和追蹤網域直接攔截,不消耗流量也不佔用延遲。
沒有規則路由的話,使用者只能選「開代理」或「關代理」兩種狀態,要么本地網站變慢,要么想解鎖的海外內容看不到。規則路由讓兩者完美兼得,這也是為什麼精通規則配置是 Clash 進階使用者的必備技能。
Clash.Meta(Mihomo)核心對規則系統做了大幅強化,新增了 RULE-SET、DOMAIN-REGEX、NETWORK 等新規則類型,並支援社群維護的超大規則集(如 Loyalsoldier 的 clash-rules),讓規則的表達能力和維護效率都大幅提升。
規則語法基礎
在 Clash 設定檔(YAML 格式)中,rules 欄位是一個有順序的清單。每條規則的格式為:
類型,比對值,目標策略組[,no-resolve]
規則從上到下依序比對,第一條符合的規則生效,後續規則不再檢查。這意味著規則的順序至關重要:特殊規則放前面,通用規則放後面。一個典型的規則檔結構如下:
rules:
# 1. 區域網路和特殊位址直連
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
# 2. 廣告攔截(放在前面優先比對)
- RULE-SET,reject,REJECT
# 3. 代理網域
- RULE-SET,proxy,Proxy
# 4. 本地網域直連
- RULE-SET,direct,DIRECT
- GEOIP,TW,DIRECT
# 5. 兜底規則(必須放最後)
- MATCH,Proxy
最後一條 MATCH 是必須存在的兜底規則,所有沒被前面規則命中的流量都會落到這裡。一般設定為走代理,確保沒有規則覆蓋的未知網域也能訪問海外服務。
常用規則類型
DOMAIN 完全比對網域,不比對子網域。DOMAIN,google.com,Proxy 只比對 google.com,不會比對 www.google.com。
DOMAIN-SUFFIX 比對網域及其所有子網域,是最常用的網域規則類型。DOMAIN-SUFFIX,google.com,Proxy 同時比對 google.com、www.google.com、mail.google.com 等。
DOMAIN-KEYWORD 只要網域中包含指定關鍵字就比對,是一把雙刃劍——方便但容易誤傷。DOMAIN-KEYWORD,google,Proxy 會比對 google.com,也會比對 googledrive.com 甚至 somegooglestuff.net,使用時要謹慎。
IP-CIDR 比對目標 IP 位址段,通常用於內網位址直連(如 192.168.0.0/16)或特定服務的 IP 範圍。IP-CIDR 規則預設會先解析網域為 IP,如果不希望觸發 DNS 解析(例如在 Fake-IP 模式下),需要在末尾加 no-resolve。
GEOIP 根據目標 IP 的地理位置資料庫判斷歸屬國家或地區。GEOIP,TW,DIRECT 是很多 Clash 設定檔中都會出現的規則,將台灣本地 IP 直連,避免本地服務走代理拖慢速度。Mihomo 核心使用 Maxmind GeoIP 或 GeoSite 資料庫,可以自動更新。
RULE-SET 引用外部規則集檔案(或內嵌規則集),是管理大量規則的推薦方式,詳見下一節。
MATCH 無條件比對所有流量,只能放在規則清單最末尾作為兜底規則使用。
策略組與規則的關係
規則中的「目標策略組」是 Clash 設定檔 proxy-groups 欄位定義的策略組名稱,或者內建的 DIRECT(直連)、REJECT(攔截)關鍵字。
策略組的作用是把多個節點聚合在一起,並定義選節點的策略:
select 類型允許使用者手動選擇節點或子策略組,適合作為頂層的「節點選擇」策略組。規則命中後流量走哪個節點,取決於使用者目前的選擇。
url-test 類型自動測速並選擇延遲最低的節點,適合作為「自動選擇」策略組。設定參數 url(測速位址)、interval(測速間隔秒數)和 tolerance(切換容忍毫秒數)控制其行為。
fallback 類型依節點順序選擇,第一個可用節點生效;目前節點失效後自動切換到下一個,類似容錯移轉。適合對穩定性要求高的情境。
load-balance 類型把流量在多個節點之間負載平衡,適合提升並發下載速度的情境。
規則和策略組的組合,讓你能精細控制「什麼流量走哪種策略」:影片流量走「串流專用」策略組(選在對應地區解鎖的節點),下載流量走「下載最佳化」策略組(選頻寬大的節點),一般瀏覽走「自動選擇」策略組(選延遲低的節點)。
Rule-Set 規則集
手動維護幾百條網域規則既繁瑣又容易過時。RULE-SET 允許你引用一個外部檔案或網址作為規則集,把規則的維護工作外包給社群專案。
最廣泛使用的社群規則集是 Loyalsoldier 維護的 clash-rules 專案,提供了 reject(廣告攔截)、proxy(代理網域)、direct(直連網域)等多個分類規則集,每天自動更新,收錄數萬條規則,覆蓋率和準確率遠超手動維護。
在設定檔中引用方式如下:
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400 # 每天更新一次
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
rules:
- RULE-SET,reject,REJECT
- RULE-SET,proxy,Proxy
- GEOIP,TW,DIRECT
- MATCH,Proxy
Mihomo 核心在首次啟動時會下載這些規則集檔案到本機快取,之後每隔 interval 秒自動更新。即使斷網也能使用快取的規則集,不影響正常使用。
自訂規則實戰
服務商提供的訂閱配置通常已經包含了合理的規則集,但你可能需要為特定情境新增自訂規則。Clash Plus(Mihomo)支援在 GUI 的「Override(覆寫)」功能中新增規則,或透過「Mixin」機制合併自訂配置,無需修改原始訂閱檔案。
情境一:把某個 App 強制走直連。如果某個本地應用程式因為規則集覆蓋不足而意外走了代理,可以手動加一條 DOMAIN-SUFFIX 規則指向 DIRECT,並放在規則清單的前面(優先度更高):
prepend-rules:
- DOMAIN-SUFFIX,example-tw-app.com,DIRECT
- DOMAIN-SUFFIX,example-cdn.tw,DIRECT
情境二:為串流服務指定特定節點。Netflix 的解鎖與節點所在地區強相關,需要專門的解鎖節點。可以建立一個專用策略組,然後把 Netflix 相關網域指向這個策略組:
prepend-proxy-groups:
- name: "Netflix 專線"
type: select
proxies:
- 美國 Netflix 解鎖節點 1
- 美國 Netflix 解鎖節點 2
prepend-rules:
- DOMAIN-SUFFIX,netflix.com,Netflix 專線
- DOMAIN-SUFFIX,nflxvideo.net,Netflix 專線
- DOMAIN-SUFFIX,nflximg.net,Netflix 專線
情境三:攔截特定廣告網域。如果發現某個廣告網域沒有被規則集覆蓋,直接新增 REJECT 規則:
prepend-rules:
- DOMAIN-SUFFIX,specific-ad-domain.com,REJECT
除錯與排查
當某個網站無法訪問或走錯了路由時,「Connections(連線)」頁面是你的除錯利器。打開 Clash Plus 的連線紀錄,重新觸發一次那個網站的請求,觀察紀錄中該連線命中的規則(Rule 欄)和走向(Chain 欄)。大多數時候,一看就能看出問題所在:是命中了錯誤的規則,還是節點本身連線失敗。
如果某個網域出現在「直連」的流量裡但應該走代理,在「Override」配置中手動新增 DOMAIN-SUFFIX 規則指向代理策略組即可修復。如果某個本應直連的本地網站走了代理,則新增指向 DIRECT 的規則。
http://127.0.0.1:9090/ui)提供了比桌面 GUI 更詳細的連線紀錄和規則測試功能,是深入除錯規則的推薦工具。