如果说节点是 Clash 的"四肢",那规则(rules)就是它的"大脑"。同样一批节点,规则写得好不好,直接决定了你的上网体验是顺畅精准,还是处处别扭。这篇文章不堆砌晦涩术语,而是带你理清规则的工作机制,并给出一套可以直接复用的编排思路。
规则是怎么匹配的?
记住一句话:规则自上而下逐条匹配,命中即停止。Clash 会拿当前连接的目标,从第一条规则开始依次比对,一旦某条规则命中,就立刻按它指定的策略执行,后面的规则不再看。
这个机制带来一个重要推论:顺序决定一切。把更"具体"的规则放在前面,更"宽泛"的放在后面;否则宽泛的规则会提前命中,让后面的具体规则永远轮不到。这是新手最容易踩的坑。
一条规则长什么样?
每条规则的基本格式是 类型,匹配值,策略。比如 DOMAIN-SUFFIX,google.com,PROXY 的意思是:凡是以 google.com 结尾的域名,都走名为 PROXY 的策略组。这里的"策略"可以是某个策略组、某个具体节点,也可以是内置的 DIRECT(直连)或 REJECT(拒绝)。
常用规则类型速查
| 类型 | 说明 | 示例 |
|---|---|---|
DOMAIN | 完整域名精确匹配 | DOMAIN,www.google.com,PROXY |
DOMAIN-SUFFIX | 域名后缀匹配(最常用) | DOMAIN-SUFFIX,google.com,PROXY |
DOMAIN-KEYWORD | 域名包含关键词 | DOMAIN-KEYWORD,google,PROXY |
IP-CIDR | IP 网段匹配 | IP-CIDR,192.168.0.0/16,DIRECT |
GEOIP | 按国家/地区匹配 IP | GEOIP,CN,DIRECT |
PROCESS-NAME | 按进程名匹配 | PROCESS-NAME,Telegram,PROXY |
MATCH | 兜底,匹配所有剩余流量 | MATCH,PROXY |
其中 DOMAIN-SUFFIX 使用频率最高,因为它能用一条规则覆盖一个域名下的所有子域名。而 MATCH 是"兜底规则",永远放在最后一行,负责处理前面所有规则都没命中的流量。
一套经典的规则编排顺序
实战中,推荐按"从私有到公有、从具体到宽泛"的顺序组织规则:
- 局域网与私有地址:用
IP-CIDR把内网地址直连,避免代理本地设备; - 需要拒绝的域名:广告、追踪类用
REJECT直接屏蔽; - 明确要走代理的服务:用
DOMAIN-SUFFIX把海外服务指向代理; - 明确要直连的服务:国内常用站点用
DOMAIN-SUFFIX指向直连; - 按地理位置兜底:
GEOIP,CN,DIRECT把剩余的国内 IP 直连; - 最终兜底:
MATCH把其它所有流量交给代理。
rules: - IP-CIDR,192.168.0.0/16,DIRECT - DOMAIN-KEYWORD,ad,REJECT - DOMAIN-SUFFIX,google.com,PROXY - DOMAIN-SUFFIX,bilibili.com,DIRECT - GEOIP,CN,DIRECT - MATCH,PROXY
规则集(rule-providers):更省心的做法
逐条手写规则既费力又难维护。社区里有大量现成的规则集(rule-providers),把成百上千条规则打包成一个可远程更新的文件,你只需引用它,并定期自动更新即可。比如把"国内域名集合""广告屏蔽集合"分别引入,再用少量规则指定它们的走向,配置会清爽很多,也更易维护。
调试规则的小技巧
- 善用日志:把日志级别调高,能看到每个连接命中了哪条规则,定位问题非常直观;
- 用全局模式做对照:某网站打不开时切全局,若能通,基本可判定是规则问题;
- 改完记得重载:大多数客户端支持热重载,改一行、重载即生效,无需重启。
REJECT 与广告屏蔽
规则的策略除了直连和代理,还有一个很实用的 REJECT,意思是直接拒绝这个连接。它最常见的用途就是屏蔽广告与追踪域名:当某个广告域名命中 REJECT 规则时,请求会被直接掐断,页面里的广告位自然就加载不出来,既清爽又省流量。配合社区维护的广告域名规则集一起使用,去广告的效果尤其明显。
规则与策略组的配合
规则里指定的"策略",很多时候并不是直接写某个具体节点,而是写一个策略组的名字。这样做的最大好处是解耦:规则只负责回答"这类流量交给哪个组",而具体用组里的哪个节点,由你在界面上随时切换。举个例子,你可以建一个名为"流媒体"的策略组,把相关规则统统指向它,之后想换节点时只需在这个组里点一下,所有流媒体流量就一起切换了,完全不必逐条去改规则。
新手常见的错误示范
最典型的错误就是顺序写反。比如把 GEOIP,CN,DIRECT 或 MATCH 放到了某条具体代理规则的前面,结果流量提前被这条宽泛规则命中,那条本该生效的具体规则永远轮不到,表现出来就是"明明写了规则却不起作用"。请牢记:越具体的越靠前,兜底的永远放最后。另一个高频问题是缩进错误——YAML 对缩进极其敏感,多一个空格或少一个空格,都可能导致整份配置加载失败。
小结
规则的核心就八个字:顺序在前,具体优先。先排好"私有 → 拒绝 → 代理 → 直连 → 兜底"的骨架,再借助规则集填充细节,你的分流就能既精准又好维护。想看每种规则类型的完整说明,可查阅 使用文档 · 规则类型速查。
规则这套东西,看懂原理之后其实并不难,真正难的是耐心地把它打磨到贴合自己的使用习惯。建议你从一份成熟的模板规则起步,再根据日常遇到的"该走代理却直连了""该直连却绕了代理"等情况逐步微调,几次之后,你的规则就会越来越顺手、越来越懂你。规则是 Clash 里最值得花时间的部分,一旦理顺,长期都能受益。