什麼是分流路由?

分流路由(規則分流)是 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 — 微信客户端所有流量直连(僅在中國大陸使用微信(WeChat)时需要)。
  • 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 模式详解