什么是 Clash 分流规则?

很多 Clash 新手在刚开始使用时,都会遇到同一个问题:开启全局代理后,访问百度、淘宝、哔哩哔哩等国内网站变得明显迟钝,视频加载卡顿,网页打开缓慢。根本原因在于,全局代理会让所有流量绕行海外服务器,来回延迟通常增加 100 ms 以上,国内直连本来只需几毫秒的请求反而变成了"绕地球一圈"。

Clash 分流规则(Split Routing Rules)正是解决这一问题的核心机制。通过精细配置规则,你可以让 Clash 自动判断每一个域名或 IP 的归属:访问国内网站走直连,访问境外网站走代理。规则配置到位后,无需频繁手动切换模式,国内国外网站同时流畅访问,体验接近原生。

本文从规则引擎原理讲起,涵盖各类规则语法、GEOIP CN 国内直连方案、Rule Provider 规则集进阶用法,以及可以直接复制使用的完整配置示例,适合有一定基础、希望实现精细分流的 Clash 用户深入阅读。

规则引擎工作原理

理解 Clash 如何匹配规则,是写好分流配置的前提。Clash 的规则引擎遵循以下工作流程:

规则匹配顺序:从上到下,首次命中即生效

Clash 对每一个新建连接请求,会按照配置文件中 rules: 字段里规则的书写顺序,逐条向下比对,一旦某条规则命中,立即执行该规则指定的策略(DIRECT / PROXY 代理组),不再继续向下比对。因此规则顺序至关重要:

  • 越精确的规则放越靠前:比如针对特定域名的 DOMAIN 规则应在通配后缀 DOMAIN-SUFFIX 之前
  • 兜底规则放最后MATCH,PROXYMATCH,DIRECT 放在规则列表末尾,匹配所有前面未命中的流量
  • 特殊放行在屏蔽之前:如果你要放行某个子域名但屏蔽父域名,放行规则必须在屏蔽规则之前

规则的组成结构

每条规则由三部分组成,以逗号分隔:

规则类型,匹配参数,目标策略

例如:

DOMAIN-SUFFIX,google.com,Proxy
GEOIP,CN,DIRECT
MATCH,Proxy

其中目标策略可以是内置策略名(DIRECTREJECT),也可以是你在 proxy-groups: 中定义的代理组名称(如 ProxyAuto 等)。

六大核心规则类型详解

Clash(Mihomo 核心)支持多种规则类型,以下是最常用的六类:

域名类规则

类型 说明 示例
DOMAIN 精确匹配完整域名 DOMAIN,www.google.com,Proxy
DOMAIN-SUFFIX 匹配域名及其所有子域名 DOMAIN-SUFFIX,google.com,Proxy
DOMAIN-KEYWORD 域名中包含关键词即匹配 DOMAIN-KEYWORD,google,Proxy

推荐使用 DOMAIN-SUFFIX:绝大多数场景下,DOMAIN-SUFFIX,google.com,Proxy 既能匹配 google.com 本身,又能匹配 mail.google.comaccounts.google.com 等所有子域名,不易遗漏。慎用 DOMAIN-KEYWORD,关键词过短容易误匹配不相关域名。

IP 类规则

类型 说明 示例
IP-CIDR 匹配指定 IPv4 网段 IP-CIDR,192.168.0.0/16,DIRECT
IP-CIDR6 匹配指定 IPv6 网段 IP-CIDR6,2001:db8::/32,DIRECT

IP 类规则通常用于局域网直连和特定 IP 段处理。需要注意的是,IP 类规则会触发 DNS 解析(将域名解析为 IP 后再比对),在域名规则已经命中的情况下不会再走 IP 规则,因此 IP 规则主要处理直接用 IP 地址访问的场景。

GEOIP 国家代码规则

GEOIP,CN,DIRECT 是实现国内直连的最关键规则之一。它的工作原理是:当 Clash 解析到目标 IP 后,查询内置的 GeoIP 数据库,判断该 IP 是否属于中国大陆(CN);若是,则直连;否则交由后续规则处理。

# Let all China mainland IPs connect directly
GEOIP,CN,DIRECT,no-resolve

建议加上 no-resolve 参数,表示跳过 DNS 解析直接用域名匹配——在域名规则未命中时才解析为 IP 再走 GEOIP 判断,减少不必要的 DNS 查询,降低延迟。

