Clash 规则分流入门:规则类型、匹配顺序与写法示例

Clash 规则从上到下匹配,命中第一条就停止。本文介绍 DOMAIN-SUFFIX、GEOIP、RULE-SET、MATCH 等常用规则,给出基础写法、示例和排错方法,适合刚开始接触分流的用户。

NO.1本站首选

Sogo云

IPLC/IEPL 专线,60 个节点,官方称单节点峰值 2.5Gbps

  • IPLC/IEPL 专线
  • 60 个节点,官方称不限设备
  • ¥8.17/月起(小包年付版)
  • 月付 ¥25 含 150GB
优惠码 9 折sogo10000
查看 Sogo云 套餐

Clash 规则的核心只有一句话:规则从上到下匹配,排在前面的优先。规则决定每个请求走代理、直连还是拒绝。大多数用户直接使用机场订阅自带的规则就够了,只有在需要指定某个网站走某个节点时才要自己写。本文内容以 Mihomo 内核的官方文档为准,界面入口可能随版本变化,以你的软件当前界面为准。

规则的基本格式

一条规则由类型、匹配内容和目标三部分组成,先看懂这个格式。

格式是“类型,内容,目标”。目标可以是策略组的名称,也可以是 DIRECT(直连)或 REJECT(拒绝)。下面这段配置写了四条规则:谷歌相关域名走名为 PROXY 的策略组,局域网地址和中国 IP 直连,其余流量走 PROXY。

rules:
  - DOMAIN-SUFFIX,google.com,PROXY
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

策略组的名称要和配置文件里 proxy-groups 定义的一致。不同机场的策略组名称不同,比如“节点选择”“自动选择”,不要直接照抄 PROXY。

组成部分 含义 示例
类型 用什么方式匹配 DOMAIN-SUFFIX
内容 匹配什么 google.com
目标 匹配后去哪里 PROXY、DIRECT、REJECT

常用的规则类型

Mihomo 支持的规则类型很多,入门时掌握下面几种就够用了。

DOMAIN 匹配完整域名,DOMAIN-SUFFIX 匹配域名后缀,也包括它的子域名,所以最常用。DOMAIN-KEYWORD 匹配包含关键词的域名,范围较大,要小心误伤。GEOIP 和 GEOSITE 分别按 IP 归属和域名分类匹配。RULE-SET 用来引入一组规则,适合规则很多的情况。MATCH 放在最后,匹配所有剩余流量。

规则类型 作用 写法示例
DOMAIN 完整域名 DOMAIN,www.example.com,PROXY
DOMAIN-SUFFIX 域名后缀 DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-KEYWORD 域名关键词 DOMAIN-KEYWORD,example,PROXY
GEOSITE 域名分类 GEOSITE,cn,DIRECT
GEOIP IP 归属地 GEOIP,CN,DIRECT
IP-CIDR IP 地址段 IP-CIDR,10.0.0.0/8,DIRECT
RULE-SET 引入规则集合 RULE-SET,my-rules,PROXY
MATCH 匹配剩余全部流量 MATCH,PROXY

匹配顺序为什么重要

顺序写错是最常见的问题,规则本身没错,结果却不符合预期。

一个请求进来后,Clash 从第一条规则开始检查,命中后就按这条规则处理,后面的规则不再看。所以如果你把 MATCH,PROXY 放在中间,它下面的规则都不会生效。同样的道理,范围大的规则要放在范围小的规则下面。

例如你想让 ai.example.com 走美国节点,其他 example.com 走默认节点,就要把具体的规则写在前面。如果顺序反过来,请求会先命中 example.com,就不会走到美国节点了。

rules:
  - DOMAIN,ai.example.com,美国节点
  - DOMAIN-SUFFIX,example.com,节点选择
  - MATCH,节点选择

下面是一个推荐的顺序,可以作为自己写规则时的参考。

顺序 放什么规则 原因
第一 个别网站的特殊规则 优先生效
第二 拒绝广告等规则 需要时再加
第三 局域网直连规则 不影响本地设备
第四 中国域名和 IP 直连 国内网站不走代理
最后 MATCH 处理剩余流量

自己的规则放在哪里

不要直接修改订阅配置,否则更新订阅时可能被覆盖。

Clash Verge Rev 提供了配置增强功能,官方说明里写有 Merge 和 Script 两种方式,可以在不改动订阅的前提下增加规则。具体入口会随版本变化,以软件当前界面为准。使用前先备份配置。添加后要重新激活配置,再用日志确认规则是否生效。

