Clash VPN的规则系统采用“从上到下、先命中先执行”的逐条匹配机制,规则顺序直接影响分流结果,越靠前的规则优先级越高,MATCH兜底规则必须放在最后一行。规则由匹配类型(如DOMAIN-SUFFIX、GEOIP、GEOSITE)、匹配值和动作去向(如策略组名、DIRECT、REJECT)三部分构成,去向决定了流量最终走代理、直连还是被拒绝。GEOIP,CN,DIRECT和GEOSITE,cn,DIRECT配合MATCH,PROXY三行规则即可实现“国内直连、国外代理”的标准分流方案。订阅更新会覆盖手动修改的规则,可通过parsers预处理或Clash Verge Rev的Merge功能叠加自定义规则,确保个性化配置持久生效。RULE-SET配合rule-providers可引用外部规则集(如Loyalsoldier/clash-rules),实现广告拦截、特定服务分流等高级功能。排查规则问题时,在客户端的「连接」面板中查看具体流量命中的规则,可快速定位和修正配置错误。

规则系统的核心机制与匹配逻辑
按顺序匹配,先命中先生效
Clash VPN的规则系统本质上是一个“从上到下、先匹配先执行”的决策链表。在config.yaml的rules字段中,规则按照数组顺序逐条比对,内核从第一条开始检查每条流量是否符合匹配条件,一旦命中就立即执行该规则指定的动作(走代理、直连或拒绝),后面的规则不再参与判断。这意味着排在越前面的规则优先级越高,而MATCH作为兜底规则必须放在最后一行,否则它后面的规则永远没有机会执行。
规则中的“去向”决定流量最终走向
每条规则由三个要素组成:匹配类型、匹配值和动作去向。去向通常指向一个策略组(如🚀 节点选择),也可以是DIRECT(直连)或REJECT(拒绝)。当流量命中某条规则时,Clash会将该流量交给对应的策略组处理,由策略组最终决定使用哪个具体节点或直接放行。规则的这种设计让用户能够精细化控制每一种流量的路由逻辑,实现“国内直连、国外代理、广告拦截”的分流目标。
规则顺序错误导致分流失效的典型现象
规则顺序错误是分流配置中最常见的问题,会导致预期效果完全失效。例如将GEOIP,CN,DIRECT放在规则列表的最前面,那么所有国内IP的流量(包括用户希望强制走代理的境外服务)都会被直连放行,后续的精细规则永远无法生效。反之,如果将MATCH,PROXY(兜底走代理)放在了规则列表中间,它后面的所有规则都会被跳过,造成“某些域名无法直连”或“广告规则失效”等问题。日常使用中若发现特定网站分流异常,打开客户端的「连接」面板查看该流量命中了哪条规则,是排查规则顺序问题的直接手段。
常见规则类型与匹配方式
域名类规则:精确到最细粒度的分流
域名类规则通过匹配请求的目标域名来决定流量的去向,是日常使用中最频繁接触的规则类型。DOMAIN要求完全匹配完整域名(如DOMAIN,www.google.com,PROXY),DOMAIN-SUFFIX匹配域名后缀及所有子域名(如DOMAIN-SUFFIX,google.com,PROXY可匹配www.google.com和drive.google.com),DOMAIN-KEYWORD则匹配包含特定关键词的任意域名。这类规则的优势在于无需DNS解析即可直接匹配,执行效率高,适合为特定服务(如流媒体、AI平台)配置独立的代理策略。
IP类规则:GEOIP与IP-CIDR的用途区别
IP类规则根据目标IP地址或IP归属地来分流,适合处理无需域名解析的连接和粗粒度的地区分流。IP-CIDR匹配指定的IP段(如IP-CIDR,192.168.0.0/16,DIRECT用于内网地址直连),GEOIP则基于IP归属地数据库进行匹配,GEOIP,CN,DIRECT是最常用的国内IP直连规则。与域名类规则不同,IP类规则可能需要触发DNS解析才能获取目标IP,在使用no-resolve参数时可以跳过解析环节,在规则列表中将IP类规则放在域名类规则之后,可以避免不必要的DNS查询。
GEOSITE与RULE-SET的高级分流能力
GEOSITE是Mihomo内核提供的高级规则类型,基于预编译的域名分类数据库进行匹配,比GEOIP更加精细和高效。例如GEOSITE,google,PROXY可以匹配Google旗下的所有服务域名,GEOSITE,cn,DIRECT覆盖大量国内网站域名集合,GEOSITE,ads,REJECT则直接拦截常见的广告域名。RULE-SET则允许引用外部的规则集文件(通过rule-providers声明),将数百上千条规则统一管理,避免配置文件过于臃肿。社区维护的规则集(如Loyalsoldier/clash-rules)提供了reject、proxy、direct等预分类列表,是标准分流方案的常用选择。
规则与策略组的协作关系
proxies提供节点,proxy-groups组织节点
在Clash的配置体系中,三层结构协同工作:proxies定义所有可用的代理节点,proxy-groups将节点组织成不同用途的策略组,rules决定每条流量去往哪个策略组。proxies是原料库(如“香港节点01”、“美国节点02”),proxy-groups是分类货架(如“🚀 节点选择”手动组、“♻️ 自动选择”url-test组),rules则是导购员将不同类型的流量引导到对应的货架上。例如用户可以为Netflix流量单独创建一个“🎬 流媒体”策略组,并在规则中配置GEOSITE,netflix,🎬 流媒体,让流媒体请求固定使用该组中的节点。
select手动选择与url-test自动切换的搭配
策略组的设计决定了节点选择的灵活度,select和url-test是最常用的两种策略组类型。select类型需要用户在客户端界面手动切换节点,适合对节点选择有明确偏好的场景(如“我需要固定使用香港节点访问某服务”)。url-test类型则定期对组内所有节点进行延迟测试并自动切换到响应最快的节点,适合追求“无人值守最优选线”的场景。两层嵌套设计(外层select选区域,内层url-test自动优选)是高级用户常用的配置模式,兼顾了区域控制权和自动化优势。
DIRECT直连与REJECT拒绝的动作含义
规则的动作去向除了指向策略组外,还有两个特殊值:DIRECT和REJECT。DIRECT表示让流量绕过代理直接访问目标服务器,适用于国内网站、内网地址和本地服务,GEOIP,CN,DIRECT是标准分流方案中的必选项。REJECT则直接丢弃该请求,适用于拦截广告域名、恶意网站或追踪器,GEOSITE,ads,REJECT能够在不安装额外插件的情况下阻挡大量广告请求。这两个特殊动作让Clash的规则系统具备了流量过滤和精细化控制的能力,而不仅仅是“走代理或直连”的二元选择。
标准分流模板与实战配置
国内直连、国外代理的标准三行模板
对于大多数普通用户,一套简洁的三行规则即可满足日常使用需求:GEOSITE,cn,DIRECT(国内域名直连),GEOIP,CN,DIRECT(国内IP直连),MATCH,PROXY(其余全部走代理)。这套模板的优先级逻辑是:先判断域名是否为国内常用网站,再判断IP归属地是否为国内,最后将所有未匹配的流量(境外网站)送入代理通道。配合GEOIP,private,DIRECT(内网IP直连)可以避免本地路由器、NAS的访问被错误路由。该方案简洁高效,适合新手直接使用,不会出现国内网站误走代理导致加载缓慢的问题。
广告拦截规则的插入位置
在标准分流模板中插入广告拦截规则时,位置选择至关重要。RULE-SET,reject,REJECT或GEOSITE,ads,REJECT必须放在代理类规则(如GEOSITE,google,PROXY)之前,否则广告域名会先被代理规则匹配并发送到节点,无法实现拦截效果。社区维护的reject规则集覆盖了大量已知的广告、追踪和恶意域名,配合REJECT动作在规则层直接丢弃请求,既不消耗带宽也不占用节点连接数。对于性能受限的设备(如硬路由),使用Mihomo独有的mrs二进制格式规则集能够减少启动时的资源占用和规则文件大小。
为特定服务配置专属节点组
对于需要稳定访问特定服务的场景,可为该服务创建独立的策略组并在规则中精准指向。例如创建name: "🤖 AI服务"的select组,填入对ChatGPT等AI平台兼容性最好的节点,然后在规则中配置GEOSITE,openai,🤖 AI服务,让所有OpenAI相关域名的流量固定走该组。同样的思路适用于Netflix、Disney+等流媒体平台,以及Telegram、WhatsApp等即时通信服务。这种配置方式确保关键服务不受“自动选择”组中偶尔选到的不兼容节点影响,在订阅更新后依然保持稳定。
订阅更新与自定义规则的持久化
订阅更新会覆盖手动修改的规则
通过订阅链接获取的配置是“托管配置”,每次执行订阅更新时,远端服务器返回的完整配置文件会直接覆盖本地的rules字段,所有手动添加的规则都会丢失。这意味着直接在客户端的配置编辑器中修改订阅配置是不持久的,下次更新后改动即被冲掉。若服务商预设的规则存在误判(如将某境外域名误设为DIRECT),每次更新后都需要重新修正,操作繁琐且容易遗漏。
使用parsers或Merge功能叠加自定义规则
为了解决订阅更新覆盖手动配置的问题,Clash提供了parsers预处理机制和客户端的Merge功能,让自定义规则能够在每次订阅更新后自动追加到配置中。parsers通过在配置文件中声明prepend-rules参数,将自定义规则插入到订阅规则列表的最前面,确保它们优先匹配。Clash Verge Rev的“全局扩展配置”或“Merge”功能同样支持在订阅配置上叠加自定义规则,用户只需在界面上填写要追加的规则,客户端会自动合并。这种方式既保留了订阅的自动更新能力,又确保了个性化规则的持久生效。
通过rule-providers实现规则集的自动更新
rule-providers机制允许将规则集放在配置文件外部(本地文件或远程URL),客户端定期自动拉取更新,是管理大规模规则集合的最佳实践。声明type: http、behavior: domain和远程URL后,客户端会按照interval设定的间隔(如86400秒=24小时)从GitHub等源拉取最新规则文件。社区维护的规则集(如Loyalsoldier/clash-rules和MetaCubeX/meta-rules-dat)定期更新,用户只需在rules中引用RULE-SET即可享受持续维护的分流规则,无需手动维护成百上千条域名列表。这种方法既保持了配置文件的简洁,又确保规则库与互联网变化同步。
常见问题FAQ
规则是按什么顺序匹配的?为什么规则顺序很重要?
GEOIP,CN,DIRECT放在最前面会导致所有国内IP的流量直连,包括用户想强制代理的服务),而MATCH兜底规则必须放在最后一行。日常排查分流问题时,可在客户端的「连接」面板查看每条流量具体命中了哪条规则。GEOIP,CN,DIRECT和GEOSITE,cn,DIRECT有什么区别?
GEOIP,CN,DIRECT基于IP归属地数据库判断目标IP是否位于中国,匹配的是IP地址而非域名,适合处理无需域名解析的连接。GEOSITE,cn,DIRECT基于预编译的域名分类数据库,匹配的是域名集合而非IP,覆盖面更精细,能够覆盖更多国内网站域名。两者通常搭配使用:先GEOSITE,cn,DIRECT让国内域名直连,再GEOIP,CN,DIRECT让国内IP直连,最后MATCH,PROXY兜底走代理,形成“国内直连、国外代理”的完整分流逻辑。订阅更新后我添加的规则不见了怎么办?
rules字段,手动添加的规则会被覆盖。解决方案是使用parsers预处理机制或Clash Verge Rev的Merge功能,将自定义规则以“叠加”方式保留在订阅配置之上。在parsers中配置prepend-rules可将自定义规则插入到订阅规则的最前面,确保它们优先匹配,且每次订阅更新后自动生效。使用Merge功能同理,自定义规则会持久保留,不会因订阅更新而丢失。