GEOIP 数据库需要定期更新:内置数据库可能滞后于最新的 IP 归属变化。建议在配置中启用 geodata-mode: true 并定期执行"更新 GEO 数据",部分客户端(如 Clash Verge Rev)支持自动更新。

MATCH 兜底规则

MATCH 规则必须放在所有规则的最后,它没有匹配参数,只有策略,含义是"以上所有规则均未命中的流量"。最常见的写法是:

# Catch-all: unmatched traffic goes to proxy
MATCH,Proxy

即:对所有未被前面规则覆盖的域名和 IP,统一走代理组 Proxy。这样即使遇到你没有手动配置过的境外网站,也能自动走代理,无需逐一添加规则。

国内直连精细配置实践

仅靠 GEOIP,CN,DIRECT 有时并不够精准——部分国内服务(如使用境外 CDN 分发的内容、双向 BGP 线路的国际化企业站)可能被误判为境外。以下是更完善的国内直连配置思路:

第一层:局域网和保留地址直连

# LAN and reserved addresses go direct
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,127.0.0.0/8,DIRECT,no-resolve

第二层:高频国内域名直连

将百度、阿里、腾讯、字节跳动等主要国内平台的一级域名通过 DOMAIN-SUFFIX 明确直连,比依赖 GEOIP 更快(域名规则不需要 DNS 解析):

DOMAIN-SUFFIX,baidu.com,DIRECT
DOMAIN-SUFFIX,qq.com,DIRECT
DOMAIN-SUFFIX,weixin.qq.com,DIRECT
DOMAIN-SUFFIX,taobao.com,DIRECT
DOMAIN-SUFFIX,tmall.com,DIRECT
DOMAIN-SUFFIX,jd.com,DIRECT
DOMAIN-SUFFIX,bilibili.com,DIRECT
DOMAIN-SUFFIX,zhihu.com,DIRECT
DOMAIN-SUFFIX,weibo.com,DIRECT
DOMAIN-SUFFIX,bytedance.com,DIRECT
DOMAIN-SUFFIX,douyin.com,DIRECT

第三层:GEOIP CN 兜底国内直连

GEOIP,CN,DIRECT,no-resolve

三层叠加后,绝大多数国内网站都能精准直连,既不浪费代理流量,又避免了速度损耗。

Rule Provider 规则集进阶配置

手动逐条书写规则效率低、维护困难。Clash(Mihomo)提供了 Rule Provider 机制,允许你从远程 URL 或本地文件加载规则集,大幅简化配置量,同时方便跟随社区更新保持规则库新鲜。

Rule Provider 的三种 behavior

behavior 内容格式 适用场景
domain 每行一个完整域名或带 +. 前缀的通配域名 域名黑白名单,性能最优
ipcidr 每行一个 CIDR 网段 IP 段直连 / 代理列表
classical 标准规则格式(TYPE,ARG,POLICY 去掉 POLICY) 混合规则类型的复杂场景

使用远程规则集

以使用社区维护的 blackmatrix7 规则集 为例,在配置文件中按以下结构声明:

rule-providers:
  # Direct list for China mainland domains
  ChinaDomain:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt"
    path: ./ruleset/ChinaDomain.txt
    interval: 86400     # Refresh every 24 hours

  # Proxy list for common proxy targets
  ProxyGFW:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.txt"
    path: ./ruleset/ProxyGFW.txt
    interval: 86400

然后在 rules: 段中使用 RULE-SET 引用它们:

rules:
  # LAN direct connect
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  # China domain set — direct
  - RULE-SET,ChinaDomain,DIRECT
  # Proxy target set — use proxy group
  - RULE-SET,ProxyGFW,Proxy
  # China IPs direct
  - GEOIP,CN,DIRECT,no-resolve
  # Catch-all
  - MATCH,Proxy

离线使用建议:将 path: 字段指向本地路径后,首次联网时 Clash 会自动下载并缓存到对应位置。之后即使暂时无法访问 GitHub,本地缓存仍可正常使用,不影响日常分流。

完整分流配置示例

以下是一份可以直接参考的 Clash YAML 分流配置骨架,覆盖代理组、规则集和规则三个核心部分:

