ClashX 规则优先级实战:DOMAIN-SUFFIX、GEOIP、MATCH 如何避免冲突

很多人以为是节点不稳定,实际是规则覆盖关系出错。ClashX 会按配置文件从上到下匹配,命中第一条后就停止,因此顺序本身就是逻辑的一部分。

为什么规则看起来随机失效

很多人以为是节点不稳定,实际是规则覆盖关系出错。ClashX 会按配置文件从上到下匹配,命中第一条后就停止,因此顺序本身就是逻辑的一部分。

如果你把 MATCH、大范围 GEOIP 或宽泛 DOMAIN-SUFFIX 放在前面,后面的精准规则就没有机会生效。

💡
first match wins

每个请求只会命中第一条规则。顺序写错,后面的规则等于不存在。

典型症状

  • 时好时坏像节点波动
  • 日志总落到 GEOIP 或 MATCH
  • 首页能开,播放或登录失败
  • 改一条规则导致别的业务异常
⚠️
常见误区

把 MATCH 写在中间会直接吞掉后续规则,必须最后一条。

规则优先级的核心模型

可以把规则理解为漏斗:越精准越靠前,越兜底越靠后。推荐顺序:DOMAINDOMAIN-SUFFIXDOMAIN-KEYWORDIP-CIDRGEOIPMATCH

  • 精确域名命中快且稳定
  • 关键业务域名优先写在前面
  • 兜底规则必须唯一且在最后
规则类型优先级用途风险
DOMAIN1关键业务域名维护成本高
DOMAIN-SUFFIX2整域分流后缀过宽误伤
DOMAIN-KEYWORD3过渡规则误判概率高
IP-CIDR4网段策略注意 no-resolve
GEOIP5国家兜底CDN 场景偏差
MATCH6最终兜底不可提前
📌
定位建议

DOMAIN 负责精确命中,GEOIP 与 MATCH 负责兜底,避免混写。

DOMAIN
最快
DOMAIN-SUFFIX
较快
GEOIP
中等
MATCH
兜底

漏斗模型:业务精确规则 → 服务后缀 → 关键词过渡 → 网段与地理兜底 → MATCH。

常见冲突场景与修复

场景 1:办公系统走错线路。通常是被上方 GEOIP,CN,DIRECT 提前命中。修复方法是将办公域名白名单提前。

场景 2:流媒体识别失败。多数是规则关键词过宽,把服务 API 与内容域名混在一起,需要拆分成更细粒度规则。

办公系统走错线路

🧨
问题配置

先 GEOIP 后业务精确规则,SSO 回调被截断。

rules:
  - GEOIP,CN,DIRECT
  - DOMAIN-SUFFIX,corp.example.com,DIRECT
  - DOMAIN,sso.corp-auth.com,PROXY
  - MATCH,PROXY
修复

把 SSO 与关键 API 前置,再放 GEOIP。

rules:
  - DOMAIN,sso.corp-auth.com,PROXY
  - DOMAIN,api.corp.example.com,DIRECT
  - DOMAIN-SUFFIX,corp.example.com,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

流媒体识别失败

🎬
问题配置

只靠关键字规则,鉴权与媒体域名漏匹配。

rules:
  - DOMAIN-KEYWORD,netflix,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,DIRECT
修复

拆分 API、媒体、主域后缀规则。

rules:
  - DOMAIN,api.netflix.com,PROXY_STREAM
  - DOMAIN-SUFFIX,nflxvideo.net,PROXY_STREAM
  - DOMAIN-SUFFIX,netflix.com,PROXY_STREAM
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

国内 CDN 走代理

📦
问题配置

宽关键词把 CDN 资源一起代理。

修复

主域代理,CDN 域明确 DIRECT。

UDP 游戏不通

🎮
问题配置

策略组不支持稳定 UDP,导致掉线。

修复

给游戏域名和网段独立 UDP 策略组。

实用模板(可直接套用)

rules:
  - DOMAIN,api.example.com,ProxyA
  - DOMAIN-SUFFIX,example.com,ProxyA
  - DOMAIN-KEYWORD,office,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,ProxyB

模板重点不是具体节点名,而是顺序逻辑。

基础模板

rules:
  - DOMAIN,login.company.com,PROXY
  - DOMAIN-SUFFIX,company.com,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

进阶模板(rule-providers)

rule-providers:
  direct:
    type: http
    behavior: classical
    url: https://example.org/rules/direct.yaml
    path: ./ruleset/direct.yaml
    interval: 86400

