为什么需要规则分流?

传统 VPN 或「全局代理」会把所有流量都送进隧道,结果是:访问国内网站绕远 路、延迟升高,还白白消耗代理流量。Clash 系列客户端(基于 Mihomo 内核)的核心优势,正是規則分流——按域名、IP、地理位置等条件,决定每 一包数据是直连(DIRECT)还是走代理(PROXY)

理想状态下:淘宝、B 站、银行 App 走直连,YouTube、Google、ChatGPT 走代理;局域网 NAS、打印机永远直连。这样既保证境外访问畅通 ,又让国内体验接近原生网速。本文从规则语法、常见类型、RULE-SET 规则集到实战配置,帮你建 立系统的分流知识体系。

前提:客户端出站模式须设为「规则(Rule)」 而非「全局」或「直连」。若尚未完成客户端安装与订阅导入,可先阅读本站 Clash Verge Rev 安裝設定教學

规则匹配原理:自上而下,首条命中

Clash 配置文件中的 rules 是一个有序列表。每条连接从列表第一条开始比对,一旦匹配成功,立即执行对应 动作(直连、拒绝或转发到某策略组),不再继续向下匹配

因此规则顺序至关重要:越具体、越优先 的规则应放在越前面;宽泛的兜底规则(如 GEOIP,CN,DIRECTMATCH,PROXY)应放在列表末尾。机场订阅通常已排好 序,进阶用户通过覆写(Merge)在列表头部或尾部追加自定义条目即可。

rules:
  - DOMAIN-SUFFIX,local,DIRECT          # 區域網路直連
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - RULE-SET,cn,DIRECT                  # 規則集:國內直連
  - RULE-SET,gfw,PROXY                  # 規則集:被牆走代理
  - GEOIP,CN,DIRECT                     # 中國大陸 IP 預設直連
  - MATCH,PROXY                         # 預設:其餘全部走代理

常用规则类型详解

Mihomo 支持多种规则类型,理解它们的匹配范围是写好分流逻辑的基础。

规则类型 语法示例 匹配说明
DOMAIN DOMAIN,google.com,PROXY 精确匹配完整域名
DOMAIN-SUFFIX DOMAIN-SUFFIX,google.com,PROXY 匹配域名及其所有子域名(最常用)
DOMAIN-KEYWORD DOMAIN-KEYWORD,google,PROXY 域名中包含关键词即匹配(易误伤,慎用 )
IP-CIDR IP-CIDR,192.168.0.0/16,DIRECT,no-resolve 按目标 IP 段匹配;no-resolve 表示不做 DNS 解析
GEOIP GEOIP,CN,DIRECT 按 GeoIP 数据库判断 IP 归属国家/地区
RULE-SET RULE-SET,cn,DIRECT 引用外部规则集(域名/IP 批量列表)
MATCH MATCH,PROXY 兜底规则,必须放在最后一条

DOMAIN 与 DOMAIN-SUFFIX 的选择

日常追加单站规则时,优先使用 DOMAIN-SUFFIX:例如 DOMAIN-SUFFIX,github.com,PROXY 会同时匹配 github.comapi.github.comraw.githubusercontent.com 等。仅当需要精确限定某一主机名时,才 用 DOMAIN

IP-CIDR 与局域网直连

开启 TUN 模式后,访问 NAS、打印机等内网设备时,务必确保规则包含常见私有网段直连:

- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
TUN 下内网不可达:若开启 TUN 后无法访问路由器或 NAS,首先检查上述 CIDR 规则是否存在且位于 MATCH 之前。优质机场订阅通常已内置,若无则 通过覆写追加。

GEOIP 与国内直连

GEOIP,CN,DIRECT 是「国内直连」的经典兜底:当目标 IP 被 GeoIP 数据库判定为中国大陆时,流量不经过 代理。配合前面的国内域名规则集,可覆盖绝大多数境内访问场景。

需要注意:GeoIP 基于 IP 归属,而非域 名。部分 CDN 节点可能将境外域名解析到国内 IP,导致意外直连;反之,少数国内服务使用海外 IP 也可能被误判。若遇个别站点异常,用 DOMAIN-SUFFIX 显式指定策略组即可覆盖 GeoIP 结果。

RULE-SET:用规则集管理海量域名

手动维护成千上万条域名不现实。Mihomo 的 RULE-SET 允许引用外部规则文件(通常托管在 GitHub 或机场 CDN),一次加载整批域名/IP 列表。 配置文件需先声明 rule-providers,再在 rules 中引用。

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

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

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

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,gfw,PROXY
  - RULE-SET,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

社区常用的 Loyalsoldier/clash-rules 规则集将域名分为 cn(国内)、gfw(被墙)、reject(广告拦截)等类别,与 Mihomo 兼容良 好。机场订阅往往已内置类似规则,用户无需重复配置;自建或精简订阅时可参考上述结构。

interval 控制规则集自动更新周期(秒)。设为 86400 即每天拉取一次,保证 GFW 列表与新增域名同步。首次加载需联网,离线环境请改用 type: file 本地规则文件。

策略组:规则与节点的桥梁

