Clash 规则分流配置实战:国内外分流场景的规则写法与匹配顺序
以国内外分流为目标,逐条讲解规则类型、匹配顺序与策略组搭配,附一段可直接套用的配置示例与分流结果验证方法。
分流目标:国内直连,国外走代理
Clash 的核心工作方式是基于规则的转发:每一个进入 Clash 的连接,都会带着目标地址去规则列表里逐条比对,命中哪条规则,就走那条规则指定的出口。所谓国内外分流,本质上是把「哪些流量直连、哪些流量走代理」翻译成一份顺序正确的规则列表。
规则的出口只有三类:DIRECT 表示直连,目标地址由本机网络直接访问;REJECT 表示直接拒绝,常用于拦截;第三类是代理节点或策略组的名字,表示交给代理通道转发。
国内外分流要达成的效果很具体:国内站点直连,延迟低、不占用节点流量;国外站点走代理出口;明确不想放行的请求直接拒绝。配好这件事只需要三样东西——一份覆盖国内外地址的规则、一个指向节点的策略组,以及正确的排列顺序。下面逐块拆开。
规则类型:每条规则在匹配什么
一条规则的写法是「类型,参数,出口」,三段用英文逗号分隔。类型决定这条规则拿什么去和请求比对,常见类型如下表。
| 规则类型 | 匹配对象 | 写法示例 | 说明 |
|---|---|---|---|
DOMAIN | 精确域名 | DOMAIN,example.com,PROXY | 只匹配该域名本身,不含子域名 |
DOMAIN-SUFFIX | 域名后缀 | DOMAIN-SUFFIX,example.com,PROXY | 匹配主域与全部子域,最常用的域名写法 |
DOMAIN-KEYWORD | 域名关键词 | DOMAIN-KEYWORD,example,PROXY | 域名包含该字符串即命中,误伤面大,慎用 |
GEOSITE | 域名分类集合 | GEOSITE,cn,DIRECT | 一条覆盖整类域名,需 mihomo 内核 |
IP-CIDR | 目标 IP 段 | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve | 按网段匹配,适合内网与固定地址段 |
GEOIP | 目标 IP 归属地 | GEOIP,CN,DIRECT | 查 IP 库判断国家地区,分流兜底用 |
DST-PORT | 目标端口 | DST-PORT,853,DIRECT | 按端口分流,适合单端口服务 |
PROCESS-NAME | 发起进程名 | PROCESS-NAME,chrome.exe,PROXY | 按进程分流,桌面平台可用 |
MATCH | 全部请求 | MATCH,PROXY | 规则列表末尾的兜底出口,必须放最后 |
选型的直觉很简单:能用域名后缀就不用关键词,能用 GEOSITE 分类就不用堆几百条 DOMAIN-SUFFIX,IP 类规则只放在域名规则之后做归属地兜底。DOMAIN-KEYWORD 最容易误伤,例如一个短关键词可能同时命中国内站点的子域,除非目标非常明确,否则不进国内外分流的主列表。
内核差异
GEOSITE 属于 Clash Meta / mihomo 内核能力,依赖对应 geodata 数据文件;原版 Clash 环境请改用 DOMAIN-SUFFIX、规则集或 GEOIP 组合。换内核前先看客户端关于页的内核名称,再决定规则写法。
匹配顺序:第一命中即停
Clash 按 rules 列表从上到下匹配,命中第一条就停止,后面的规则不再参与判断。因此顺序不是排版习惯,而是分流结果本身。国内外分流的稳定顺序是:本机与内网直连 → 明确要拒绝的目标 → 国内域名直连 → 国内 IP 直连 → 其余全部进代理。
- 先放行本机、局域网与保留地址段,避免路由器、NAS、打印机这类流量被送进代理。
- 再放精确的拦截规则,例如已知跟踪域名或不想放行的服务;拦截规则越靠前,越少触发后续解析。
- 然后放国内域名集合,
GEOSITE,cn一条顶一大批域名;没有 GEOSITE 的环境,用维护中的域名规则集替代。 - 接着放
GEOIP,CN,DIRECT,接住域名集合没覆盖到、但解析结果落在中国的目标。 - 最后只留一条
MATCH,PROXY。所有没有命中国内规则的请求,统一进入代理策略组。
no-resolve 只影响 IP 类规则:加上它,Clash 不会为了匹配这条规则而主动把域名解析成 IP。常见写法是内网网段一律带 no-resolve;GEOIP,CN 是否带 no-resolve 取决于你的域名规则覆盖率。域名集合足够全时,可写 GEOIP,CN,DIRECT,no-resolve 减少额外解析;域名集合偏旧时,保留解析能力更稳,但要配合正确的 DNS 走向,避免解析本身绕开代理通道。
顺序事故
把 MATCH,PROXY 误放到列表中段,会让它之后的国内直连规则全部失效;把 GEOIP,CN 放到 GEOSITE,cn 之前,会让大量本可按域名直连的请求先做一次 IP 归属判断。症状都是同一个:国内站点被送进节点,延迟和节点流量同时上升。
策略组搭配:出口只暴露一个名字
规则里不建议直接写死某个节点名,而是写策略组名。这样换节点、做测速、加备用出口时,规则列表不用动。国内外分流最少需要两个组:一个手动选择的 PROXY,一个自动测速的 AUTO。
| 策略组类型 | 行为 | 适用位置 |
|---|---|---|
select | 在客户端手动选择出口 | 主出口组,适合放最终决策 |
url-test | 按周期测速,自动切到延迟最低节点 | 嵌进 select 组,作为自动选项 |
fallback | 按顺序探测,故障时切到下一个可用节点 | 更看重可用性而不是最低延迟 |
load-balance | 按策略把连接分摊到多个节点 | 多线负载,不适合作为默认排错入口 |
推荐结构是 PROXY 为 select,候选里放 AUTO、若干节点和 DIRECT;AUTO 为 url-test,只放真正可用的代理节点。规则统一指向 PROXY,客户端里切到自动或手动节点都只改组内选择,不改规则。
可直接套用的配置示例
下面是一段最小可用骨架,重点看 proxy-groups 与 rules 的对应关系。节点是明显假值,只用于展示字段位置;订阅场景请把节点与组交给订阅转换或覆写机制维护,手改转换结果会在下次更新时被覆盖。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
proxies:
- name: "示例节点-勿用"
type: ss
server: node1.example.invalid
port: 443
cipher: aes-128-gcm
password: "demo-pass-000"
proxy-groups:
- name: PROXY
type: select
proxies:
- AUTO
- 示例节点-勿用
- DIRECT
- name: AUTO
type: url-test
proxies:
- 示例节点-勿用
url: http://example.invalid/generate_204
interval: 300
tolerance: 50
rules:
- DOMAIN-SUFFIX,localhost,DIRECT
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,169.254.0.0/16,DIRECT,no-resolve
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY
如果客户端使用订阅,优先查找「覆写 / Mixin / 配置补丁」入口,把上面 rules 的顺序思路套进订阅生成的规则之前或之后;不要直接编辑客户端每次更新都会重建的成品配置。需要拦截时,在 GEOSITE,cn 之前插入独立的 REJECT 规则或规则集,保持国内直连规则仍然连续。
判定标准
这份配置成功的标志不是「能上网」,而是连接面板里国内目标命中 GEOSITE,cn 或 GEOIP,CN 且出口为 DIRECT;国外目标只命中 MATCH,出口进入 PROXY 组内当前选中的节点。
分流结果验证方法
验证分三层做,顺序不要反。第一层看模式:客户端处于规则模式,系统代理或 TUN 已接管流量;浏览器插件代理、应用内代理会绕过 Clash,先排除。第二层看命中:打开客户端的连接或日志页,发起一次国内请求和一次国外请求,核对每条连接右侧显示的规则链与出口,而不是凭网页打开速度猜。第三层看命令行:用显式代理发请求,确认流量确实从 Clash 端口进入。
curl -x http://127.0.0.1:7890 -I https://你的目标域名/
命令行只证明请求进入了 Clash;分到哪边仍要回到连接面板看 rule 与 chains 字段。国内请求应显示直连链,国外请求应显示节点链。若国外请求显示 DIRECT,多半是有更靠前的 DOMAIN-SUFFIX 或关键词规则误命中;若国内请求进了节点,优先检查 MATCH 是否位置过前、GEOSITE 数据是否缺失、客户端是否实际运行原版内核。
开启 TUN 或增强 DNS 模式时,还要确认系统流量真的进入 Clash 虚拟网卡;否则规则写得再对,也只对手动设置代理的应用生效。排障时先关掉 TUN,用系统代理验证规则,再恢复 TUN,能把「规则问题」和「接管问题」分开。
高频错误清单
- 规则顺序倒置:把兜底规则放前面,后面所有精细规则失效;保存前只看
rules第一屏和最后一屏,能挡住大部分事故。 - 关键词误伤:
DOMAIN-KEYWORD命中面过宽,国内站点被带进代理;改成DOMAIN-SUFFIX或交给 GEOSITE 分类。 - 节点名写进规则:订阅更新后节点改名,规则直接落空;规则只引用策略组名。
- GEOIP 单独扛分流:只靠
GEOIP,CN会漏掉 CDN 与海外镜像,域名集合与 IP 归属要一起用。 - 手改订阅成品:更新后被覆盖,表现为配置「自己变回去」;改用覆写入口维护自定义段。
- 忽略 IPv6:本机有可用 IPv6 而配置关闭或漏配时,部分请求会走系统网络;要么在内核与系统侧一致开启并补 IP-CIDR6 规则,要么明确关闭。
把规则当作里程标来维护:每条只标一个去向,顺序只按从具体到兜底排列。国内直连、国外代理、异常可拦截,三件事各就各位,后续换节点、换客户端、加规则集都只是替换局部,不必重写整份配置。
下载 Clash 客户端
规则分流需要客户端先接管流量。到下载中心按平台选择客户端,再回到教程完成系统代理或 TUN 接管。