分流规则怎么写?让国内直连、国外走代理

先说结论

分流规则是一份自上而下逐条匹配、命中即停的清单,每条规则指定某类流量走直连、拒绝或某个策略组。实现国内直连、国外走代理,通常靠域名规则、地理位置规则和最后的兜底规则配合;自己加的规则要放在订阅规则之前。

分流规则怎么写?先给结论:它是一份自上而下逐条匹配、命中即停的清单,每条规则写明“某类流量交给谁”,交给直连、拒绝,或者交给某个策略组。让国内直连、国外走代理,通常靠三种东西配合:按域名匹配的规则、按地理位置匹配的规则,以及最后一条兜底。读懂顺序和类型,你就能看懂机场配置里的规则,也能自己加几条。

分流规则是什么:一张自上而下的匹配清单

开了代理以后,每个网络请求都要有一个去处。分流就是替每条连接决定去处:这个直接连,那个走节点,另一个干脆拒绝。词典里有简短的解释:分流和直连。

规则就是把“什么样的流量”和“去哪里”配成一对写下来,再排成一排。内核拿到一条连接,从第一条开始比对,命中就按那一条走,不再往下看。这套机制只在Clash 规则模式下起作用,全局模式和直连模式会绕过规则,这一点要先分清。

分流规则的价值在于:

  • 国内网站走本地宽带,不绕海外,也不消耗节点流量。
  • 国外网站按需走节点,不同类型的服务可以交给不同的策略组。
  • 局域网地址、内网服务不会被误送出去。
  • 广告或不想要的域名可以直接拒绝。

规则的基本写法和匹配顺序

在 Mihomo 系配置里,规则写在 rules 下,每条是一行逗号分隔的文本。基本格式是:类型、匹配内容、去向,有些规则末尾还可以跟附加选项。下面是只展示结构的示意,域名用占位,不是推荐:

rules:
  - DOMAIN,www.example.com,DIRECT
  - DOMAIN-SUFFIX,example.com,代理选择
  - DOMAIN-KEYWORD,example,代理选择
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - RULE-SET,my-rules,代理选择
  - MATCH,代理选择

这几行里藏着三条要记住的规则:

  1. 自上而下,命中即停。 请求访问 www.example.com 时,第一行就命中,直接走直连,后面第二行虽然也能匹配到它,但已经没机会了。
  2. 去向可以是三类东西。 DIRECT 是直连,REJECT 是拒绝,其余写策略组的名字,策略组的内容见策略组怎么用。
  3. MATCH 要放在最后。 它匹配一切,放在中间就会让它后面的规则全部失效。

策略组的名字必须和 proxy-groups 里的名字一字不差,包括空格和大小写,写错会导致配置加载失败或者规则不生效。完整的字段说明以 Mihomo 官方文档 为准。

常见规则类型怎么选

下表只列最常用的几类,类型的完整列表和新增类型以官方文档为准:

规则类型 匹配什么 适合的场景 注意事项
DOMAIN 完整域名,必须一模一样 只想管某一个具体地址 子域名不会命中
DOMAIN-SUFFIX 域名后缀,该域名及其所有子域名 最常用,管一个网站的全部地址 写成 example.com,不要带前面的点
DOMAIN-KEYWORD 域名里包含某个关键词 一类命名相似的域名 容易误伤,关键词别太短
IP-CIDR 一段 IP 地址 局域网、内网、已知的地址段 通常配合 no-resolve
GEOIP 目标 IP 所属的国家或地区 按地理位置粗分国内外,常作补充 依赖地理数据库,数据库过旧会有偏差
RULE-SET 引用一个规则集 批量的域名或地址 取决于规则集的内容和更新
MATCH 一切未命中的流量 作为最后一条兜底 必须放在最后

选择的思路是:能用 DOMAIN-SUFFIX 就不用 DOMAIN-KEYWORD,范围越精确,越不容易误伤。

