規則(rules)是 Clash 設定的靈魂:每一條新連線都會拿著自己的目標域名/IP,從規則列表的第一條開始逐條匹配,命中即停止。寫好規則,分流就成功了一大半。
規則語法
rules:
- 類型,匹配內容,出口
# 例如:
- DOMAIN-SUFFIX,youtube.com,節點選擇
- GEOIP,CN,DIRECT
- MATCH,節點選擇
「出口」可以是某個代理組名、DIRECT(直連)或 REJECT(攔截)。
常用規則類型
| 類型 | 匹配物件 | 示例 |
|---|---|---|
DOMAIN | 完整域名 | DOMAIN,www.google.com,PROXY |
DOMAIN-SUFFIX | 域名及其子域 | DOMAIN-SUFFIX,google.com,PROXY |
DOMAIN-KEYWORD | 域名包含關鍵詞 | DOMAIN-KEYWORD,google,PROXY |
IP-CIDR | 目標 IPv4 網段 | IP-CIDR,8.8.8.8/32,PROXY |
GEOIP | IP 的地理歸屬 | GEOIP,CN,DIRECT |
PROCESS-NAME | 發起連線的處理程序 | PROCESS-NAME,Telegram.exe,PROXY |
RULE-SET | 外部規則集 | RULE-SET,ads,REJECT |
MATCH | 兜底,匹配一切 | MATCH,PROXY |
順序為什麼重要
考慮下面兩條規則的順序差異:
- DOMAIN-SUFFIX,cn.example.com,DIRECT
- DOMAIN-SUFFIX,example.com,PROXY
這樣寫,cn.example.com 會直連,其餘 example.com 走代理。若兩條對調,DOMAIN-SUFFIX,example.com 會先命中一切(包括 cn 子域),第二條永遠輪不到。原則:具體的規則放前面,寬泛的規則放後面。
MATCH 兜底
列表最後應有且僅有一條 MATCH 規則,處理前面全部未命中的流量。沒有 MATCH 時未命中流量預設直連。把 MATCH 指向代理組(「漏網」流量走代理)還是 DIRECT(「漏網」直連),決定了你的分流策略是「黑名單」還是「白名單」思路。
除錯技巧:不確定某個網站命中了哪條規則時,開啟 Connections 頁面看 Rule 列即可,比盯著設定猜快得多。