为什么需要规则分流?
传统 VPN 或「全局代理」会把所有流量都送进隧道,结果是:访问国内网站绕远路、延迟升高,还白白消耗代理流量。Clash 系列客户端(基于 Mihomo 内核)的核心优势,正是规则分流——按域名、IP、地理位置等条件,决定每一包数据是直连(DIRECT)还是走代理(PROXY)。
理想状态下:淘宝、B 站、银行 App 走直连,YouTube、Google、ChatGPT 走代理;局域网 NAS、打印机永远直连。这样既保证境外访问畅通,又让国内体验接近原生网速。本文从规则语法、常见类型、RULE-SET 规则集到实战配置,帮你建立系统的分流知识体系。
规则匹配原理:自上而下,首条命中
Clash 配置文件中的 rules 是一个有序列表。每条连接从列表第一条开始比对,一旦匹配成功,立即执行对应动作(直连、拒绝或转发到某策略组),不再继续向下匹配。
因此规则顺序至关重要:越具体、越优先的规则应放在越前面;宽泛的兜底规则(如 GEOIP,CN,DIRECT、MATCH,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 # 规则集:国内域名/IP 直连
- 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.com、api.github.com、raw.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
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 本地规则文件。
策略组:规则与节点的桥梁
规则列表中的第三列(如 PROXY、DIRECT、REJECT)可以是内置动作,也可以是策略组名称。策略组(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 等客户端支持覆写(Merge):在订阅之上叠加本地片段,追加规则而不被订阅更新覆盖。
追加单域名到代理组
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
推荐的分流结构(最佳实践)
综合社区经验,一套兼顾速度与可维护性的规则顺序大致如下:
- 局域网与本地域名 →
DIRECT - 广告/追踪域名 →
REJECT(可选) - 流媒体、游戏等专用策略组(若订阅提供)
- 被墙站点规则集 → 主代理策略组
- 国内域名规则集 →
DIRECT GEOIP,CN,DIRECTMATCH,PROXY或MATCH,自动选择
不建议把 MATCH,DIRECT 作为默认兜底——未匹配的境外站点会直连,在需要代理的网络环境下往往无法访问。多数「回国」或「出国」模板采用 MATCH,PROXY 更安全。
调试与排查:如何确认规则是否生效
- 在客户端打开「连接」或「日志」页,访问目标网站,观察实时连接与命中的规则名称。
- 若显示
DIRECT但期望走代理,检查该域名是否被cn规则集或GEOIP,CN提前匹配。 - 临时切换全局模式:若全局可访问、规则模式不行,说明规则未覆盖,用覆写追加
DOMAIN-SUFFIX即可。 - 使用
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 的时间成本。