
规则匹配的核心原则:从上到下,先命中先生效
按数组顺序逐条匹配的执行逻辑
Clash VPN的规则匹配顺序遵循“从上到下、逐条匹配、先命中先生效”的基本原则,这与配置文件中的规则书写顺序完全一致。当Clash处理一个网络请求时,内核从rules字段的第一条规则开始,逐条比对请求的目标域名或IP地址是否符合当前规则的匹配条件,若符合则立即执行该规则指定的动作(走代理、直连或拒绝),后续的所有规则不再参与判断。这意味着排在越前面的规则拥有越高的优先级,而MATCH作为兜底规则必须放在规则列表的最后一行。
规则顺序决定优先级
在规则系统中,规则的先后顺序直接决定了其优先级高低,先匹配到的规则拥有对这条流量的最终决策权。这种设计允许用户通过调整规则顺序来精细化控制分流逻辑,将更精确的规则放在更宽泛的规则前面,确保特定域名或IP的流量按预期处理。
MATCH兜底规则必须放在最后
MATCH规则是所有规则的兜底选项,用于匹配前面所有规则都未命中的请求,必须放在规则列表的最后一行。若将MATCH规则放在了规则列表的中间位置,它后面的所有规则将永远不会被匹配到,因为任何到达MATCH规则的流量都会被直接处理而不再继续检查后续规则。标准分流配置中,MATCH,PROXY作为最后一条规则,将所有未被国内规则匹配的境外流量送入代理通道。
常见规则类型的优先级安排
精确域名规则应排在首位
DOMAIN和DOMAIN-SUFFIX等精确域名类规则拥有最高的匹配精度,应放在规则列表的最前面,确保特定域名的流量能够被优先处理。当用户为某个特定网站配置了专属代理策略时,例如DOMAIN-SUFFIX,openai.com,AI节点组,该规则必须放在GEOIP,CN,DIRECT等通用规则之前。若顺序相反,通用规则可能在精确规则之前匹配成功,导致该域名的流量被错误地直连或送入其他策略组。
GEOSITE规则次之
GEOSITE基于预编译的域名分类数据库进行匹配,覆盖面比精确域名规则更广,应放在精确域名规则之后、GEOIP规则之前。GEOSITE,cn,DIRECT可用于匹配国内常用网站的域名集合,GEOSITE,google,PROXY可匹配Google旗下所有服务。将这些规则放在精确域名规则之后,可以确保特定域名的独立策略优先于通用分类策略,同时避免为每个域名单独配置精确规则导致配置臃肿。
GEOIP和IP-CIDR规则居中
GEOIP和IP-CIDR类规则基于IP地址进行判断,应放在域名类规则(DOMAIN和GEOSITE)之后、MATCH规则之前。当请求的目标是IP地址而非域名时,此类规则才能发挥作用,而域名类规则在DNS解析完成前即可完成匹配,效率更高。标准分流配置中,GEOIP,CN,DIRECT用于匹配国内IP段,IP-CIDR,192.168.0.0/16,DIRECT用于匹配内网IP段,两者都放在域名类规则之后,作为IP层面的分流手段。
MATCH放在最后兜底
MATCH规则是规则列表的终点,必须放在最后一行,用于处理所有未被前面规则匹配的流量。在标准分流配置中,MATCH,PROXY将未匹配的境外流量送入代理通道。部分用户也会配置MATCH,DIRECT将所有未匹配流量直连,但这样会使代理功能失效,仅适用于不需要代理的场景。MATCH规则前面可以有REJECT规则用于拦截特定IP或域名,但REJECT规则应放在MATCH之前,确保被拦截的流量先被匹配。
标准分流配置的推荐排序方案
国内直连国外代理的完整规则顺序
一套完整的规则配置应按照“精确域名→GEOSITE→GEOIP→IP-CIDR→MATCH”的顺序排列,确保分流逻辑清晰有效。推荐的规则顺序为:先放置内网IP段直连规则(IP-CIDR,192.168.0.0/16,DIRECT等),然后是自定义精确域名规则(DOMAIN-SUFFIX,特定服务.com,PROXY),接着是GEOSITE分类规则(GEOSITE,cn,DIRECT、GEOSITE,google,PROXY),再是GEOIP和IP-CIDR规则(GEOIP,CN,DIRECT、GEOIP,private,DIRECT),最后以MATCH,PROXY兜底。先放内网直连规则可避免本地设备访问被送入代理通道,提高响应速度。
广告拦截规则的插入位置
广告拦截规则(GEOSITE,ads,REJECT或RULE-SET,reject,REJECT)必须放在代理类规则之前,否则广告域名的请求会先被代理规则匹配并发送到节点,无法实现拦截效果。具体插入位置应在精确域名规则之后、GEOSITE分类规则之前,确保广告域名在走代理或被分类为国内网站之前就被拦截。社区维护的reject规则集通常包含了大量已知的广告和追踪域名,配合REJECT动作在代理层直接丢弃请求,可有效拦截广告且不消耗节点带宽。
为特定服务配置专属节点组
对于需要稳定访问的特定服务,可在规则列表较前位置配置DOMAIN-SUFFIX规则直接指向专属策略组,确保该服务始终使用指定节点。例如配置DOMAIN-SUFFIX,netflix.com,🎬 流媒体组和DOMAIN-SUFFIX,openai.com,🤖 AI组,并将这些规则放在GEOSITE和GEOIP规则之前。这样即使这些域名的IP归属地判断为国内或被GEOSITE分类为国内网站,精确规则仍会优先匹配,确保关键服务的流量固定走指定的节点组。
规则顺序错误的典型症状
精确规则被宽泛规则覆盖
当精确域名规则被放在GEOIP或GEOSITE规则之后时,该域名的流量可能在到达精确规则之前已被宽泛规则匹配并处理。若宽泛规则执行的是DIRECT直连动作,而该网站实际需要走代理才能访问,则表现为该网站无法打开。在Clash Verge Rev的「连接」面板中可查看该请求命中的规则,若显示为DIRECT而非预期PROXY,则说明精确规则被前面的宽泛规则覆盖,需调整规则顺序。
MATCH前面有未执行的规则
如果MATCH规则没有放在最后一行,其后面的规则将永远无法生效。这种错误常见于在配置中追加新规则时,未注意将其放在MATCH之前。检查配置文件确保MATCH规则是rules字段的最后一行。若在MATCH之后还看到其他规则,将它们移动到MATCH前面,否则这些规则永远不会被执行。
订阅更新后自定义规则丢失
通过订阅获取的配置,订阅更新会完整替换rules字段,手动添加的自定义规则在更新后会丢失。若用户直接在配置文件中修改了订阅配置,下次更新时这些修改会被覆盖。使用Clash Verge Rev的Merge功能或在parsers中配置prepend-rules,可将自定义规则叠加到订阅规则之上,每次更新后自动插入到规则列表最前面。
使用连接面板排查规则匹配问题
查看具体流量的命中规则
Clash Verge Rev的「连接」面板可实时显示每条活跃连接所匹配的规则名称和动作去向,是排查规则顺序问题的最直接工具。打开「连接」面板,找到目标请求对应的连接,点击查看详情,即可看到该请求命中了rules字段中的哪一条具体规则以及执行的动作类型。当发现特定网站分流异常时,在「连接」面板中查看其命中的规则是定位问题的第一步。
对比预期规则与实际命中规则
在「连接」面板中查看命中规则后,将其与用户预期的分流策略进行对比,可快速判断问题所在。若某境外网站预期走代理(PROXY),但「连接」面板显示为DIRECT,说明该请求在被精确规则匹配之前已被某条直连规则匹配,需要检查该网站的域名或IP是否被误放入国内直连规则中。若命中规则为REJECT,说明广告拦截或屏蔽规则生效,该请求被主动丢弃。根据命中规则调整对应的配置后,重新加载配置并再次测试。
结合日志定位规则顺序冲突
当「连接」面板无法显示足够信息时,可结合Clash的日志功能进一步定位问题。在Clash Verge Rev中将日志级别调至Debug或Info,访问目标网站时观察日志输出中每条规则的匹配过程。日志会记录规则匹配的完整流程,显示流量依次通过了哪些规则检查,最终命中了哪条规则。结合日志信息和「连接」面板的显示,可准确判断规则顺序是否存在冲突,以及哪些规则覆盖了预期的精确规则。
常见问题FAQ
规则匹配是从上到下还是从下到上?
Clash的规则匹配按照配置文件中的书写顺序从上到下逐条执行,第一条命中的规则立即生效,后续规则不再参与判断。因此越靠上的规则优先级越高,MATCH兜底规则必须放在最后一行。
GEOIP,CN,DIRECT应该放在规则列表的什么位置?
GEOIP,CN,DIRECT应放在精确域名规则(DOMAIN、DOMAIN-SUFFIX)和GEOSITE规则之后、MATCH规则之前。若放在列表最前面,会导致所有国内IP的流量全部直连,使得用户为特定境外域名配置的精确代理规则无法生效。
如何在订阅更新后保留自定义规则的顺序?
订阅更新会完整替换配置中的rules字段,直接在配置中修改会被覆盖。使用Clash Verge Rev的Merge功能或在parsers中配置prepend-rules,可将自定义规则叠加到订阅规则之上。自定义规则会插入到规则列表的最前面,获得最高优先级且每次更新后自动保留。
如何查看某条流量具体命中了哪条规则?
在Clash Verge Rev中打开「连接」面板,点击目标连接即可看到其命中的具体规则名称和动作类型。若「连接」面板信息不足,可将日志级别调至Debug,查看日志输出的规则匹配过程。