規則基礎概念
規則是 ClashX 的核心功能,它決定了哪些流量應該透過代理,哪些應該直連。理解並掌握規則編寫,能讓你的代理配置更加智能和高效。
規則的本質是一組匹配條件,當網路請求滿足某個規則時,ClashX 會按照規則指定的策略處理這個請求。
當你訪問一個網站時,ClashX 從上到下依次檢查規則列表,一旦找到匹配的規則就立即應用,不再繼續檢查後續規則。因此規則的順序非常重要。
規則的組成部分
每條規則由三個部分組成:
規則型別詳解
DOMAIN - 完整域名匹配
最精確的匹配方式,只匹配完全相同的域名。
DOMAIN 規則示例
- DOMAIN,www.google.com,🚀 代理
- DOMAIN,api.github.com,🚀 代理
- DOMAIN,www.baidu.com,DIRECT
說明:只有訪問 www.google.com 時才匹配,訪問 mail.google.com 或 google.com 都不會匹配。
DOMAIN-SUFFIX - 域名字尾匹配
最常用的規則型別,匹配指定域名及其所有子域名。
DOMAIN-SUFFIX 規則示例
- DOMAIN-SUFFIX,google.com,🚀 代理
- DOMAIN-SUFFIX,youtube.com,🎬 流媒體
- DOMAIN-SUFFIX,cn,DIRECT
說明:google.com、www.google.com、mail.google.com 都會被匹配。
DOMAIN-KEYWORD - 域名關鍵字匹配
匹配域名中包含指定關鍵字的請求,靈活但可能誤匹配。
DOMAIN-KEYWORD 規則示例
- DOMAIN-KEYWORD,google,🚀 代理
- DOMAIN-KEYWORD,youtube,🎬 流媒體
- DOMAIN-KEYWORD,ads,REJECT
注意:使用時要謹慎,"google" 會匹配 google.com、mygooglesite.com 等所有包含該關鍵字的域名。
IP-CIDR - IP 地址段匹配
基於 IP 地址範圍進行匹配,適用於沒有域名的連線。
IP-CIDR 規則示例
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,91.108.56.0/22,🚀 代理,no-resolve
no-resolve 參數:跳過 DNS 解析,直接匹配 IP,可提升性能。
GEOIP - 地理位置匹配
根據 IP 地址的地理位置進行匹配。
GEOIP 規則示例
- GEOIP,CN,DIRECT
- GEOIP,US,🇺🇸 美國節點
- GEOIP,JP,🇯🇵 日本節點
| 規則型別 | 精確度 | 性能 | 推薦場景 |
|---|---|---|---|
| DOMAIN | 最高 | 快 | 特定域名 |
| DOMAIN-SUFFIX | 高 | 快 | 整站代理 |
| DOMAIN-KEYWORD | 中 | 中 | 批量匹配 |
| IP-CIDR | 高 | 慢(需解析) | 基於 IP 的匹配 |
| GEOIP | 中 | 快 | 地區分流 |
規則語法深入
基本語法格式
ClashX 規則使用 YAML 格式編寫,必須嚴格遵守縮排規則。
標準規則語法
rules:
- RULE-TYPE,MATCH-VALUE,POLICY-NAME
- RULE-TYPE,MATCH-VALUE,POLICY-NAME,OPTIONS
規則引數選項
某些規則型別支援額外的引數來最佳化效能或行為。
- no-resolve:不進行 DNS 解析,適用於 IP-CIDR 規則
- src-ip:基於源 IP 地址匹配
- src-port:基於源埠匹配
特殊規則型別
除了基本規則,ClashX 還支援一些高階規則型別:
高階規則示例
# PROCESS-NAME - 根據程序名匹配
- PROCESS-NAME,Telegram,🚀 代理
# RULE-SET - 引用規則集
- RULE-SET,proxy-list,🚀 代理
# MATCH - 預設策略(必須放在最後)
- MATCH,🚀 節點選擇
MATCH 規則必須放在規則列表的最後一行,它會匹配所有未被前面規則處理的流量。
編寫最佳實踐
規則順序最佳化
正確的規則順序能顯著提升匹配效率和準確性:
- 最前面:REJECT 規則(遮蔽廣告和跟蹤)
- 其次:特殊的 DOMAIN 規則(高優先級網站)
- 中間:DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 規則
- 後面:IP-CIDR 和 GEOIP 規則
- 最後:MATCH 預設規則
性能優化技巧
編寫高效能規則的關鍵點:
1. 優先使用 DOMAIN-SUFFIX 而不是 DOMAIN-KEYWORD2. IP-CIDR 規則新增 no-resolve 參數3. 使用 RULE-SET 管理大量規則4. 避免過多的正規表示式規則
常見錯誤避免
編寫規則時需要注意的陷阱:
- 縮排錯誤:YAML 對縮排要求嚴格,使用 2 個空格縮排
- 規則衝突:確保優先順序高的規則在前面
- 策略名稱錯誤:確保策略名稱與 proxy-groups 中定義的一致
- 過度使用 KEYWORD:容易造成誤匹配
規則分類管理
建議按功能對規則進行分類,使用註釋分隔:
規則分類示例
rules:
# ======= 廣告攔截 =======
- DOMAIN-SUFFIX,ads.google.com,REJECT
- DOMAIN-KEYWORD,analytics,REJECT
# ======= 本地直連 =======
- DOMAIN-SUFFIX,localhost,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
# ======= 流媒體服務 =======
- DOMAIN-SUFFIX,netflix.com,🎬 流媒體
- DOMAIN-SUFFIX,youtube.com,🎬 流媒體
# ======= 國內網站 =======
- GEOIP,CN,DIRECT
# ======= 預設策略 =======
- MATCH,🚀 節點選擇
實戰案例演示
案例 1:完整的分流規則
一個適合日常使用的完整規則配置:
日常使用規則集
rules:
# 廣告攔截
- DOMAIN-KEYWORD,adservice,REJECT
- DOMAIN-SUFFIX,doubleclick.net,REJECT
# Apple 服務
- DOMAIN-SUFFIX,apple.com,DIRECT
- DOMAIN-SUFFIX,icloud.com,DIRECT
- DOMAIN-SUFFIX,apple-dns.net,DIRECT
# 流媒體平臺
- DOMAIN-SUFFIX,netflix.com,🎬 流媒體
- DOMAIN-SUFFIX,youtube.com,🎬 流媒體
- DOMAIN-SUFFIX,spotify.com,🎬 流媒體
# 社交媒體
- DOMAIN-SUFFIX,twitter.com,🚀 代理
- DOMAIN-SUFFIX,facebook.com,🚀 代理
- DOMAIN-SUFFIX,instagram.com,🚀 代理
# 開發工具
- DOMAIN-SUFFIX,github.com,🚀 代理
- DOMAIN-SUFFIX,stackoverflow.com,🚀 代理
# 中國大陸網站
- GEOIP,CN,DIRECT
# 區域網直連
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
# 預設策略
- MATCH,🚀 節點選擇
案例 2:遊戲加速規則
針對遊戲最佳化的規則配置:
遊戲加速規則
rules:
# Steam
- DOMAIN-SUFFIX,steampowered.com,🎮 遊戲
- DOMAIN-SUFFIX,steamcommunity.com,🎮 遊戲
# Epic Games
- DOMAIN-SUFFIX,epicgames.com,🎮 遊戲
# PlayStation
- DOMAIN-SUFFIX,playstation.com,🎮 遊戲
- DOMAIN-SUFFIX,playstation.net,🎮 遊戲
# Xbox
- DOMAIN-SUFFIX,xbox.com,🎮 遊戲
- DOMAIN-SUFFIX,xboxlive.com,🎮 遊戲
# 遊戲 IP 段(示例)
- IP-CIDR,185.25.182.0/24,🎮 遊戲,no-resolve
- MATCH,DIRECT
案例 3:隱私保護規則
增強隱私保護的規則配置:
隱私保護規則
rules:
# 遮蔽廣告跟蹤
- DOMAIN-KEYWORD,analytics,REJECT
- DOMAIN-KEYWORD,tracking,REJECT
- DOMAIN-KEYWORD,telemetry,REJECT
# 遮蔽常見廣告域名
- DOMAIN-SUFFIX,googlesyndication.com,REJECT
- DOMAIN-SUFFIX,googleadservices.com,REJECT
- DOMAIN-SUFFIX,facebook.net,REJECT
# 遮蔽資料收集
- DOMAIN-KEYWORD,crashlytics,REJECT
- DOMAIN-KEYWORD,bugly,REJECT
# 正常流量
- MATCH,🚀 節點選擇
高階規則技巧
使用規則集(Rule Providers)
規則集允許你從外部檔案或 URL 載入規則,便於管理和更新:
規則集配置示例
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
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
rules:
- RULE-SET,reject,REJECT
- RULE-SET,proxy,🚀 代理
- RULE-SET,direct,DIRECT
- MATCH,🚀 節點選擇
指令碼規則(Script)
使用 JavaScript 編寫自定義匹配邏輯:
指令碼規則提供了最大的靈活性,可以實現復雜的匹配邏輯,如時間段分流、動態節點選擇等高階功能。
除錯和測試規則
如何驗證規則是否正常工作:
規則維護建議
保持規則高效和更新的方法:
- 定期審查:每月檢查規則,刪除無用規則
- 使用版本控制:用 Git 管理配置文件
- 訂閱社羣規則集:利用社羣維護的規則集
- 做好備份:保存工作正常的配置版本
規則編寫總結
掌握規則編寫是使用 ClashX 的關鍵技能。從簡單的 DOMAIN-SUFFIX 開始,逐步學習更復雜的規則型別。記住,最好的規則配置是簡潔、高效且符合你實際需求的。不要盲目追求復雜,實用才是王道。