规则优先级:为什么顺序决定一切
Clash 的规则引擎只有一条铁律:自上而下逐条匹配,命中第一条就执行并停止。没有「更精确的规则优先」,只有「更靠前的规则优先」。
案例一:泛化规则放太前
- DOMAIN-KEYWORD,google,Proxy
- DOMAIN,dl.google.com,DIRECT # 永远不会命中
本意是让 Chrome 更新走直连(国内有服务器),但 KEYWORD 规则在前面把一切带 google 的域名都拦走了,第二条成了死规则。两行对调即可。
案例二:兜底规则写在中间
- GEOIP,CN,DIRECT
- DOMAIN-SUFFIX,steamcommunity.com,Proxy # 可能不生效
如果 steamcommunity 解析出的 IP 恰好是国内 CDN,GEOIP 先命中直连,后面的域名规则没机会执行。地域兜底类规则(GEOIP、MATCH)必须放在整个列表的最末尾。
推荐排序模板
- 局域网 / 私有网段直连;
- 明确的例外(某域名强制直连/强制代理/REJECT);
- 大批量的域名规则(规则集);
- GEOIP,CN,DIRECT;
- MATCH 兜底。