Clash 文档中心中文使用手册

Clash 怎样检查网段内外两个样例地址

Clash 怎样检查网段内外两个样例地址。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

检查前要固定的条件

用网段内、网段外两个样例地址检查 IP-CIDR 或 IP-CIDR6,适用条件是:已经有一条明确的 CIDR,并且能根据请求最终使用的策略判断该地址有没有命中这一行。检查比较的是 IP 地址范围,不是域名、ASN 或国家代码。规则按从上到下顺序匹配,顶部优先级更高;若不把待查行与更宽规则隔开,样例外地址也可能被其它行收走,无法证明该 CIDR 本身不包含它。

待查行必须写在 MATCH 之前,因为 MATCH 匹配所有请求、无需条件。两个样例应以字面 IP 进入匹配,以免 no-resolve 以及是否触发 DNS 干扰在不在网段内的结论。待查行上不要叠加尚未核对括号的 AND / OR / NOT,也不要叠加 SUB-RULE。不要使用附加参数 src,除非两个样例本来就是来源地址;src 会把目标 IP 匹配转为来源 IP 匹配,检查对象会整侧对换。

网段内、网段外各取一个地址对照

以官方 IPv4 示例 IP-CIDR,127.0.0.0/8,DIRECT,no-resolve 为模板时,网段内样例应选第一段为 127 的地址,网段外样例应选第一段不是 127 的地址。基地址建议按官方示例写成网络块的起始形式,避免口头上的块与 payload 文本不一致。将待查 CIDR 指向一个可与其它规则区分的策略,并确认列表中没有更早规则匹配这两个地址。

对 IPv6,官方示例为 IP-CIDR6,2620:0:2d0:200::7/32,auto。网段内样例必须与这 32 位前缀一致,网段外样例必须使该前缀不同。不能把 IPv6 的 /32 当成只有文本里的那一个完整地址在范围内。IP-CIDR 与 IP-CIDR6 效果相同,判断方式都是地址是否落入范围,但两个样例必须与规则的地址族一致:用 IPv4 样例去打 IPv6 规则,结果不能解释为网段写错。

不要用 IP-SUFFIX,8.8.8.8/24,PROXY 做 CIDR 网段内外检查,因为它匹配的是 IP 后缀范围。也不要用 GEOIP、IP-ASN 得出这两个样例是否在网段内的结论。操作上只改请求的目标 IP 字面值,保持规则类型、前缀和策略不变,分别观察两个样例命中的策略是否不同。若请求为 UDP 且节点没有 UDP 支持,官方说明会继续向下匹配,样例结果会被后续规则污染,检查时应避开这一干扰。

结果解读与失败时下一步

若网段内样例命中该行策略,网段外样例落到更后面的规则或最终 MATCH,说明当前 CIDR 对这两个地址的包含关系符合范围定义,检查结束。若两个样例都命中该行,说明前缀过短导致范围过大,或所谓外样例其实仍落在前缀内。若两个都不命中该行,说明更早规则截走,或待查行写在 MATCH 之后,或样例地址族与规则不一致。

失败时下一步:从顶部找出第一条匹配内样例的规则,确认它就是待查 CIDR。再核对 payload 是否漏写前缀、基地址是否与所声称的块一致。IPv6 检查失败时,按 32 位前缀比较,而不是只看最后一节是否为 ::7。若现场只能用域名访问,先改成字面 IP 再查网段关系,避免把解析问题算进范围检查。检查结束后去掉仅用于区分策略的临时排列,把该行放回目标 IP 规则应在的位置,并保留列表末尾的 MATCH。

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

返回文章索引使用教程