规则列表中的第三列(如 PROXYDIRECTREJECT)可以是内置动作,也可以是策略组名称。策略组(proxy-groups)决定「走代理时具体用哪个节点或哪组 节点」。

  • select:手动选择节点,适合「节点选择」主组 。
  • url-test:按延迟自动选最快节点,适合「自动选 择」。
  • fallback:按顺序尝试,主节点失败时切换备用。
  • load-balance:负载均衡,分散连接压力。

规则 RULE-SET,gfw,PROXY 中的 PROXY 往往指向名为「PROXY」或「节点选择」的策略组,而非单个节点。你可以在客户端「代理」页切换该组内的具体节点,而无需修改规则文件。

DNS 与分流的配合

规则匹配发生在 DNS 解析之后(或对 IP 规则直接匹配 IP)。Mihomo 常用 fake-ip 模式:为域名分配虚假 IP,连接时再还原真实目标,加快规则判定并减少 DNS 泄露。若遇 个别站点解析异常,可尝试将 dns.enhanced-mode 改为 redir-host,或在覆写中为特定域名指定 nameserver

分流逻辑与 DNS 相互影响:例如 GEOIP,CN,DIRECT 需要正确的 IP 才能生效;若 DNS 被污染返回错误 IP,可能导致国内站点误走代理。使用 dns.fake-ip-filter 排除局域网域名、或启用 nameserver-policy 为特定后缀指定 DoH/DoT,是进阶调优的 常见手段。

覆写配置:在不改订阅的前提下微调规则

机场订阅一般不允许直接编辑远程 YAML,但 Clash Verge Rev 等客户端支持[MISSING: zh_CN_blog_articles_rule_split_197_003]:在订阅之上叠加本地片段,追加规则而 不被订阅更新覆盖。

追加单域名到代理组

prepend-rules:
  - DOMAIN-SUFFIX,example.com,PROXY
  - DOMAIN-SUFFIX,blocked-site.org,PROXY

prepend-rules 将规则插入列表最前面,优先于订阅内规则匹配。若希望某国内 域名强制直连(覆盖 gfw 规则集),同样可用 prepend-rules 添加 DOMAIN-SUFFIX,xxx.com,DIRECT

追加局域网与自定义直连

prepend-rules:
  - DOMAIN-SUFFIX,nas.home,DIRECT
  - IP-CIDR,192.168.1.0/24,DIRECT,no-resolve
覆写语法错误会导致整份配置无法加载。 修改后若代理突然失效,先禁用覆写排查;在客户端「日志」页观察规则命中(rule matched),确认自定义域名走向符合预期。

推荐的分流结构(最佳实践)

综合社区经验,一套兼顾速度与可维护性 的规则顺序大致如下:

  1. 局域网与本地域名 → DIRECT
  2. 广告/追踪域名 → REJECT(可选)
  3. 流媒体、游戏等专用策略组(若订阅提供 )
  4. 被墙站点规则集 → 主代理策略组
  5. 国内域名规则集 → DIRECT
  6. GEOIP,CN,DIRECT
  7. MATCH,PROXYMATCH,自动选择

不建议把 MATCH,DIRECT 作为默认兜底——未匹配的境外站点会直连 ,在需要代理的网络环境下往往无法访问。多数「回国」或「出国」模板采用 MATCH,PROXY 更安全。

调试与排查:如何确认规则是否生效

  1. 在客户端打开「连接」「日志」页,访问目标网站,观察实时连接与命中 的规则名称。
  2. 若显示 DIRECT 但期望走代理,检查该域名是否被 cn 规则集或 GEOIP,CN 提前匹配。
  3. 临时切换全局模式:若全局可访问、规则模式不行,说明规 则未覆盖,用覆写追加 DOMAIN-SUFFIX 即可。
  4. 使用 nslookup 或在线 DNS 查询,确认域名解析 IP 是否与 GeoIP 预期一致。

常見問題

规则模式和全局模式有什么区别?

规则模式按 rules 列表分流,国内直连、国外代理,日常推 荐。全局模式除局域网等特殊规则外全部走代理,适合临时排查或访问规则未覆盖站点。

为什么 B 站/淘宝很慢,像走了代理?

检查出站模式是否为「规则」;在连接页 查看访问国内站点时规则是否为 DIRECT。若误为 PROXY,可能是 cn 规则集未加载或 DNS 解析到境外 IP,可 用 DOMAIN-SUFFIX,bilibili.com,DIRECT 等显式规则覆盖。

RULE-SET 更新失败怎么办?

规则集 URL 需可访问(部分 CDN 在特定 网络下不稳定)。可更换镜像地址、改用 type: file 本地副本,或在订阅转换时把规则集 baked 进配置。详见本站后续「订阅转换」相关教程。

能否只用 GEOIP 不用 RULE-SET?

可以,但体验较差:GeoIP 无法识别「域 名属于境外但解析到国内 CDN」等复杂情况,且首次连接需等 IP 解析完成。RULE-SET + GEOIP 组 合更精准,是机场订阅的主流方案。

掌握规则分流后,Clash 才真正发挥「按 需路由」的价值:国内体验不打折,境外访问有保障,流量与隐私也可控。若你希望开箱即用的分流模板与一键覆写,可从本站 客戶端下載頁 获取已整合 Mihomo 规则体系的 Clash 客户端,减少手写 YAML 的时间成本。

立即免费下载 Clash,开启智能规则分流 →