首页/教程/Clash vpn规则匹配顺序是怎么排的?谁先谁后?
CLASH GUIDE

Clash vpn规则匹配顺序是怎么排的?谁先谁后?

约 8 分钟阅读

在Clash VPN中,规则匹配顺序遵循“从上到下、逐条匹配、先命中先生效”的核心原则,配置文件中的书写顺序直接决定了规则的优先级高低。推荐的规则排序为:内网IP段直连规则(IP-CIDR)→精确域名规则(DOMAIN、DOMAIN-SUFFIX)→GEOSITE分类规则→GEOIP和IP-CIDR规则→MATCH兜底规则。精确规则应放在宽泛规则之前,避免被通用规则提前匹配导致分流失效。MATCH规则必须放在最后一行,否则其后的规则永远无法被执行。广告拦截规则(REJECT)必须放在代理类规则之前才能生效。订阅更新会覆盖手动修改的规则,通过Clash Verge Rev的Merge功能或parsers的prepend-rules可将自定义规则叠加到订阅规则顶部,永久保留自定义优先级。排查规则顺序问题时,在「连接」面板中查看具体流量的命中规则,对比预期与实际匹配结果,结合Debug日志定位规则冲突,根据命中规则调整配置后重新加载即可修复。

规则匹配的核心原则:从上到下,先命中先生效

按数组顺序逐条匹配的执行逻辑

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,查看日志输出的规则匹配过程。

使用提醒

请从可信来源获取软件与配置,并遵守所在地法律法规和相关服务条款。