Clash 配置一旦使用 GEOSITE 或 GEOIP,关键目标的命中结果就会绑定到当前地理与分类数据。数据更新后,请求仍按列表从上到下匹配,但命中的那一行可以改变。复核的目的是确认关键域名、关键 IP 在更新前后仍然落到指定出站,而不是假设分类名永远覆盖同一批站点。下文只处理更新前后的对照方法,并以官方路由规则中的类型、优先级和附加参数作为判断依据。
适用条件与关键目标清单
适用条件是 rules 中出现与地理或分类数据相关的规则:GEOSITE 匹配 Geosite 内的域名,GEOIP 匹配 IP 所属国家代码,SRC-GEOIP 匹配来源 IP 所属国家代码。IP-ASN、SRC-IP-ASN 同样依赖归属数据,若关键目标走这类规则,也应列入对照。若目标全部写成 DOMAIN 或 DOMAIN-SUFFIX,字面规则不会随地理数据改写,但列表顺序变化、以及目标 IP 规则是否触发解析,仍可能改变路径,因此只要同一段 rules 里混用了地理规则,就需要做更新前后对照。
关键目标必须写成「对象 + 期望出站 + 期望命中的规则类型」。对象可以是完整域名、后缀域名或具体 IP。期望命中行应能在配置中指认,例如官方示例格式中的 GEOSITE 分类名与 GEOIP 国家代码。判断依据是当前配置文本和规则顺序,而不是对分类覆盖范围的印象。MATCH 匹配所有请求、无需条件,更新前就要标明哪些目标绝对不允许落到 MATCH。
更新前按优先级记录命中点
官方说明:规则将按照从上到下的顺序匹配,列表顶部的规则优先级高于其底下的规则。更新前先通读整段 rules,禁止只看地理相关几行。
对每个关键域名,先判断它会不会在 GEOSITE 之前被 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、DOMAIN-WILDCARD、DOMAIN-REGEX 或 RULE-SET 截获。官方对后缀的界定是:google.com 匹配 www.google.com、mail.google.com 和 google.com,但不匹配 content-google.com。若目标在更靠前的域名规则已命中,地理数据更新通常不改变该条出站,但仍须记下实际命中行,避免更新后把无关变化误判为地理数据问题。
对依赖 GEOIP 的目标,记录是否使用 no-resolve。该附加参数仅支持关于目标 IP 的规则。域名开始匹配关于目标 IP 的规则时,mihomo 将触发 dns 解析以检查目标 IP 是否匹配;可以选择 no-resolve 跳过解析。若更早的匹配已经触发解析,则依旧会匹配到带 no-resolve 的目标 IP 类规则。因此更新前还要记录:该域名是否可能在命中 GEOIP 之前已被解析。使用 AND、OR、NOT、SUB-RULE 时,按官方要求检查括号,避免逻辑规则未生效却被当成地理匹配失败。
若请求为 udp,而代理节点没有 udp 支持,官方说明会继续向下匹配。关键目标包含 udp 时,要把「是否可能因协议不支持而跳过当前出站」一并记入清单。
更新后对照差异与失败时下一步
更新后用同一份清单重放匹配,不要只确认分类名字符串仍在。判断偏离的依据有三条:其一,域名已不在对应 GEOSITE 数据中,匹配继续向下;其二,解析后的 IP 相对 GEOIP 国家代码发生变化;其三,上方新增或调整了 RULE-SET、逻辑规则或更具体的域名规则,从而抢先命中。只要出站与更新前记录不一致,或本应命中地理规则的请求落到 MATCH,即视为复核失败。
失败时下一步:在 GEOSITE、GEOIP 之前写入更具体的 DOMAIN 或 DOMAIN-SUFFIX,把必须稳定的目标从分类数据中剥离。需要按网段处理时使用 IP-CIDR 或 IP-CIDR6(二者效果一样,后者只是别名),并按是否允许解析决定 no-resolve。分类名已无对应数据时,改用 RULE-SET(需配置 rule-providers)或改回单条域名规则,而不是重复堆叠同名 GEOSITE。逻辑规则括号错误时,先修正括号再解释地理数据。仍无法判断时,回到官方路由规则说明核对规则类型与附加参数。