1. 灾难案例复盘:一条错误顺序规则如何毁掉全部分流
看一个真实的配置翻车现场:
```yaml
# 错误示范配置:
rules:
- GEOIP,CN,DIRECT # [致命错误!写在了太靠前的位置]
- DOMAIN-SUFFIX,openai.com,🤖 AI-Services
- DOMAIN-SUFFIX,steamcommunity.com,PROXY
- MATCH,PROXY
```
### 为什么这个配置会导致 Steam 社区打不开?
1. Steam 社区(steamcommunity.com)在国内部分 CDN 节点部署了电信公网 IP;
2. 当数据包发起连接时,内核第一行就遇到了 `GEOIP,CN,DIRECT`;
3. 内核判定该 IP 属于中国大陆,**立即执行 DIRECT 直连并短路终止后续扫描**!
4. 随后该连接被直接送到国内网络并遭到 GFW 阻断,你精心写在第二行的 `steamcommunity.com,PROXY` **连被执行的机会都没有,彻底沦为死代码!**
💡 任何基于 IP 的粗分流规则,都必须无条件退让到精准域名规则的后面。
2. 规则引擎评估代价与推荐排序体系
按照「计算开销由低到高、匹配范围由小到大」的工程原则,标准规则顺序如下:
```yaml
rules:
# ====================================================
# 【第一梯队】:高精度广告拦截 (精准域名匹配,开销极小)
# ====================================================
- RULE-SET,category-ads-all,REJECT
# ====================================================
# 【第二梯队】:本地私有网络 (防回环,必须直连)
# ====================================================
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
# ====================================================
# 【第三梯队】:海外核心业务垂直分流 (特定域名集合)
# ====================================================
- RULE-SET,openai,🤖 AI-Services
- RULE-SET,youtube,🎬 流媒体-YouTube
- RULE-SET,netflix,🎬 流媒体-Netflix
- RULE-SET,telegram,✈️ Telegram
- RULE-SET,github,💻 开发加速
# ====================================================
# 【第四梯队】:国内合规生态大网 (粗粒度直连)
# ====================================================
- RULE-SET,cn-domains,DIRECT
- GEOIP,CN,DIRECT,no-resolve
# ====================================================
# 【第五梯队】:终极兜底捕获 (必须是最后一行!)
# ====================================================
- MATCH,🐟 漏网之鱼
```
3. 怎样排查某条规则是否被前面的规则劫持?
在 Clash Verge Rev 中进行规则调试的专业方法:
1. 打开左侧「连接(Connections)」面板;
2. 在右上角搜索框中输入你正在调试的目标域名(如 `openai.com`);
3. 单击该连接详情,查看右侧显示的 **「Rule」** 字段;
4. 如果「Rule」显示的不是你期望的 OpenAI 策略组,而是显示了 `GEOIP,CN` 或 `MATCH`,证明它在半路上就被前置规则错误抢占命中了。
❓ 常见疑问与排查步骤
MATCH 规则如果不写会怎样?
如果规则列表末尾没有任何 MATCH 规则,且数据包遍历完所有规则都未命中,内核的默认行为是将其直接 DIRECT 直连发出。这会导致所有未被明确识别的海外小众网站直接打不开。
规则列表里有两条完全一样的规则会报错吗?
不会报错。但排在后面的那一条重复规则永远不会被执行,属于冗余代码,建议定期清理。
能不能把所有规则都写成 DOMAIN 精确匹配?
不现实。现代一个大型网站(如 YouTube)背后关联了数十个不同的图片、API 与 CDN 子域名,手写精确匹配极其繁重,必须搭配 DOMAIN-SUFFIX 或 RULE-SET 规则集。