规则配置
规则路由是 Clash 最核心的能力:它决定每一条流量走直连、拒绝,还是经过某个代理节点。理解规则配置,是把 Clash 用得顺手的关键。
规则是什么
Clash 的配置里有一个 rules 数组,流量进来后从上到下逐条匹配,命中第一条就执行对应动作,后面的规则不再生效。因此顺序很重要——越是精确、越是高频的规则,越应该放在前面。
每条规则由「类型 + 值 + 动作」三部分组成,例如:
rules:
- DOMAIN-SUFFIX,google.com,代理组名
- GEOIP,CN,DIRECT
- MATCH,代理组名
常见规则类型
| 类型 | 匹配对象 | 典型用途 |
|---|---|---|
DOMAIN |
完整域名 | 精确指定单个站点 |
DOMAIN-SUFFIX |
域名后缀 | 匹配某域名及其子域 |
DOMAIN-KEYWORD |
域名关键词 | 批量匹配含某词的域名 |
IP-CIDR / IP-CIDR6 |
IP 段 | 指定网段走特定出口 |
GEOIP / GEOIP-CN |
国家 IP | 国内 IP 直连、海外走代理 |
PROCESS-NAME |
进程名 | 按应用软件分流 |
RULE-SET / DOMAIN-SET |
外部规则集 | 引用远程大列表 |
动作怎么选
规则最后的动作通常是三种之一:
- DIRECT:直连,不经过任何代理,适合国内站点与局域网。
- REJECT:拒绝连接,常用于屏蔽广告、追踪与恶意域名。
- 代理组名:把流量交给某个代理组,由代理组决定具体节点。
配置里一般会先放一批国内直连规则(GEOIP,CN,DIRECT、国内域名后缀等),再放广告屏蔽规则,最后用 MATCH,代理组名 兜底,把剩下所有流量送进代理。
规则集与外部列表
把成千上万条规则直接写在配置文件里既臃肿又难维护。Clash 支持 rule-providers(旧称 rule-set),可以从远程加载 yaml 或 mrs 格式的规则集:
rule-providers:
reject:
type: http
behavior: domain
url: https://example.com/reject.yaml
interval: 86400
然后在 rules 里用 RULE-SET,reject,REJECT 引用即可。这样规则来源可以独立更新,配置本体保持清爽。
实操建议
- 测准再上线:修改规则后,用
https://ip.skk.moe或https.com这类测速站确认分流是否符合预期。 - 避免过宽:
DOMAIN-KEYWORD命中范围大,容易误伤,能写精确后缀就别用关键词。 - 善用 GEOIP-CN:把国内流量直连,既能提速也能减少代理节点负担。
- 预留兜底:务必保留一条
MATCH规则,否则未匹配的流量行为不可预期。
规则配置没有标准答案,结合自己的常用站点与节点情况逐步调优,才是最优解。