什么是 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,PROXY或MATCH,DIRECT放在规则列表末尾,匹配所有前面未命中的流量 - 特殊放行在屏蔽之前:如果你要放行某个子域名但屏蔽父域名,放行规则必须在屏蔽规则之前
规则的组成结构
每条规则由三部分组成,以逗号分隔:
规则类型,匹配参数,目标策略
例如:
DOMAIN-SUFFIX,google.com,Proxy
GEOIP,CN,DIRECT
MATCH,Proxy
其中目标策略可以是内置策略名(DIRECT、REJECT),也可以是你在 proxy-groups: 中定义的代理组名称(如 Proxy、Auto 等)。
六大核心规则类型详解
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.com、accounts.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-01、JP-01、US-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 规则前存在某条规则将该流量误判为直连。排查步骤:
- 在 Clash 客户端的"连接"(Connections)面板中找到目标请求,查看实际命中的规则
- 检查该域名是否被国内域名规则集误收录;若是,将该域名添加到代理规则的前面
- 确认配置文件中
MATCH指向的是代理组而非DIRECT
开启调试日志
在配置文件顶部加入 log-level: debug,Clash 会记录每条连接的规则匹配详情,方便定位规则冲突或遗漏:
log-level: debug # Options: silent / error / warning / info / debug
查看日志后,记得将 log-level 改回 info 或 warning,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,点击下方按钮即可获取适合你平台的最新版本: