規则基础概念
規则是 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 開始,逐步學習更復雜的規则類型。記住,最好的規则配置是簡洁、高效且符合你實際需求的。不要盲目追求復雜,實用才是王道。