Clash 文档中心中文使用手册

Clash 怎样用主域名和子域名验证两种规则

Clash 怎样用主域名和子域名验证两种规则。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

要验证 DOMAIN 与 DOMAIN-SUFFIX 是否按手册工作,应当用同一主域名再配一组子域名,观察哪一类主机命中哪一条规则。验证的目的不是比较速度或观感,而是核对:完整域名是否只等于载荷本身,域名后缀是否包含后缀自身与点分子域,并排除非后缀的相似名。

适用条件:什么情况下值得做这组对照

在下列条件下做主域名加子域名对照最有意义:

  • 配置里同时存在(或即将存在)DOMAIN 与 DOMAIN-SUFFIX,载荷为主域名,例如手册中的 google.com。
  • 实际流量里既有裸主域名,也有 www、mail 这类子域名,需要确认会不会只命中其中一种类型。
  • 担心把 content-google.com 这类“名字里有主域名片段、但不是点分后缀”的主机误收进来。
  • 列表中还有 DOMAIN-KEYWORD、DOMAIN-WILDCARD、DOMAIN-REGEX、GEOSITE、RULE-SET 或 AND/OR/NOT,可能抢先匹配,需要用对照请求确认真正命中的是哪一条。

不适用的情况是:请求已经变成纯 IP、或只走 IP-CIDR/GEOIP 等目标 IP 规则。手册说明,域名开始匹配目标 IP 类规则时可能触发 DNS 解析;那会验证 IP 规则,而不是验证两种域名规则的范围差。对照时应尽量让请求在域名阶段就能被前排规则决定。

具体操作:用主域名和子域名做对照

准备四类主机,载荷统一用手册示例中的 google.com(你的环境可换成自己的主域名,但判断依据不变):

  • A:主域名 google.com
  • B:子域名 www.google.com
  • C:另一子域名 mail.google.com
  • D:非后缀相似名 content-google.com

建议在 rules 里用可区分的策略名写成相邻两条(策略名仅用于区分命中条目,不要理解成效果承诺),并保证它们上方没有会提前吃掉这些主机的宽规则:

rules:
  - DOMAIN,google.com,REJECT
  - DOMAIN-SUFFIX,google.com,auto
  - MATCH,auto

然后按请求主机逐项判断:

  1. 发起主机为 A 的请求。判断依据:DOMAIN 匹配完整域名,A 与载荷相等,应命中第一条。若 A 落到第二条或 MATCH,说明第一条未参与匹配,应检查类型拼写、列表是否被其他配置覆盖、以及逻辑规则括号是否把该条排除。
  2. 发起主机为 B 的请求。判断依据:完整域名不相等,第一条不应命中;手册写明 DOMAIN-SUFFIX 的 google.com 匹配 www.google.com,第二条应命中。若 B 命中第一条,说明类型被写成了后缀或关键字,而不是完整匹配。若 B 直接到 MATCH,说明第二条未生效或顺序被改乱。
  3. 发起主机为 C 的请求。判断依据与 B 相同,手册把 mail.google.com 与 www.google.com 并列。B 能过而 C 不能过时,不是后缀定义变了,而是中间插入了只覆盖某一级主机的其他规则,需要把插入条目一并列入对照。
  4. 发起主机为 D 的请求。判断依据:手册明确不匹配 content-google.com。A、B、C 的结论都成立时,D 仍应继续向下,直到其他规则或 MATCH。若 D 命中了第二条,说明实际生效的不是后缀匹配,而可能是关键字、过宽通配或正则。
  5. 需要验证通配符时,可临时增加 DOMAIN-WILDCARD,*.google.com,auto。手册指出此处仅支持 * 和 ?,且与配置文件其他地方的 Clash 格式通配符不相同。对照时分别看 A 与 B:通配符是否包含主域名本身,不能用 DOMAIN-SUFFIX 的结论代替,必须以该条是否命中为准。
  6. 若使用逻辑规则做组合验证,必须保持手册中的括号形式,例如 OR,((NETWORK,UDP),(DOMAIN,baidu.com)),REJECT。漏括号时,对照请求的命中项会整条错位,不能用来给两种域名类型下结论。

记录时只记四件事:请求主机、命中的规则类型、载荷、该条在列表中的位置。这四项足够用手册定义复核,不必引入未在文档出现的界面名称。

失败时下一步

对照结果与手册不一致时,按下面顺序缩小范围:

  • A 不中 DOMAIN:检查载荷是否多写了空格、是否写成了带 www 的完整主机、以及是否被更靠前的 DOMAIN-KEYWORD 或 GEOSITE 先匹配。
  • B、C 不中 DOMAIN-SUFFIX 却中了 DOMAIN:类型写反或复制时把两条写成了同一种。改回“完整一条、后缀一条”后再跑同一组主机。
  • B、C 中了后缀,D 也中了后缀:停止用这两条做结论,先查找关键字、通配符、正则或规则集合是否把 D 收进去。手册反例是判断后缀边界的标准。
  • 所有域名都落到 MATCH:说明域名规则整段未参与。核对 rules 是否被加载、RULE-SET 名称是否存在、SUB-RULE 括号是否把流量引进子规则。
  • 同一主机有时像域名命中、有时像 IP 命中:查看该条是否已进入目标 IP 规则并触发解析;需要纯域名对照时,把 IP 类规则移到两种域名规则之后,或对 IP 规则使用手册所述仅适用于目标 IP 规则的 no-resolve,避免解析结果打断对照。
  • 通配符条目行为与后缀条目不同:这是预期差异,回到 *、? 的定义重新设计对照主机,不要把两种类型的验证混成一次请求。

完成一组 A/B/C/D 对照后,才能说清主域名规则与子域名请求的关系。验证标准始终是手册中的完整域名、域名后缀以及 google.com 的正反例,而不是列表看起来“已经写了主域名”。

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

返回文章索引使用教程