如果你还没有导入订阅,先看 Clash 怎么导入订阅。如果想了解客户端和内核的关系,可以看 Clash、Mihomo、Clash Verge 是什么关系。

如果你买的是专属客户端品牌,订阅导入这一步就不适用。很多品牌不提供通用订阅,详情可以看 机场专属客户端是什么。购买前要先确认能否导入 Clash。

规则模式和其他模式

规则只在规则模式下生效,这一点也经常被忽略。

Clash Verge Rev 的官方术语说明里有三种模式。规则模式按规则分流,是日常使用的模式。全局模式让流量走手动选择的节点,直连模式让流量全部直连。如果你发现规则完全不起作用,先检查当前是不是规则模式。

模式 流量怎么走 什么时候用
规则 按规则分流 日常使用
全局 走手动选择的节点 临时排查问题
直连 全部直连 临时关闭代理

规则不生效怎么排查

遇到问题时不要急着改规则,先看请求实际命中了什么。

打开客户端的连接或日志页面,访问目标网站,看这个请求的域名和命中的规则。常见原因有这几种:域名写错,实际请求的是另一个域名;规则顺序不对,被前面的规则命中;策略组名称写错,配置报错;网站同时使用了多个域名,只写了其中一个。如果规则确认没问题,再换节点测试,这时候问题可能在节点上。

系统代理只对遵守代理设置的程序有效,有些程序需要开启 TUN 模式才能被接管,方法见 Clash TUN 模式怎么开。

现象 可能原因 处理方法
规则完全不起作用 不是规则模式 切换到规则模式
配置导入报错 策略组名称写错 核对名称
网站部分内容打不开 还有其他域名 从日志找出全部域名
下面的规则不生效 被前面的规则命中 调整顺序
程序不走代理 程序不遵守系统代理 考虑 TUN 模式

几个常见场景的写法

下面是几个实际场景,把网站和策略组换成你自己的就可以使用。

第一个场景是让一个网站走固定节点。例如你想让某个工作网站始终走日本节点,先确认配置里有名为“日本节点”的策略组,再把规则写在前面。第二个场景是让公司内网直连。把内网域名或地址段设置为 DIRECT。第三个场景是规则很多时,用 RULE-SET 引入规则集,这样配置更整洁。

rule-providers:
  my-rules:
    type: http
    behavior: domain
    url: "https://example.com/rules.yaml"
    interval: 86400

rules:
  - DOMAIN-SUFFIX,company.example,DIRECT
  - RULE-SET,my-rules,节点选择
  - MATCH,节点选择

上面的地址只是示例,要换成你信任的规则来源。使用别人的规则集前,要看清楚内容,因为规则决定了你的流量走向。

场景 规则写法 注意事项
网站走固定节点 DOMAIN-SUFFIX 加策略组 策略组名称要存在
公司内网直连 DOMAIN-SUFFIX 或 IP-CIDR 加 DIRECT 放在代理规则前面
规则数量很多 RULE-SET 确认规则来源可信
屏蔽某个域名 DOMAIN-SUFFIX 加 REJECT 可能影响网站功能

使用 IP 类规则时,Clash 可能需要先解析域名。no-resolve 表示不主动解析,常用于局域网这类规则。如果不了解具体影响,可以先按上面的示例使用。

总结

写 Clash 规则,记住“格式、顺序、验证”三件事。

先用订阅自带的规则,确实有需要时再添加。具体规则放前面,MATCH 放最后,改完看日志确认。规则类型和最新写法以 Mihomo 官方文档为准。

常见问题

关于这篇文章的主题,读者还常问这些问题。

Clash 规则是按什么顺序匹配的?

按从上到下的顺序匹配,排在前面的规则优先。所以具体的规则要放在前面,MATCH 放在最后。

机场订阅更新后,自己加的规则为什么没了?

订阅更新可能覆盖配置文件。不要直接改订阅内容,要用客户端提供的覆写或扩展功能添加规则,具体入口以软件当前界面为准。

专属客户端可以写 Clash 规则吗?

通常不行,专属客户端一般使用自己的分流方式。能否自定义规则要看软件本身的功能。

规则写好后网站还是打不开怎么办?

先看连接日志,确认这个请求命中了哪条规则,再判断是规则问题还是节点问题。

下一步

看完这篇,可以继续看对应的榜单和专题。