GEOIP 要多说一句。判断国家需要目标 IP,而用户请求的往往是域名,所以内核可能要先解析一下域名。这会牵涉到 DNS 的行为,以及解析结果是否可信,这部分放在 Clash DNS 怎么设置 里讲,这里只要知道:把 GEOIP 放在偏后的位置,让域名规则先行,通常更稳妥。

怎么实现国内直连:两种分流思路

同样是让国内直连、国外走代理,有两种相反的设计思路,区别在最后那条 MATCH 指向哪里:

对比项 国内直连为主,其余走代理 国外代理为主,其余走直连
最后一条 MATCH 指向代理 指向直连
规则里列的是 国内域名和地址(直连) 需要代理的国外域名(走代理)
优点 新出现的国外网站默认就能打开,不容易漏 国内网站默认直连,几乎不会绕路
缺点 没收录的国内小站会被带去走代理,可能变慢 没收录的国外网站默认直连,可能打不开
常见于 多数机场下发的配置 手写的精简配置

如果你是:

  • 刚导入订阅、想直接用的人: 用订阅自带的规则,一般属于第一种。遇到个别国内站变慢,再往前加一条直连规则,见开了梯子国内网站变慢。
  • 想把国内体验做到干净的人: 可以考虑第二种,但要接受偶尔有国外站需要手动补规则。
  • 不确定的人: 先用第一种,因为“漏了一个国外站”比“多绕了一个国内站”更难察觉原因。

规则集是什么,什么时候用

自己一条条写域名不现实,国内常用的域名成千上万。规则集就是把这些规则存成一份清单,由客户端定时下载并引用。在配置里,它通常有两部分:一处定义规则集的来源,一处在规则里引用它。下面是示意,字段含义以官方文档为准:

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

rules:
  - RULE-SET,my-rules,DIRECT

用规则集要注意三件事:

  • 它决定的是走向,不是内容。 规则集不能读取你访问的页面,但维护者可以随时改动清单,影响分流结果。
  • 来源要可信。 优先用订阅或客户端已经带好的,不要随手引用来路不明的链接。
  • 有刷新周期。 清单不是实时的,新网站不在里面时,用你自己的规则补上。

这里不推荐任何具体的第三方规则集,需要的话去客户端自带的选项或官方文档里找。

怎么加自己的规则,又不被订阅更新覆盖

很多人踩过这个坑:直接打开订阅生成的配置文件,在里面加了规则,结果更新一次订阅就全没了。原因是更新订阅会用服务器返回的内容整体替换本地配置。

正确的思路是不改订阅本身,而是在它之外另存一份你的补充,由客户端每次更新后自动合并。很多 Clash 系客户端提供这类功能,名称有“覆写”“合并”“扩展配置”等,叫法和写法因客户端而异。部分客户端的合并配置支持类似下面的写法,字段名请以你的客户端文档为准:

prepend-rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - DOMAIN-SUFFIX,example.org,代理选择

操作步骤是:

  1. 在客户端里找到覆写或合并配置的入口,新建一份。
  2. 把你的规则写进去,并且放在订阅规则的前面。因为订阅通常以 MATCH 收尾,如果你的规则追加在最后,永远轮不到它。
  3. 保存并启用,然后更新一次订阅。
  4. 到连接页面核对规则是否生效。

不同客户端的入口和写法,可以看Clash Party 使用教程里关于覆写的部分。订阅的基本用法见订阅链接怎么用。

怎么确认分流规则已经生效,写错了怎么查

写完规则不要凭感觉判断,用下面的步骤核对:

  1. 确认模式是规则模式。 全局和直连模式不看规则。
  2. 访问一个被你规则覆盖的网站。 打开客户端的连接页面,找到它的连接。
  3. 看命中的规则和出口。 连接记录里一般会显示命中了哪条规则,以及最终走的是直连还是哪个节点。命中的就是你写的那条,说明生效。
  4. 没命中就看顺序。 如果命中的是更靠前的另一条,说明有更宽的规则抢先了,把你的规则往前挪。
  5. 断开旧连接再试。 已有的长连接不会因为改了规则立刻重建。

常见的写错点和修法:

