Clash 分流规则配置指南

Clash 规则引擎匹配流程

规则集是 Clash 分流精度的根基。许多用户直接引用 Loyalsoldier 全量规则(约 42 万行),导致 mihomo 启动时内存占用突破 180MB、规则匹配延迟显著上升。本文记录一套将全量规则裁剪至 8200 行且分流准确率维持 99.2% 的方法论。📋

Clash RULE-SET 机制回顾 — rule-providers 的三种 behavior

Clash Meta 的 rule-providers 支持 classicaldomainipcidr 三种 behavior。选型直接影响匹配性能与规则表达能力。

裁剪方法论 — 四步压缩流水线

第一步:确定个人域名白名单

从浏览器历史与 DNS 日志导出过去 30 天访问的境外域名 Top 500,这是你最常访问且需要精准分流的集合。其余域名走 GEOIP,US 兜底即可。🎯

第二步:剥离冗余 GEOIP 规则

全量规则集中 GEOIP,CN,DIRECT 之后往往还跟了数百条 CN 域名后缀。在已启用 GEOIP 的前提下,这些后缀规则 95% 是冗余的,可安全删除。

第三步:合并重复 DOMAIN-SUFFIX

使用 Python 脚本将 .google.comgoogle.com 等父子域名合并为更短的后缀。注意:domain behavior 不支持后缀通配,需保留 classical 处理复杂场景。

第四步:分层 proxy-groups 设计

proxy-groups:
  - name: "流媒体"
    type: select
    proxies: [新加坡, 日本, 美国, DIRECT]
  - name: "日常浏览"
    type: url-test
    url: http://cp.cloudflare.com/generate_204
    interval: 300
    proxies: [香港, 台湾, 日本]

实测数据 — 裁剪前后对比

指标全量规则裁剪后
规则行数421,8038,247
启动内存186 MB38 MB
匹配延迟 (p99)1.2 ms0.2 ms
分流准确率99.6%99.2%

GEOIP 数据库更新策略

MetaCubeX 维护的 geoip.metacubex.one 每日更新。建议在 rule-providers 中设置 interval: 86400 自动拉取。若使用 Loyalsoldier 的 GeoSite 仓库,注意其更新频率为每周一次,对新上线 CDN 域名的覆盖有 3-7 天滞后。🌐

常见误区排雷

MATCH,PROXY 放在规则末尾就够了吗?

不够。若前面缺少 GEOIP,CN,DIRECT,国内流量也会走代理,既浪费节点流量又增加延迟。正确顺序:局域绕过 → 国内直连 → 分流规则 → MATCH 兜底。

logical 规则集什么时候用?

当需要「域名 A 且非 IP 段 B」的复合条件时,logical 规则是唯一选择。但 logical 匹配开销是 classical 的 3-4 倍,建议总量控制在 50 条以内。

rule-providers 完整配置模板

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - GEOIP,CN,DIRECT
  - GEOSITE,gfw,日常浏览
  - MATCH,DIRECT

延伸阅读

mihomo v1.18 规则引擎优化 · → TUN 模式 DNS 与规则联动