Clash Verge 配置规则:添加自定义规则、优先级与生效排查
简答:在 Clash Verge Rev 中,通常应右键订阅配置并选择“编辑规则”,把自定义规则放在前置规则中,再确认规则目标使用的是订阅里真实存在的代理组名称。规则按从上到下匹配,第一条命中后停止,MATCH 必须放在最后。本文为第三方使用指南,不代表相关项目官方。
定义:Clash Verge 配置规则,就是用域名、IP、端口或进程等条件,把流量分别交给 DIRECT、REJECT 或指定代理组处理。
先试这一步:5 步添加并验证自定义规则
- 先备份当前订阅配置,避免规则写错后难以回滚。
- 在配置文件列表中右键目标订阅,选择“编辑规则”;官方文档说明,这里的规则不会因为订阅更新而失效,具体入口可参考Clash Verge Rev 自定义规则文档。
- 优先选择“前置规则”添加自定义内容。前置规则会排在订阅规则之前,适合覆盖某个域名、应用或局域网地址。
- 把规则目标替换成订阅中实际存在的代理组名称;如果名称不存在,规则即使语法正确,也可能无法按预期选择策略。
- 保存后访问目标网站或启动目标应用,再到规则页面搜索域名,确认规则内容已经出现在最终配置中。浏览器能打开只能说明当前访问成功,不能单独证明指定规则已经命中。
停止条件:如果“编辑规则”入口不存在、保存时报错或代理组下拉列表为空,先不要继续堆叠规则,应回到订阅是否已成功导入、配置是否被选中以及代理组是否存在这三个基础问题。
规则应该放哪里:前置、后置与订阅规则的区别
| 位置 | 执行关系 | 适合场景 | 注意事项 |
|---|---|---|---|
| 前置规则 | 排在订阅规则之前 | 覆盖某个域名、应用或局域网流量 | 优先级高,规则写得过宽可能提前截获流量 |
| 后置规则 | 排在订阅规则之后 | 补充订阅中没有覆盖的条件 | 前面的订阅规则可能已经先命中 |
| 订阅规则 | 由订阅内容提供 | 作为基础分流配置 | 直接改原始订阅内容,更新后可能被覆盖 |
官方文档建议将自定义配置放在前置规则中,因为规则会从上到下依次匹配,前面的规则优先级更高。实际使用时,不要只看规则是否存在,还要看它排在什么位置以及前面是否已经有更宽泛的匹配条件。
例如,下面两条规则的覆盖范围不同:DOMAIN,example.com,DIRECT只匹配完整域名;DOMAIN-SUFFIX,example.com,DIRECT还会匹配其子域名。规则类型的差异可参照Clash Verge Rev 文档仓库中的规则说明。
常见规则类型:先掌握这 9 种写法
| 规则类型 | 作用 | 示例 |
|---|---|---|
| DOMAIN | 匹配一个完整域名 | DOMAIN,example.com,DIRECT |
| DOMAIN-SUFFIX | 匹配域名及其子域名 | DOMAIN-SUFFIX,example.com,代理组 |
| DOMAIN-KEYWORD | 匹配域名中包含的关键词 | DOMAIN-KEYWORD,ads,REJECT |
| GEOSITE | 按站点集合匹配域名 | GEOSITE,cn,DIRECT |
| GEOIP | 按目标 IP 所属地区匹配 | GEOIP,CN,DIRECT |
| IP-CIDR | 匹配 IP 地址段 | IP-CIDR,192.168.0.0/16,DIRECT |
| DST-PORT | 按目标端口匹配 | DST-PORT,443,代理组 |
| PROCESS-NAME | 按进程名匹配应用流量 | PROCESS-NAME,example.exe,代理组 |
| RULE-SET | 引用已配置的规则集合 | RULE-SET,自定义集合,代理组 |
上述规则类型来自 Clash Verge Rev 文档和 mihomo 路由规则文档。更完整的语法边界、规则集合和附加参数说明,可查看mihomo 路由规则文档。
DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD 的选择建议:只想处理单个完整域名时用 DOMAIN;想覆盖一个主域名及其子域名时用 DOMAIN-SUFFIX;只有在确认关键词不会误伤其他域名时才用 DOMAIN-KEYWORD。关键词规则范围较宽,适合明确的通用标记,不适合随意填写短词。
可直接改写的配置示例
下面示例只展示规则结构,代理组名称必须替换为你的订阅中真实存在的名称。示例中的“代理组”不是固定名称,也不代表所有配置都包含该组。
- 局域网直连:
IP-CIDR,192.168.0.0/16,DIRECT - 指定域名直连:
DOMAIN,example.com,DIRECT - 主域名及子域名交给代理组:
DOMAIN-SUFFIX,example.com,代理组 - 阻断明确的广告关键词:
DOMAIN-KEYWORD,ads,REJECT - 按站点集合分流:
GEOSITE,cn,DIRECT - 按应用进程分流:
PROCESS-NAME,example.exe,代理组 - 默认兜底:
MATCH,代理组
重要:DIRECT表示直连,REJECT表示阻断,第三种写法是订阅中已有的代理组名称。官方规则说明明确指出,MATCH 会匹配所有请求,因此应放在规则列表最后;如果把它提前,后面的规则通常不会再有机会命中。
规则不生效:按“语法—顺序—策略—连接”排查
- 先查语法:每条规则通常由规则类型、匹配内容和策略目标组成,逗号数量、括号或缩进异常都可能导致配置无法保存。先删除刚添加的复杂规则,只保留一条简单的 DOMAIN 规则测试。
- 再查顺序:规则是从上到下匹配,第一条符合条件的规则会停止继续匹配。若前面已有 DOMAIN-SUFFIX 或 GEOSITE 规则,后面的单域名规则可能不会命中。
- 再查代理组:检查目标名称是否与代理组列表完全一致,包括空格、符号和大小写。不要把示例中的“代理组”直接照搬。
- 再查最终配置:在规则页面搜索目标域名、策略名称或规则类型,确认修改后的内容已进入当前选中的配置。只在编辑窗口看到内容,不等于当前运行配置已经加载。
- 最后查连接链路:如果规则已命中但仍无法访问,再排查节点、DNS、系统代理或 TUN 等基础连接问题,不要继续修改规则。规则只决定流量走哪种策略,不会自动修复节点或网络本身的问题。
对于 IP 类规则,mihomo 文档还说明,部分目标 IP 匹配可能触发 DNS 解析;如果需要避免该行为,可了解 no-resolve 参数,但它只适用于相应的目标 IP 规则,不能随意添加到所有规则后面。
配置前后的自查清单
- 备份:保留修改前的配置,出现无法启动或网页无法访问时先回滚。
- 范围:优先从单个域名开始,不要一开始就使用过宽的关键词或兜底规则。
- 位置:需要覆盖订阅规则时放前置;只想补充缺失条件时再考虑后置。
- 策略:DIRECT、REJECT 或代理组名称必须与实际目标一致。
- 验证:分别检查规则是否保存、是否进入当前配置、是否命中、命中后连接是否正常。
- 回滚:删除最近添加的规则后重新测试,一次只改一个变量,便于定位问题。
如果只是希望让某个网站走直连或指定代理,通常不需要同时改 DNS、TUN 和多组规则。先完成最小规则验证,再根据实际现象扩展配置,排查效率更高。
本文结论与边界
Clash Verge 配置规则的核心不是规则越多越好,而是明确匹配对象、放置位置和策略目标。最稳妥的路径是:备份配置,进入“编辑规则”,优先添加一条前置规则,确认代理组名称,再通过规则页面和实际连接结果验证。
本文未对任何订阅服务的速度、可用性、价格或排名作判断;如果某个代理组名称、节点能力或当前网络状态无法从你的配置中核实,应以实际界面和日志为准。
常见问题
Clash Verge 配置规则应该放前置还是后置?
需要覆盖订阅中的已有规则时,优先放前置规则;只想补充订阅没有覆盖的条件时,可以考虑后置规则。因为规则从上到下匹配,前面的规则优先级更高。
为什么我添加了 DOMAIN 规则却没有生效?
常见原因包括规则前面已经有更宽泛的匹配、目标配置不是当前正在运行的配置、代理组名称不存在,或访问请求没有按预期经过该规则。先搜索最终规则列表,再检查规则顺序和实际策略。
DOMAIN 和 DOMAIN-SUFFIX 有什么区别?
DOMAIN 用于匹配完整域名;DOMAIN-SUFFIX 用于匹配某个域名后缀及其子域名。只处理一个具体域名时用 DOMAIN,需要覆盖主域名和子域名时再用 DOMAIN-SUFFIX。
MATCH 为什么必须放在最后?
MATCH 是兜底规则,会匹配所有请求。如果它出现在其他规则前面,后续规则可能没有机会命中,因此通常应将其放在规则列表末尾。
规则已经命中,但网页还是打不开怎么办?
规则命中只说明流量选择了某个策略,不等于节点、DNS、系统代理或 TUN 已经正常。此时应停止继续堆叠规则,转而检查对应策略的连接状态、日志和基础网络链路。
相关阅读
参考资料
- Clash Verge Rev Docs:自定义规则(clashverge.dev)
- clash-verge-rev.github.io:rules.md