ClashX 规则编写完全指南:从入门到精通

📋

规则基础概念

规则是 ClashX 的核心功能,它决定了哪些流量应该通过代理,哪些应该直连。理解并掌握规则编写,能让你的代理配置更加智能和高效。

规则的本质是一组匹配条件,当网络请求满足某个规则时,ClashX 会按照规则指定的策略处理这个请求。

💡
规则的工作原理

当你访问一个网站时,ClashX 从上到下依次检查规则列表,一旦找到匹配的规则就立即应用,不再继续检查后续规则。因此规则的顺序非常重要。

规则的组成部分

每条规则由三个部分组成:

规则类型
如 DOMAIN、IP-CIDR 等
匹配值
要匹配的具体内容
策略名称
DIRECT、REJECT 或代理组

规则类型详解

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 规则必须放在规则列表的最后一行,它会匹配所有未被前面规则处理的流量。

编写最佳实践

规则顺序优化

正确的规则顺序能显著提升匹配效率和准确性:

  1. 最前面:REJECT 规则(屏蔽广告和跟踪)
  2. 其次:特殊的 DOMAIN 规则(高优先级网站)
  3. 中间:DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 规则
  4. 后面:IP-CIDR 和 GEOIP 规则
  5. 最后: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 编写自定义匹配逻辑:

💻
脚本规则能力

脚本规则提供了最大的灵活性,可以实现复杂的匹配逻辑,如时间段分流、动态节点选择等高级功能。

调试和测试规则

如何验证规则是否正常工作:

查看日志
实时查看规则匹配情况
使用 Dashboard
可视化查看连接和规则
测试连接
访问网站验证分流

规则维护建议

保持规则高效和更新的方法:

  • 定期审查:每月检查规则,删除无用规则
  • 使用版本控制:用 Git 管理配置文件
  • 订阅社区规则集:利用社区维护的规则集
  • 做好备份:保存工作正常的配置版本

规则编写总结

掌握规则编写是使用 ClashX 的关键技能。从简单的 DOMAIN-SUFFIX 开始,逐步学习更复杂的规则类型。记住,最好的规则配置是简洁、高效且符合你实际需求的。不要盲目追求复杂,实用才是王道。

评论

💬

评论功能即将上线,敬请期待!