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

Clash 阅读 GEOIP 规则前怎样理解依赖数据

Clash 阅读 GEOIP 规则前怎样理解依赖数据。了解适用条件、操作步骤与常见问题的排查方法。

编辑部 · 更新 2026-10-04

阅读 GEOIP 之前,先把「这条规则究竟吃什么数据」说清楚。官方路由规则把匹配对象拆开:有的只看域名,有的必须看 IP,还有的看来源地址、端口、进程或入站信息。GEOIP 的定义是匹配 IP 所属国家代码,因此它依赖的是「当前用于匹配的那一个 IP」以及「该 IP 被归到的国家代码」,而不是网站品牌、证书组织,也不是 Geosite 域名表。依赖对象认错,后面所有按国家分流的判断都会建在错误数据上。

先把 GEOIP 和相邻规则的数据对象拆开

同一份 rules 列表里,DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、DOMAIN-WILDCARD、DOMAIN-REGEX 只处理域名形态。GEOSITE 匹配 Geosite 内的域名,文档写明部分内容参考 v2fly/domain-list-community。这些规则一旦命中,请求可能根本不会进入后面的 GEOIP。判断依据很直接:域名类规则不需要目标 IP,也不读取国家代码;它们依赖的是域名字符串是否符合完整匹配、后缀、关键字、通配符、正则或集合。

目标 IP 类规则包括 IP-CIDR、IP-CIDR6、IP-SUFFIX、IP-ASN 和 GEOIP。文档说明 IP-CIDR 与 IP-CIDR6 效果一样,后者只是别名;IP-ASN 匹配 IP 所属 ASN;GEOIP 匹配 IP 所属国家代码。阅读 GEOIP 前应确认自己要依赖的是国家代码,而不是 CIDR 段或 ASN 编号。把「地区」理解成公司网段或自治系统,已经偏离这条规则的数据定义。

来源侧是另一套对象。SRC-GEOIP 匹配来源 IP 所属国家代码,SRC-IP-ASN、SRC-IP-CIDR、SRC-IP-SUFFIX 匹配来源 IP。附加参数 src 仅支持关于目标 IP 的规则,作用是将目标 IP 匹配转为来源 IP 匹配。适用条件是:只有确实要用客户端地址的国家代码时,才去读 SRC-GEOIP 或带 src 的写法;默认 GEOIP 用的是目标侧。对象选反时,国家代码再准确也无法描述访问目标。

域名场景下,目标 IP 必须先出现

纯 IP 请求里,目标地址已经在请求中,GEOIP 可以直接对照国家代码。域名请求则没有现成 IP。文档写明:域名开始匹配关于目标 IP 的规则时,mihomo 将触发 DNS 解析来检查域名的目标 IP 是否匹配规则。这是 GEOIP 在域名场景下的核心依赖:解析结果提供 IP,国家代码再作用在这个 IP 上。没有这次解析,且前面也没有留下解析结果,就没有可对照的国家代码对象。

附加参数 no-resolve 仅支持关于目标 IP 的规则,用来跳过上述 DNS 解析。具体操作是:检查该 GEOIP 以及它之前的 IP-CIDR、IP-ASN 等有没有带这个参数。判断依据分两支。若匹配走到这条规则时从未解析过,带 no-resolve 就会跳过用域名对应 IP 做国家代码检查。若更早的匹配已经触发过 DNS 解析,文档写明依旧会匹配到添加了 no-resolve 的目标 IP 类规则。因此依赖数据里还要记一笔「解析是否已被前置规则触发」,不能认为写了 no-resolve 就一定不看 IP。

逻辑规则 AND、OR、NOT 的 payload 可以嵌套域名规则和网络类型。文档示例包括 AND,((DOMAIN,baidu.com),(NETWORK,UDP)) 这类组合,并提醒注意括号。阅读含 GEOIP 的逻辑规则时,要看清国家代码匹配是否真的会执行,还是被并列的域名、NETWORK 条件挡住。SUB-RULE 匹配至子规则,同样需要注意括号,否则依赖数据在子规则内部,主列表上看不见。

按列表顺序核对依赖,对不上时收窄到哪一环

规则从上到下匹配,列表顶部优先级更高。具体操作建议按固定顺序读配置:先看 GEOIP 上方有没有 DOMAIN 系列、GEOSITE、RULE-SET、SUB-RULE、进程类或入站类规则已经给出站;再看 NETWORK,以及 UDP 与节点 UDP 支持;再看是目标 GEOIP 还是 SRC-GEOIP;最后看 no-resolve 与是否已解析。文档指出,若请求为 UDP,而代理节点没有 UDP 支持(例如 ss 节点没写 udp: true),则会继续向下匹配。文档示例中目标写 GEOIP,CN,DIRECT,来源写 SRC-GEOIP,cn,DIRECT,国家代码大小写不要自行假设可以混用。

失败时下一步应回到依赖链,而不是改写国家代码碰运气。域名已被 GEOSITE 或后缀规则命中,则国家代码数据从未参与。解析被跳过且前置也未解析,则 GEOIP 没有目标 IP 可用。误把 src 加在目标规则上,则依赖的是来源 IP 的国家代码。全部不中时由 MATCH 承接,MATCH 匹配所有请求、无需条件,它不读取地理数据。RULE-SET 引用规则集合,需配置 rule-providers,集合内部的域名或 IP 条件也可能提前结束匹配。把对象、解析、顺序三项逐项排除后,再检查逻辑括号是否写错。

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