什么是分流路由?

分流路由(规则分流)是 Clash 最核心的功能之一。简单来说,它根据预先定义的规则,自动判断每条网络请求应该直接连接还是通过代理节点转发,无需用户手动切换代理开关。

典型使用场景:访问国内网站(淘宝、微信、哔哩哔哩)时直连,速度最快、延迟最低;访问境外网站(Google、GitHub、YouTube)时走代理节点,畅通无阻。所有这些判断在后台自动完成,用户完全无感知,体验与正常上网完全一致。

规则分流的基础是 Clash 配置文件中的 rules 字段。理解其工作原理,可以让你根据自身需求自由定制流量路由,实现精细化管理。对于有高定制化需求的用户,掌握规则分流是玩转 Clash 的关键一步。

规则文件结构

Clash 使用 YAML 格式配置文件,所有规则写在 rules: 字段下。每条规则遵循以下统一格式:

- TYPE,VALUE,POLICY

三个部分的含义:

  • TYPE(类型):匹配方式,决定如何识别流量,如域名匹配、IP 匹配、GeoIP 匹配等。
  • VALUE(值):具体的匹配目标,如域名字符串、IP 地址段或国家代码。
  • POLICY(策略):匹配成功后执行的动作。常用策略:PROXY(走代理节点)、DIRECT(直接连接,不经过代理)、REJECT(拦截并丢弃,适合过滤广告和追踪器)。

规则从上到下逐条匹配,一旦命中即执行对应策略并停止,因此规则顺序至关重要。通常的顺序是:拒绝规则 → 代理规则 → 直连规则 → 兜底规则。

常用规则类型详解

域名规则(最常用)

域名规则是使用最广泛的规则类型,提供三种精度层级满足不同需求:

  • DOMAIN,www.google.com,PROXY精确匹配:仅对 www.google.com 生效,不包含子域名,适合针对特定子域名制定策略。
  • DOMAIN-SUFFIX,google.com,PROXY后缀匹配:匹配 google.com 及其所有子域名(如 mail.google.comapis.google.com)。这是最常用的域名规则类型,一条规则即可覆盖整个域名家族。
  • DOMAIN-KEYWORD,google,PROXY关键词匹配:匹配所有包含 google 的域名,灵活但可能产生误判(如 googledrive.app 也会匹配),谨慎使用。

IP 地址规则

当域名规则不够用时,可以按 IP 地址段路由流量:

  • IP-CIDR,192.168.0.0/16,DIRECT — 匹配指定 IP 段,常用于保持局域网(内网)流量直连,避免内网访问被代理拦截。
  • IP-CIDR6,::1/128,DIRECT — 同上,适用于 IPv6 地址段的匹配。
  • GEOIP,CN,DIRECT — 通过 GeoIP 数据库按国家/地区匹配,将所有中国大陆 IP 直连,常作为国内 IP 的兜底直连规则,减少不必要的代理流量消耗。

进程规则(Mihomo 扩展功能)

Mihomo 内核支持按进程名称匹配,可以精确控制某个应用程序的路由行为,而不受其访问的域名或 IP 限制:

  • PROCESS-NAME,WeChat.exe,DIRECT — 微信客户端所有流量直连(仅在中国大陆使用微信时需要)。
  • PROCESS-NAME,steam.exe,PROXY — Steam 客户端所有流量走代理,确保访问国际服和下载速度。
  • 进程规则仅在 Windows 和 macOS 上生效,且需要 Mihomo 内核版本支持。

兜底规则(必须存在)

规则列表最后一条必须是 MATCH 规则,它会匹配所有未被前面规则覆盖的流量,作为默认策略使用:

- MATCH,PROXY

大多数用户的默认策略是 MATCH,PROXY(未匹配流量走代理),也有用户使用 MATCH,DIRECT(未匹配流量直连)搭配少量手动添加的代理规则,视个人需求而定。

规则集的使用(强烈推荐)

手动维护数千条域名规则效率极低,且需要持续跟进更新。Clash 通过 rule-providers 字段支持引用外部规则集文件,社区维护的高质量规则集已覆盖去广告、域名分类、流媒体解锁等各类场景,并保持定期更新。

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400
  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400
  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,PROXY
  - RULE-SET,direct,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

interval: 86400 表示每 86400 秒(24 小时)自动拉取一次远程规则集,确保域名规则始终处于最新状态,无需用户手动维护。

机场(代理服务商)提供的订阅配置通常已内置完整的规则集,绝大多数用户无需自行编写规则。本文主要面向有特定需求、希望定制化路由逻辑的进阶用户。

规则的匹配顺序与优先级

Clash 按从上到下的顺序逐条评估规则,一旦某条规则匹配,立即应用对应策略并停止继续评估。这意味着规则的排列顺序直接决定最终效果:

  • 去广告(REJECT)规则放最前面,尽早拦截广告和追踪请求,减少不必要的网络开销。
  • 更精确的规则(精确域名匹配)要放在更宽泛的规则(域名后缀匹配)之前,避免被宽泛规则提前覆盖。
  • 代理规则放在直连规则之前,确保需要代理的境外流量不会被误判为直连。
  • MATCH 规则必须放在最末,作为所有未匹配流量的兜底处理。

一个规范且高效的规则顺序通常如下:拒绝规则集 → 代理规则集 → 直连规则集 → GeoIP 直连 → 兜底代理(MATCH,PROXY)。遵循这一顺序可以确保绝大多数场景下流量分流的正确性。

调试与故障排查

配置规则后若流量路由不符合预期,可通过以下步骤排查:

  • 查看「连接」面板:Clash Verge Rev 的「连接(Connections)」页面实时展示每条请求命中的规则和使用的策略。在搜索框输入目标域名即可快速定位问题规则。
  • 检查规则顺序:如果某个域名命中了错误的规则,通常是因为更宽泛的规则排在了更精确的规则前面,将精确规则上移即可解决问题。
  • 手动刷新规则集:外部规则集过期或有新域名未覆盖时,在订阅页面手动点击「更新」按钮,或适当缩短 interval 值以提高自动更新频率。
  • DNS 污染导致分流失效:部分境外域名因 DNS 污染无法正确解析,导致 IP 规则命中国内 IP 而走了直连。建议在 Clash 设置中启用 TUN 模式并配置可信的加密 DNS(如 8.8.8.81.1.1.1),从根源上避免 DNS 污染影响分流准确性。

了解更多 Clash 高级配置技巧,请访问帮助中心或查看详细教程。如需了解 TUN 模式与系统代理的区别,请参阅TUN 模式详解