Clash 规则详解:分流规则写法、全部规则类型与匹配顺序
Clash 中文网编辑部 · 更新于 2026/10/22
Clash 的 rules 决定每个连接走哪个代理组。规则格式为 类型,匹配内容,策略[,参数],从上到下逐条匹配,命中第一条即停止。 因此具体的规则要写在前面,MATCH 兜底规则必须写在最后。
规则格式
rules:
- DOMAIN-SUFFIX,google.com,节点选择
- GEOIP,CN,DIRECT,no-resolve
- MATCH,节点选择
| 部分 | 说明 | 示例 |
|---|---|---|
| 类型 | 按什么条件匹配 | DOMAIN-SUFFIX |
| 匹配内容 | 域名、IP 段、进程名等 | google.com |
| 策略 | 命中后交给谁 | 代理组名、节点名、DIRECT、REJECT |
| 参数(可选) | 附加选项 | no-resolve、src |
匹配顺序:从上到下,命中即停
这是理解规则最重要的一点。看这个例子:
rules:
- GEOSITE,cn,DIRECT
- DOMAIN-SUFFIX,baidu.com,节点选择
- MATCH,节点选择
访问 baidu.com 时,第一条 GEOSITE,cn 已经命中(百度属于 cn 分类),直接走 DIRECT,第二条永远不会生效。想让百度走代理,必须把第二条移到第一条前面。
所以:
- 越具体的规则越靠前(单个域名 > 某类网站 > 某个国家 > 兜底);
- 自定义规则一般放在最前面(客户端的“前置规则”就是这个意思);
- MATCH 永远放在最后,它之后的规则都不会被匹配。
内置策略
| 策略 | 效果 |
|---|---|
DIRECT |
直接连接,不走代理 |
REJECT |
拒绝连接(立即返回失败),常用于广告拦截 |
REJECT-DROP |
静默丢弃,不返回任何响应 |
PASS |
跳过这条规则,继续匹配下一条 |
域名类规则
| 类型 | 示例 | 匹配范围 |
|---|---|---|
| DOMAIN | DOMAIN,www.google.com,节点选择 |
仅 www.google.com |
| DOMAIN-SUFFIX | DOMAIN-SUFFIX,google.com,节点选择 |
google.com 及所有子域名 |
| DOMAIN-KEYWORD | DOMAIN-KEYWORD,google,节点选择 |
包含 google 的所有域名 |
| DOMAIN-REGEX | DOMAIN-REGEX,^ad\d+\.example\.com$,REJECT |
正则匹配 |
| DOMAIN-WILDCARD | DOMAIN-WILDCARD,*.example.*,DIRECT |
通配符,支持 * 和 ? |
| GEOSITE | GEOSITE,youtube,节点选择 |
域名数据库中的分类,见 GeoSite |
DOMAIN-SUFFIX 的边界
DOMAIN-SUFFIX,google.com 匹配 google.com、www.google.com、mail.google.com,但不匹配 notgoogle.com——它按“点”分隔的完整后缀匹配,不是字符串结尾匹配。
DOMAIN-KEYWORD 要慎用
DOMAIN-KEYWORD,google 会匹配 google.com,也会匹配 googleapis.cn、mygoogle-shop.com 等,容易误伤。能用 DOMAIN-SUFFIX 就不用 KEYWORD。
IP 类规则
| 类型 | 示例 | 说明 |
|---|---|---|
| IP-CIDR | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve |
IPv4 段 |
| IP-CIDR6 | IP-CIDR6,fd00::/8,DIRECT,no-resolve |
IPv6 段 |
| IP-SUFFIX | IP-SUFFIX,8.8.8.8/24,DIRECT |
按 IP 后缀位匹配 |
| GEOIP | GEOIP,CN,DIRECT |
IP 所属国家 |
| IP-ASN | IP-ASN,13335,节点选择 |
IP 所属自治域(如 Cloudflare 为 13335) |
| SRC-IP-CIDR | SRC-IP-CIDR,192.168.1.50/32,DIRECT |
按来源设备匹配(局域网共享时有用) |
| SRC-GEOIP / SRC-IP-ASN | SRC-GEOIP,CN,DIRECT |
按来源 IP 的国家 / ASN |
no-resolve 的作用
当请求的目标是域名时,IP 类规则需要先做 DNS 解析,才能知道这个域名对应的 IP 是否在范围内。这带来两个问题:
- 多一次 DNS 查询,变慢;
- 如果解析发给了本地 DNS,可能造成 DNS 泄漏。
加上 no-resolve 表示:遇到域名请求时,直接跳过这条规则,不去解析;只有目标本身就是 IP 时才匹配。建议 IP 类规则一律加上 no-resolve,尤其是放在域名规则之前的。
端口、进程与网络类型
| 类型 | 示例 | 说明 |
|---|---|---|
| DST-PORT | DST-PORT,22,DIRECT |
目标端口,支持范围 6000-7000 |
| SRC-PORT | SRC-PORT,7777,DIRECT |
来源端口 |
| IN-PORT | IN-PORT,7891,DIRECT |
从哪个入站端口进入 |
| IN-TYPE | IN-TYPE,SOCKS5,DIRECT |
入站类型(HTTP、SOCKS、TUN 等) |
| PROCESS-NAME | PROCESS-NAME,steam.exe,DIRECT |
按程序名;安卓上可匹配包名 |
| PROCESS-PATH | PROCESS-PATH,/usr/bin/curl,节点选择 |
按程序完整路径 |
| PROCESS-NAME-REGEX | PROCESS-NAME-REGEX,(?i)telegram.*,节点选择 |
正则匹配程序名 |
| NETWORK | NETWORK,udp,DIRECT |
TCP 或 UDP |
| UID | UID,1000,DIRECT |
Linux 用户 ID |
进程规则的注意事项
- 需要内核能识别连接所属进程:
find-process-mode不能为off; - TUN 模式下识别最完整;系统代理模式下部分连接无法识别;
- Windows 写
xxx.exe完整文件名;macOS 写进程名(如Telegram);安卓写包名(如org.telegram.messenger); - 准确的进程名可以在客户端连接页的「进程」列查看。
规则集与逻辑规则
RULE-SET
rules:
- RULE-SET,reject,REJECT
- RULE-SET,cn-ip,DIRECT,no-resolve
引用 rule-providers 中定义的规则集合,适合大量规则。写法见 规则集合教程。
AND / OR / NOT
逻辑规则可以组合多个条件:
rules:
# 同时满足:UDP 且目标端口 443 → 拦截(阻止 QUIC,让 YouTube 走 TCP)
- AND,((NETWORK,udp),(DST-PORT,443)),REJECT
# 满足其一:目标端口 80 或 443 → 代理
- OR,((DST-PORT,80),(DST-PORT,443)),节点选择
# 取反:不是中国 IP → 代理
- NOT,((GEOIP,CN)),节点选择
注意括号:整个条件列表外层一对括号,每个条件再各一对括号。
SUB-RULE(子规则)
子规则可以把一组规则“打包”,满足条件时进入子规则继续匹配:
sub-rules:
game-rules:
- DST-PORT,3074,游戏节点
- NETWORK,udp,游戏节点
- MATCH,DIRECT
rules:
- SUB-RULE,(PROCESS-NAME,game.exe),game-rules
- MATCH,节点选择
当连接来自 game.exe 时,进入 game-rules 继续匹配。适合为特定程序设置一整套独立规则。
MATCH
- MATCH,节点选择
匹配所有剩余流量,必须放在最后。
一份推荐的规则顺序
rules:
# 1. 局域网与私有地址直连
- GEOSITE,private,DIRECT
- GEOIP,private,DIRECT,no-resolve
# 2. 广告拦截
- GEOSITE,category-ads-all,REJECT
# 3. 你自己的特殊需求(最具体的放前面)
- DOMAIN-SUFFIX,corp.example.com,DIRECT
- PROCESS-NAME,qbittorrent.exe,DIRECT
- GEOSITE,openai,AI 服务
# 4. 特定服务
- GEOSITE,telegram,节点选择
- GEOSITE,youtube,流媒体
# 5. 国内直连
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT,no-resolve
# 6. 其余走代理
- MATCH,节点选择
在客户端中添加规则
订阅中的规则会在更新时被覆盖,自定义规则应通过客户端的覆写功能添加:
| 客户端 | 方法 |
|---|---|
| Clash Verge Rev | 编辑规则(前置规则) |
| FlClash | 进阶配置 → 附加规则 |
| Clash Party | 订阅右键「编辑规则」或 覆写(+rules) |
| Clash Nyanpasu | 配置转换 |
| 自己维护配置 | 直接写在 rules 中 |
想查看某个网站命中了哪条规则,可以用 Clash Verge Rev 的 连接页。
常见错误
| 错误 | 后果 | 解决 |
|---|---|---|
| 规则放在 MATCH 之后 | 永远不会匹配 | 移到 MATCH 之前,或用前置规则 |
| 被更前面的规则先匹配 | 规则不生效 | 调整顺序 |
| 策略名称不一致(emoji、空格、全半角) | 内核报错或加载失败 | 从代理页复制准确的组名 |
| IP 规则不加 no-resolve | 多余的 DNS 查询、可能泄漏 | 加上 no-resolve |
| 滥用 DOMAIN-KEYWORD | 误伤其他网站 | 改用 DOMAIN-SUFFIX |
| 英文逗号写成中文逗号 | 规则无法解析 | 使用英文逗号 |
相关教程
常见问题
规则是怎么匹配的?
从上到下逐条匹配,命中第一条后立即停止,所以越具体的规则应该放得越靠前,MATCH 必须放在最后。
规则的策略可以填什么?
代理组名称、节点名称,或内置策略 DIRECT(直连)、REJECT(拦截)、REJECT-DROP(静默丢弃)、PASS(跳过此条继续匹配)。
DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 有什么区别?
DOMAIN-SUFFIX,google.com 匹配 google.com 及其所有子域名;DOMAIN-KEYWORD,google 匹配任何包含 google 的域名,范围更大、更容易误伤。
规则太多会变慢吗?
少量的 DOMAIN-SUFFIX 规则几乎没有影响;上万条规则建议使用 RULE-SET(尤其是 mrs 格式)或 GEOSITE,它们使用高效的数据结构匹配。
为什么我加的规则不生效?
最常见的原因是被更前面的规则先匹配了,或者策略名称与代理组名不完全一致。在客户端的连接页查看该连接实际命中的规则即可定位。