规则基础概念
规则是 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-KEYWORD
2. 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 开始,逐步学习更复杂的规则类型。记住,最好的规则配置是简洁、高效且符合你实际需求的。不要盲目追求复杂,实用才是王道。
评论
评论功能即将上线,敬请期待!