rules:
  - RULE-SET,direct,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

流媒体模板

rules:
  - DOMAIN-SUFFIX,netflix.com,PROXY_STREAM
  - DOMAIN-SUFFIX,nflxvideo.net,PROXY_STREAM
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

模板各段:关键业务、场景规则、地理兜底、最终兜底。

🛠️
定制建议

一次只改一层,并做回归测试。

排查流程(5 分钟版)

  1. 开启日志并重现一次目标请求
  2. 确认实际命中的规则行
  3. 检查该规则上方是否存在宽规则
  4. 核对规则集版本与订阅更新时间
  5. 改动后做回归:目标域名 + 常用网站 + 关键业务

第1分钟复现,第2分钟定位命中,第3分钟看覆盖,第4分钟最小改动,第5分钟回归验证。

tail -f ~/Library/Logs/ClashX/clashx.log
grep "api.example.com" ~/Library/Logs/ClashX/clashx.log
grep -E "MATCH|GEOIP|DOMAIN" ~/Library/Logs/ClashX/clashx.log | tail -n 50
Step 1
复现
Step 2
定位
Step 3
检查覆盖
Step 4
改动
Step 5
回归
📍
日志位置

通常在 ~/Library/Logs/ClashX/ 目录。

团队协作与版本管理

多人维护时,建议把规则拆成“业务白名单、系统服务、地理分流、兜底规则”四层,并在提交信息里写明“变更目的 + 影响范围 + 回滚方案”。

这样即使后续出现异常,也能快速定位是哪一层引入的问题。

config/
  base.yaml
  rules/
    10-business.yaml
    20-services.yaml
    30-geo.yaml
    99-fallback.yaml
feat(rule): add explicit routing for corp SSO callbacks
fix(rule): move MATCH to last line and reduce keyword shadowing
chore(ruleset): bump streaming provider to 2026-02-10
🤝
共享建议

使用 rule-provider 做团队共享,减少设备间漂移。

FAQ:规则优先级常见问题

Q1:no-resolve 是什么?

A:让 IP 规则不再额外解析 DNS,适合内网网段。

Q2:MATCH 放哪里?

A:最后一行,只保留一条。

Q3:规则集和本地规则冲突怎么办?

A:看最终顺序,先命中者生效。

Q4:为什么同一服务有时正常有时异常?

A:主域、API、媒体域命中不同规则,需拆分。

Q5:DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 怎么选?

A:优先 DOMAIN-SUFFIX,关键词只作过渡。

Q6:GEOIP 能不能前置?

A:不建议,容易吞掉高优先业务规则。

Q7:改完多久生效?

A:重载后立即生效,但要用日志复核命中。

Q8:多人协作如何避免覆盖?

A:分层文件 + 提交规范 + 顺序审查。

Q9:规则越多越好吗?

A:不是。规则应“少而准”,避免大量宽规则互相覆盖。

Q10:是否要把所有域名都写成 DOMAIN?

A:不需要。关键域名用 DOMAIN,其它走后缀或规则集更易维护。

附录:规则实验室(可复制验证)

下面是三组可复现的小实验,适合在测试配置中快速理解“顺序决定行为”。

实验 1:MATCH 提前的影响

rules:
  - DOMAIN,api.example.com,PROXY
  - MATCH,DIRECT
  - DOMAIN-SUFFIX,example.com,PROXY
🧪
预期结果

DOMAIN-SUFFIX,example.com,PROXY 永远不会生效,因为 MATCH 已经提前终止匹配。

实验 2:关键词规则覆盖过宽

rules:
  - DOMAIN-KEYWORD,cdn,PROXY
  - DOMAIN-SUFFIX,assets.example.cn,DIRECT
  - MATCH,DIRECT
🧪
预期结果

当请求域名包含 cdn 时,会先命中关键词规则,后面的 DIRECT 无法执行。

实验 3:精确规则前置的收益

rules:
  - DOMAIN,auth.example.com,PROXY
  - DOMAIN-SUFFIX,example.com,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

将认证域名前置后,登录链路与业务链路可以分开管理,避免策略冲突。

实验重点 1
验证终止规则
实验重点 2
验证覆盖范围
实验重点 3
验证前置收益

总结

先把规则写对,再谈测速和节点数量。可维护的规则顺序,才是长期稳定分流的基础。

上线前建议固定执行三项检查:关键域名命中检查、MATCH 末尾检查、回归样例检查。

只要把“顺序”当作设计对象,你的 ClashX 分流将更稳定、更可解释、更易协作。