跳到正文
2026 年 10 月 19 日 星期一 · 农历九月初十34 家机场 · 核稿日 10 月 12 日一翻云新账号码 1FLYYUN广告启事版序
报眼一翻云¥20/月码 1FLYYUN下转 →

规则版mihomoWindowsmacOSLinux安卓

Clash 规则怎么写:从上往下匹配,域名、IP、规则集三类够用

2026 年 10 月 17 日写 · 10 月 17 日更新 · 约 4 分钟读完

消息头一条 Clash 规则写成「类型,匹配内容,策略」三段,mihomo 从列表顶端逐条比对、命中即停,所以越具体的规则越要往前放,末尾用 MATCH 兜底。

分步

  1. 先确定要分流的对象是域名、IP 段还是某个程序,选对应的规则类型。
  2. 按 类型,内容,策略 的格式写一行,策略填 DIRECT、REJECT 或订阅里某个代理组的名字。
  3. IP 类规则不需要为域名做解析时,在行尾加上 no-resolve。
  4. 成批的域名或 IP 段改用 rule-providers 引入规则集,再用 RULE-SET 引用。
  5. 在 Clash Verge Rev 里右键订阅卡片选 编辑规则,把自定义规则加为前置规则;保存后到「连接」页看这条连接命中的是哪条规则。

 自定义规则写进 Clash Verge Rev 的「编辑规则」、Clash Party 的「覆写」或 FlClash 的「扩展」才能长期保留,直接改订阅文件的话,改动会在下次自动更新时被整份覆盖。

一条规则由三段组成

Clash Verge Rev、Clash Party、FlClash、Clash Meta for Android 用的都是 mihomo 内核,规则语法是同一套。配置文件的 rules 下面每一行就是一条规则:

rules:
  - DOMAIN-SUFFIX,github.com,节点选择
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,节点选择

逗号隔开的三段分别是:规则类型、匹配内容、命中后交给谁处理(策略)。策略有三种写法:

  • DIRECT:不经过代理,从本机网络直接出去。
  • REJECT:拒绝这个连接,常用来挡广告和跟踪域名。
  • 代理组名:订阅里 proxy-groups 下某个组的 name,比如「节点选择」「自动选择」,流量交给这个组当前选中的节点。代理组是什么见代理组。

有些类型还能在末尾跟一个附加参数,常见的是 no-resolve,后面讲。

顺序:从上往下,命中即停

mihomo 拿到一个连接,会从 rules 的头一行开始逐条比对,碰到能匹配的那条就按它的策略处理,后面的规则不再看。由此有三条写法上的习惯:

  1. 具体的放前面,宽泛的放后面。 想让 api.example.com 直连、example.com 其余子域名走代理,DOMAIN 那条就得写在 DOMAIN-SUFFIX 那条之前。
  2. 域名类放在 IP 类前面。 IP 类规则可能触发 DNS 解析,先用域名规则把能判断的连接处理掉,解析次数少,速度也快。
  3. MATCH 只放在末尾。 它不带条件、匹配一切,放在中间会把后面的规则全部架空。

mihomo 文档还提到一个细节:如果是 UDP 请求,而命中规则指向的节点不支持 UDP,会继续往下匹配。

域名类:四种写法的匹配范围

类型 写法示例 匹配什么
DOMAIN DOMAIN,api.example.com,DIRECT 只匹配这一个完整域名
DOMAIN-SUFFIX DOMAIN-SUFFIX,example.com,节点选择 example.com 本身和它所有的子域名
DOMAIN-KEYWORD DOMAIN-KEYWORD,example,节点选择 域名里出现这个词就算
GEOSITE GEOSITE,cn,DIRECT 预先整理好的一类域名,数据来自 v2fly 的 domain-list-community

DOMAIN-SUFFIX 是按「点」分段比的,DOMAIN-SUFFIX,google.com 能匹配 www.google.com 和 google.com,但不会误伤 content-google.com。DOMAIN-KEYWORD 则只看字符串里有没有这个词,范围大,容易匹配到不相干的域名,能用 SUFFIX 就别用 KEYWORD。需要通配或正则时,mihomo 另外提供 DOMAIN-WILDCARD 和 DOMAIN-REGEX。

GEOSITE 后面填的是分类名,如 cn、youtube、category-ads-all,具体有哪些分类可以到 domain-list-community 仓库的 data 目录里查。

IP 类:IP-CIDR、GEOIP 和 no-resolve

  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR6,fc00::/7,DIRECT,no-resolve
  - GEOIP,CN,DIRECT

IP-CIDR 匹配一个地址段,常用来让局域网、公司内网直连;GEOIP 按 IP 所属国家或地区判断,GEOIP,CN,DIRECT 是绝大多数订阅里都有的一行。

关键在 no-resolve。一个访问域名的请求走到 IP 类规则时,mihomo 要先把域名解析成 IP 才能比对,这一步会额外发起 DNS 查询。加上 no-resolve,这条规则就只对本来就是 IP 的连接生效,域名请求直接跳过它往下走。局域网段、内网段这类规则几乎都应该加;GEOIP,CN 要不要加,取决于你是否希望「解析后落在国内 IP 的域名」也被它判为直连:不加就会解析后再判断,加了就只管纯 IP 连接。