问题 表现 修法
策略组名字写错 配置加载失败,或规则不生效 和 proxy-groups 里的名字逐字核对
宽规则放在窄规则前面 窄规则永远命中不了 调换顺序,窄的在上
MATCH 放在中间 它后面的规则全部失效 把 MATCH 移到最后
域名带了多余字符 规则不命中 DOMAIN-SUFFIX 写 example.com,不加前面的点和空格
直接改订阅配置 更新后规则消失 改用覆写或合并
GEOIP 位置太靠前 个别域名被误判 让域名规则先于 GEOIP

下一步:先看懂现成的,再加你自己的

  1. 先打开客户端,找到现在使用的规则,从上到下读一遍,对照上面的类型表,能认出每一条的意思。
  2. 遇到国内网站慢或个别网站走错,用连接页面定位,然后加一条前置规则,排查思路见开了梯子国内网站变慢。
  3. 想让某类服务固定走某个节点,去建一个策略组再引用它,见策略组怎么用。
  4. 还没有订阅,先到梯子推荐筛选候选,再用下载中心挑一个支持覆写的 Clash 系客户端。

这篇没有覆盖的

  • 规则字段的完整写法和新增类型以 Mihomo 官方文档为准,本文只讲常用部分。
  • 各客户端的覆写或合并功能的写法不同,本文只讲思路,具体字段以客户端文档为准。
  • 本文不推荐任何具体的第三方规则集,也不判断某个网站应该走哪条线路。

资料里明确写了支持 Clash 的机场

把 Clash 写进“客户端支持”的品牌目前很少。没写不等于不能用,多数机场都提供 Clash 格式订阅,只是资料里没有可核对的说明。

推荐名次机场推荐档资料里的价格线路
1无忧链接首推合¥6/月 · 40GB/月(按年付费)IPLC
7隐形人优先考虑年付¥109(约¥9.08/月) · 80GB(按年付费)纯专线

查看梯子下载与客户端对照

本文引用的官方来源

  1. Mihomo(Clash Meta)文档(wiki.metacubex.one)

以上链接均为官方页面,选梯子在 2026-10-08 核对过;个别网站会拦截自动化访问,用浏览器直接打开即可。平台规则可能随时调整,以官方页面当前内容为准。

分流规则常见问题

分流规则是从上往下匹配还是从下往上?

从上往下。内核按顺序逐条检查,命中的第一条规则就决定这条连接的去向,后面的规则不再看。所以范围小、需要优先的规则要放在上面,范围大的放在下面,最后一条用兜底规则收尾。

国内网站走了代理变慢,怎么加一条规则让它直连?

先在客户端的连接页面确认这个网站的域名,再加一条按域名后缀匹配、指向直连的规则,放在配置规则的靠前位置。注意要放在会误命中它的那条规则之前,否则不会生效。加完后重新访问,到连接页面核对命中情况。

规则集和自己写规则有什么区别?

规则集是别人维护好的一批规则,客户端定时下载并引用,一条引用就能覆盖成千上万个域名或地址。自己写的规则适合少量、临时的调整。两者可以配合:大批量的交给规则集,个人例外写在自己的规则里并放到前面。

订阅更新之后,我手动加的规则没了,怎么办?

因为更新订阅会用服务器返回的内容覆盖本地配置,直接改配置文件的内容会丢。正确做法是使用客户端的覆写或合并功能,把你的规则单独保存,每次更新订阅后由客户端自动合并进去。具体写法看你所用客户端的文档。

GEOIP 规则里的 no-resolve 是什么意思?

对基于 IP 的规则,如果请求的是域名,内核默认可能会先解析出 IP 再判断。no-resolve 表示不要为此去解析域名,只匹配已经是 IP 的请求。常用于局域网地址规则,可以减少多余的 DNS 查询。具体行为以官方文档为准。

接着读

文中出现的术语

还没定下来买哪家?

机场推荐榜把 28 家机场的价格、流量、线路和资料来源放在了一起;想省事可以用选梯子向导按用途筛一遍,或者直接看便宜机场、性价比机场和专线机场。