本文适用于 Windows / macOS / Linux 上的 Clash Verge Rev,以及 FlClash、Clash Meta for Android 等使用 mihomo 内核的客户端。iOS 上的 Shadowrocket 思路相同,写法略有差别。
前提:你已经有一个机场的订阅链接,导入客户端后能正常连上。还没到这一步,先看第一次值机和 Clash Verge Rev 值机指南。
注意
Clash for Windows 已停止维护,不建议继续使用。本文以仍在维护的 Clash Verge Rev 为例,界面名称按 v2.5.6 核对。
分流规则在做什么
分流规则是一张从上往下读的清单。每条连接发出时,内核拿它的域名、IP、发起程序等信息逐条比对,命中第一条就按那一条处理,后面的不再看。
每条规则一般分三段,用英文逗号隔开:类型、内容、去向;兜底的 MATCH 没有内容,只有两段。常见的去向有三种:某个代理组(走节点)、DIRECT(不走代理)、REJECT(拒绝连接)。
rules:
- DOMAIN-SUFFIX,chatgpt.com,节点选择
- DOMAIN-SUFFIX,openai.com,节点选择
- DOMAIN-SUFFIX,oaistatic.com,节点选择
- DOMAIN-SUFFIX,oaiusercontent.com,节点选择
- DOMAIN-SUFFIX,claude.ai,节点选择
- DOMAIN-SUFFIX,anthropic.com,节点选择
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,节点选择
这几行的意思:前六行把 ChatGPT 和 Claude 用到的域名及其所有子域名送进同一个代理组;国内常见网站的域名列表直连;解析后 IP 在中国大陆的直连;前面都没命中的,全部走代理。代理组名称各家订阅不同,以你订阅里的为准。
AI 服务的域名要写全。ChatGPT 网页的主域名是 chatgpt.com,openai.com 主要是官网和接口,页面资源和上传的文件分别在 oaistatic.com、oaiusercontent.com;Claude 用 claude.ai 和 anthropic.com。只写 openai.com,其余域名会落到别的规则,同一个服务的流量可能从不同出口出去。
第一步:确认客户端处在规则模式
mihomo 有三种模式,只有规则模式下规则表才生效。
| 模式 | 行为 | 什么时候用 |
|---|---|---|
| 规则(rule) | 按规则表逐条匹配 | 日常默认 |
| 全局(global) | 全部走 GLOBAL 组里选中的节点 | 临时排查某个网站是不是被规则漏掉 |
| 直连(direct) | 全部不走代理 | 判断问题出在机场还是本地网络 |
Clash Verge Rev 在「代理」页顶部选「规则」。Shadowrocket 对应首页「全局路由」里的「配置」,日常保持这一项。
第二步:读懂订阅自带的规则
Clash 格式的机场订阅通常自带一套代理组和规则,不改也能用。在 Clash Verge Rev 的「订阅」页右键订阅,选「编辑文件」,rules: 段就是这张清单。这里只看不改,原因见第三步。
| 类型 | 匹配什么 | 例子 |
|---|---|---|
| DOMAIN | 完整域名 | DOMAIN,www.example.com |
| DOMAIN-SUFFIX | 域名及其所有子域名 | DOMAIN-SUFFIX,google.com 匹配 mail.google.com,不匹配 content-google.com |
| DOMAIN-KEYWORD | 域名里含某个词 | DOMAIN-KEYWORD,google |
| GEOSITE | 一组按服务或类别归类的域名 | GEOSITE,youtube |
| IP-CIDR | 一段 IP 地址 | IP-CIDR,192.168.0.0/16 |
| GEOIP | IP 所属国家或地区 | GEOIP,CN |
| PROCESS-NAME | 发起连接的程序名,Windows 上带 .exe,Android 上填包名 | PROCESS-NAME,curl |
| RULE-SET | 引用外部规则集,需配 rule-providers | RULE-SET,名称 |
| MATCH | 兜底,匹配所有连接 | MATCH |
表中例子都省略了末尾的去向,实际要写成 MATCH,节点选择 这样。
两条排序原则:具体的写前面,宽泛的写后面;MATCH 永远在最后,它后面的规则不会被执行。
IP 类规则(IP-CIDR、GEOIP)遇到域名请求时,会先做一次 DNS 解析再比对。规则末尾加 no-resolve,遇到域名请求就不解析,直接跳过这条规则。
第三步:加不会被冲掉的自定义规则
直接改订阅里的配置文件,下次更新订阅就被覆盖。Clash Verge Rev 提供了单独入口:在「订阅」页右键订阅,选「编辑规则」。
依次选「规则类型」、填「规则内容」、选「代理策略」,点「添加前置规则」或「添加后置规则」,最后保存。官方文档说明这里加的规则不会随订阅更新失效,并建议放前置,确保先于订阅规则生效。
后置规则排在订阅规则之后。订阅的最后一条通常是 MATCH,排在它后面的规则不会被执行,所以自定义规则一律加前置。
| 需求 | 规则 | 去向 |
|---|---|---|
| 公司内网域名直连 | DOMAIN-SUFFIX,corp.example.com | DIRECT |
| 局域网设备(NAS、路由器后台) | IP-CIDR,192.168.0.0/16,no-resolve | DIRECT |
| 某个国内网站被误代理 | DOMAIN-SUFFIX,该网站域名 | DIRECT |
| ChatGPT 固定走一个节点 | GEOSITE,openai(含 chatgpt.com、openai.com) | 手动选择的代理组 |
| Claude 固定走一个节点 | DOMAIN-SUFFIX,claude.ai、DOMAIN-SUFFIX,anthropic.com 两条 | 手动选择的代理组,两条选同一个 |
| 下载工具不走代理 | PROCESS-NAME,程序名 | DIRECT |
表里的规则按「类型,内容」写,填进编辑器时分开选、分开填。带 no-resolve 的,打开编辑器里的「跳过 DNS 解析」开关。example.com 是占位,换成你自己的域名。
提示
想让 ChatGPT、Netflix 固定从一个出口出去,把对应域名指向一个手动选择的代理组,在组里选定测通的节点,不要指向自动选择组。自动组按延迟换节点,出口 IP 跟着变,可能触发 IP 风控。
「代理策略」只能选代理组和 DIRECT、REJECT 等内置策略,不能直接选单个节点。订阅里没有合适的组,可以在同一个右键菜单的「编辑代理组」里新建。用途细节见用 ChatGPT 与 Claude和看 Netflix 与流媒体。
规则多、想在几个订阅间共用时,可以用扩展配置(右键菜单里叫「扩展覆写配置」,写 YAML)或扩展脚本(写 JavaScript),分全局和单个订阅两级。官方给的执行顺序是:全局扩展配置、全局扩展脚本、订阅扩展配置、订阅扩展脚本,后面的步骤可以改写前面的结果。
注意
在扩展配置里写 rules:,会把订阅原有的规则整段替换掉,不是追加。只想加几条,用「编辑规则」。
FlClash 和 Clash Meta for Android 用的是同一套 mihomo 规则语法,入口不同。FlClash 在订阅的「覆写」设置里可以逐条加规则。Clash Meta for Android 官方版的覆写设置里没有规则一项,要改规则只能自己写一份完整的配置文件导入。
Shadowrocket 的规则写在本地配置文件里(默认 default.conf)。在底部「配置」页进入当前配置文件的编辑页,在「规则」里添加。它的兜底规则叫 FINAL,作用和 MATCH 相同,新加的规则要排在它前面。
第四步:确认规则命中
改完规则,先在「连接」页关掉旧连接,或重启浏览器:已经建立的连接不会按新规则重新匹配。再访问目标网站,在「连接」页找到对应域名,看「规则」列命中哪一条,「链路」列走的是哪个代理组和节点,还是 DIRECT。
查出口地区时注意,IP 查询网站走的是它自己命中的规则,不一定和目标网站同一个出口。ChatGPT 可以直接看 chatgpt.com/cdn-cgi/trace 的 loc=。流媒体、AI 服务能否正常使用,按自己验证解锁与 IP 归属的步骤逐项核对。
排查
加了规则不生效
按顺序查:客户端是否处在规则模式;规则是不是加成了后置,排到了 MATCH 后面;前面是否有更宽泛的规则先命中(例如 DOMAIN-KEYWORD 或 GEOIP,CN);浏览器是否还在用改规则前建立的旧连接。
再看程序本身是否走了系统代理。部分程序不读系统代理,需要开 TUN 模式,规则才管得到它。
国内网站变慢,或被识别成海外访问
多半是没命中任何直连规则,被 MATCH 兜底送进了代理。在「连接」页找到它的域名,加一条去向为 DIRECT 的前置规则。
订阅更新后,自己加的规则没了
说明规则是直接写进订阅配置文件的。改用「编辑规则」入口重新添加。
分流会不会带来 DNS 泄漏
有可能。IP 类规则不加 no-resolve 时,内核会先在本地为域名做一次解析,这次查询发给哪台 DNS 服务器,取决于客户端的 DNS 设置。原理和检查方法见 DNS 泄漏。
更多客户端问题见候机问答。