故障排查
自己加的规则不生效:六个常见原因
规则不生效,往往不是规则写错,而是被别的东西抢先或覆盖了。
先看结论
规则不生效的六个常见原因:顺序靠后被抢先匹配、MATCH 写在中间、策略名拼写不一致、规则集没更新、配置被订阅更新覆盖、旧连接没有断开。
逐个检查
- 顺序:规则自上而下匹配,命中就停。把具体规则放前面。
- MATCH 位置:它必须在最后,否则后面的规则永远不会被看到。
- 策略名:规则末尾的策略名要和策略组名称完全一致,包括大小写和空格。
- 规则集:规则集过旧时,新域名没被收录,需要更新规则集。
- 被覆盖:手改的订阅配置会在订阅更新时被覆盖,用扩展配置叠加,见Clash Verge 规则设置。
- 连接缓存:改规则后,已存在的连接不会重新判定,需要关闭旧连接或重启客户端。
怎么确认命中了哪条规则
在客户端的"连接"页面里,每个连接会显示命中的规则和使用的策略。访问目标网站后到这里查看,比反复猜更直接。
一份系统的检查清单
| 检查项 | 怎么做 | 通过的标准 |
|---|---|---|
| 配置是否加载成功 | 看日志有无加载错误 | 没有报错 |
| 规则是否出现在最终配置里 | 查看客户端的规则列表 | 你的规则在预期位置 |
| 有没有更靠前的规则抢先命中 | 在连接页面看命中的规则 | 命中的是你写的那条 |
| 策略名是否一致 | 对比规则末尾与策略组名称 | 完全一致 |
| 旧连接是否已清理 | 关闭全部连接后重试 | 新连接按新规则处理 |
规则集的常见陷阱
规则集用起来省事,但有三个常见陷阱:地址失效导致一直加载失败,却只在日志里留下一行不起眼的提示;behavior 声明与内容类型不符,加载成功却没有任何条目生效;规则集更新后,原本命中的域名被收录进了另一条规则。出现"昨天还好好的"这类问题,先检查规则集的更新状态。
订阅覆盖与扩展配置
直接修改订阅里的规则,下一次更新订阅就会被覆盖,这是"规则突然失效"最常见的原因之一。把自己的规则放进扩展配置里,就可以避免。如果你确实是直接改了订阅配置,更稳妥的做法是把改动迁移到扩展配置里。
关于「规则不生效」的常见问题
DNS 会影响规则命中吗?
会。IP 类规则依赖解析结果,域名类规则依赖域名是否被保留。fake-ip 模式下的行为尤其需要注意,见代理 DNS 设置。
改完规则,要不要重启客户端?
多数客户端会在保存后自动重新加载配置。不确定时,手动重载一次配置,或者重启客户端,并关闭已有连接。
Clash规则不生效是什么原因?规则没命中怎么查?
常见原因:规则顺序靠后被更宽泛的规则先命中、写法有误、客户端处于全局模式、域名被解析为 IP 导致域名规则失效。用客户端的日志功能看请求命中了哪条规则,是最直接的办法。