CClash 中文社区选择客户端 ↗
首页/博客
操作教程

Clash 自定义规则上线前怎样做小范围核对

Clash 自定义规则上线前怎样做小范围核对。了解适用条件、操作步骤与常见问题的排查方法。

编辑部 · 更新 2026-10-04

自定义规则写入正式 rules 列表前,应先用尽量窄的匹配范围确认这一条会命中谁、不会命中谁。官方路由规则按从上到下顺序匹配,列表顶部优先级更高。小范围核对的核心是:先用更具体的类型、放在上线后计划放置的位置、保留 MATCH 在最后,而不是一次加入大段 GEOSITE 或宽关键字。

适用条件

适用于已经能加载含 rules 的配置,并且能对少数域名或 IP 主动发起请求。规则类型须选自文档列出的项,如 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、DOMAIN-WILDCARD、DOMAIN-REGEX、GEOSITE、各类 IP 与端口、进程、逻辑规则、RULE-SET、SUB-RULE 和 MATCH。若请求为 udp,而所选代理节点没有 udp 支持,则会继续向下匹配。小范围核对必须把协议与出站能力算进去,否则会误判规则没生效。

判断依据有三条:新规则相对于可能误伤的宽规则位置是否就是上线位置;匹配器是否窄于或等于正式打算使用的集合;MATCH 是否仍是最后一条且无需条件。三条不同时成立时,核对结果不能代表上线后的行为。

小范围核对步骤

第一步,不要直接上 GEOSITE 或宽 DOMAIN-KEYWORD。先用 DOMAIN 写一条完整域名,形式如 DOMAIN,ad.com,REJECT,只针对要验证的那一个主机名。若上线后才需要后缀,第二步再换成 DOMAIN-SUFFIX。文档说明后缀 google.com 会匹配 www.google.com、mail.google.com 和 google.com,但不匹配 content-google.com。用这一差异检查:目标主机应命中,名字相近但不该命中的主机不应命中。

第二步,把这一条插在上线后计划放置的相对位置,不要随手追加在文件末尾。放在底部核对通过,不能证明放到中部以后仍只影响目标站。若上线位置会高于已有关键字或正则,核对名单里必须加入一条可能被这些宽规则误伤的域名。

第三步,目标 IP 类规则(IP-CIDR、IP-CIDR6、IP-SUFFIX、IP-ASN、GEOIP 等)要明确是否加 no-resolve。域名开始匹配目标 IP 规则时,mihomo 将触发 dns 解析;可加 no-resolve 跳过。若更早的匹配已触发解析,则依旧会匹配到带 no-resolve 的目标 IP 类规则。核对过程中必须固定是否允许这次解析,否则同一域名两次结果不可比。

第四步,逻辑规则严格按括号形式,例如 AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT。先核对单个 payload 能独立命中,再组合。SUB-RULE 同样注意括号,且子规则须已定义。

第五步,列表最末保留 MATCH,如 MATCH,auto。它匹配所有请求、无需条件。若核对时把 MATCH 挪到新规则前面,未命中流量的去向会改变,不能叫做小范围。

失败时下一步

目标域名未走到新加的那一条:按从上到下检查是否被更靠上的关键字、通配符、正则、GEOSITE 或 RULE-SET 先吃掉。通配符仅支持 * 与 ?,且与配置文件其他地方的 Clash 格式通配符不相同,写错会表现为完全不中。udp 落到下面一条:检查节点 udp 能力。IP 规则不符合预期:查是否触发 dns、是否误加或漏加 no-resolve、是否误用 src(会将目标 IP 匹配转为来源 IP 匹配)。逻辑规则无效:先数括号是否成对,再拆成单条。

仍不稳定时不要扩大规则数量,先把类型换成更窄的 DOMAIN 或带 no-resolve 的精确 IP-CIDR,位置不变后再核对一次,通过后再考虑换成集合类规则。

资料:https://wiki.metacubex.one/config/rules/