按程序、按端口

  - PROCESS-NAME,Telegram.exe,节点选择
  - PROCESS-NAME,com.example.app,DIRECT
  - DST-PORT,22,DIRECT

PROCESS-NAME 在 Windows 上写 exe 文件名,macOS、Linux 上写进程名,安卓上写应用包名。它依赖内核能查到是哪个进程发起的连接:Clash Party 的内核设置和 FlClash 的设置里都有「查找进程」一项,关掉时这类规则不会生效。DST-PORT 按目标端口匹配,例如让 SSH 的 22 端口一律直连。

更复杂的条件可以用 AND、OR、NOT 组合,例如 AND,((DOMAIN-SUFFIX,example.com),(NETWORK,UDP)),REJECT 只拦截这个域名的 UDP 流量,注意括号要成对。

规则集:rule-providers 加 RULE-SET

成百上千个域名不可能一条条写。rule-providers 让 mihomo 从网上定时下载一份规则集,rules 里只用一行 RULE-SET 引用。下面接的是 Loyalsoldier/clash-rules,它的 README 列出的兼容客户端里包括 Clash Verge Rev、Clash Party 和 Clash Meta for Android:

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
  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400
  cncidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,direct,DIRECT
  - RULE-SET,cncidr,DIRECT,no-resolve
  - MATCH,节点选择

几个字段的含义:

  • type:http 表示从 url 下载,file 表示读本地文件,inline 表示规则直接写在 payload 里。
  • behavior:规则集内容的类型,domain、ipcidr 或 classical,填错了规则集会读不出来。
  • format:yaml、text 或 mrs,不写默认 yaml。mrs 是 mihomo 的二进制格式,体积小,但只支持 domain 和 ipcidr 两种 behavior。
  • interval:多少秒重新下载一次,86400 就是一天。

Loyalsoldier 的 README 给了两种组合:白名单模式(没命中任何规则集的流量走代理,适合大多数人)和黑名单模式(只有 gfw、tld-not-cn 这类列表里的域名走代理,其余直连)。上面的例子按白名单思路写,完整的规则集清单以它的 README 为准。

写在哪,订阅更新时才不会丢

三款客户端存放自定义规则的位置如下:

客户端 写在哪 要注意
Clash Verge Rev 订阅卡片右键「编辑规则」,填好类型、内容和策略后加为前置或后置规则 前置规则排在订阅规则之前,自定义规则一般放这里;规则类型下拉里有 RULE-SET
Clash Verge Rev 右键「扩展覆写配置」写 rule-providers 扩展覆写里写 rules 会把整个列表替换掉,规则本身还是放进「编辑规则」
Clash Party 「覆写」页新建 YAML,用 +rules: 插到原规则前面,rules+: 追加到后面 覆写要在订阅的「编辑信息」里选中,或者给这份覆写打开「全局启用」,才会生效
FlClash 配置卡片菜单 →「扩展」→ 添加规则 附加规则是在订阅基础上追加的,自动更新不影响它

改完以后,到客户端的「连接」页看看目标网站的连接,规则一栏会写出它命中的是哪一条。和预期不一致,多半是前面有一条更宽泛的规则先把它截走了。

规则之外,还要一条订阅

规则只决定流量往哪走,节点得从订阅里来。没有订阅的话,一翻云的轻享版每月 ¥20、流量 150GB(信源:一翻云价目页,10 月 9 日),订阅地址要付款后向客服领,注册时不会自动给;新账号下单填 1FLYYUN 可以打 9 折。它的订阅自带分组和规则,在此基础上加自己的前置规则就行。其他机场的订阅格式和给法,见机场总表。

想看规则配合节点选择怎么用,接下来可以读 Clash Verge 节点怎么选;TUN 模式下规则同样生效,开法见 Clash Verge TUN 模式怎么开。

文中提到的机场

1

一翻云

报眼

轻享版 ¥20/月 150GB,7 月 12 日自己测过

起步价
¥20/月每月 150GB
订阅
找客服要
优惠码
1FLYYUN

编读往来

规则里的策略名写错了会怎样?
mihomo 加载配置时找不到这个代理组,会直接报错,整份配置都不生效。策略名要和 proxy-groups 里的 name 一字不差,空格、表情符号都算在内;拿不准时从客户端的代理页把组名复制过来。
no-resolve 什么时候该加?
加在 IP-CIDR、GEOIP 这类按目标 IP 判断的规则后面。不加的话,域名请求走到这一条时会先触发一次 DNS 解析再比对 IP;加了就跳过解析,只有本来就是 IP 的连接才会被它匹配。前面的规则已经触发过解析时,带 no-resolve 的规则照样会用上解析结果。
规则集的 behavior 应该填 domain、ipcidr 还是 classical?
看规则集文件里装的是什么:纯域名列表填 domain,纯 IP 段填 ipcidr,每一行都自带规则类型(比如 DOMAIN-SUFFIX 和 PROCESS-NAME 混在一起)的填 classical。规则集的说明页一般会写明,照着填即可。