# ── Proxy Groups ──────────────────────────────────────
proxy-groups:
  - name: "Proxy"
    type: select
    proxies:
      - Auto
      - HK-01
      - JP-01
      - US-01

  - name: "Auto"
    type: url-test
    url: "https://www.gstatic.com/generate_204"
    interval: 300
    proxies:
      - HK-01
      - JP-01
      - US-01

# ── Rule Providers ─────────────────────────────────────
rule-providers:
  ChinaDomain:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt"
    path: ./ruleset/ChinaDomain.txt
    interval: 86400

  ProxyGFW:
    type: http
    behavior: domain
    url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.txt"
    path: ./ruleset/ProxyGFW.txt
    interval: 86400

# ── Rules ──────────────────────────────────────────────
rules:
  # LAN and loopback 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

  # High-frequency China domains (faster than GeoIP)
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,qq.com,DIRECT
  - DOMAIN-SUFFIX,taobao.com,DIRECT
  - DOMAIN-SUFFIX,jd.com,DIRECT
  - DOMAIN-SUFFIX,bilibili.com,DIRECT
  - DOMAIN-SUFFIX,zhihu.com,DIRECT

  # China domain rule-set
  - RULE-SET,ChinaDomain,DIRECT

  # Proxy target rule-set
  - RULE-SET,ProxyGFW,Proxy

  # China IPs fallback
  - GEOIP,CN,DIRECT,no-resolve

  # Catch-all: unmatched traffic → proxy
  - MATCH,Proxy

实际使用时,将 HK-01JP-01US-01 替换为你机场订阅中对应的节点名称即可。

常见问题与排查技巧

问题 1:国内网站走了代理(规则未命中)

最常见原因是 DNS 解析结果为境外 CDN 的 IP,导致 GEOIP 判定为境外。解决方法:

  • 将该域名显式添加为 DOMAIN-SUFFIX,example.com,DIRECT,放在 GEOIP 规则之前
  • 配置 dns: enhanced-mode: fake-ip 并在 fake-ip-filter 中排除已知国内域名,避免将国内域名解析为境外 IP
  • 检查 Rule Provider 规则集是否已包含该域名,若未包含则手动添加

问题 2:境外网站走了直连(代理速度正常但页面打不开)

此情况说明 MATCH 规则前存在某条规则将该流量误判为直连。排查步骤:

  1. 在 Clash 客户端的"连接"(Connections)面板中找到目标请求,查看实际命中的规则
  2. 检查该域名是否被国内域名规则集误收录;若是,将该域名添加到代理规则的前面
  3. 确认配置文件中 MATCH 指向的是代理组而非 DIRECT

开启调试日志

在配置文件顶部加入 log-level: debug,Clash 会记录每条连接的规则匹配详情,方便定位规则冲突或遗漏:

log-level: debug  # Options: silent / error / warning / info / debug

查看日志后,记得将 log-level 改回 infowarning,debug 级别日志量较大,长期开启会影响性能。

分流效果好不好,客户端同样关键

即便规则写得再精细,如果客户端本身对规则引擎的支持不完整,或者 GUI 操作不便、Rule Provider 不能自动更新,分流体验依然会大打折扣。以一些常见的旧版客户端为例:

  • Clash for Windows(CFW):原作者已删库停更,最后版本停留在 2023 年,不支持 Mihomo 核心的新特性(如 behavior: domain 的高效索引结构),Rule Provider 性能明显落后于新版
  • ClashX(macOS):同样停止维护,无法使用 Hysteria 2、VLESS Reality 等新协议,规则集更新需要手动操作
  • 部分 Android 客户端:界面简陋,代理组切换不直观,TUN 模式设置隐藏较深,对新手不友好

反观目前社区活跃维护的客户端:

  • 可视化规则调试面板,连接详情实时展示每条请求命中的规则
  • Rule Provider 支持一键更新,也可设置自动定时刷新
  • 完整支持 Mihomo 核心所有特性,包括 Hysteria 2、VLESS Reality、TUN 模式
  • 界面对中文用户友好,代理组切换、延迟测速操作直观

如果你已经按照本文完成了分流规则配置,却发现实际效果仍不理想,不妨考虑更换一款持续维护的 Clash 客户端,往往能立竿见影地提升分流精准度与整体稳定性。本站提供各平台客户端的直接下载,无需访问 GitHub,点击下方按钮即可获取适合你平台的最新版本:

免费下载 Clash 客户端