Shadowrocket 规则语法入门:DOMAIN-SUFFIX、GEOIP、IP-CIDR 与 FINAL 怎么匹配

逐个解释 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、GEOIP、IP-CIDR、FINAL 的匹配对象与先后顺序,配可直接对照的规则写法示例。

本文速览

本文适合已经在 Shadowrocket(小火箭)中导入自己已有配置、准备调整分流规则的用户。先确认 Global Routing 使用 Config,再区分域名条件与 IP 条件,最后按“具体例外在前、较宽范围在后、FINAL 收尾”排列规则。下文示例用于解释语法,不包含可用连接参数;测试时应替换为自己有权访问的目标。

先确认规则的生效条件

规则决定一条连接采用哪种策略,不负责创建服务器,也不决定服务器本身是否可用。Home 用于选择服务器与管理连接,Config 用于管理配置文件,Settings 用于应用设置。编辑某份文件之后,还需要确认它是当前选中的配置;仅保存一份未启用的文件,不会改变正在使用的规则。

在 Home → Global Routing 中,选择 Config 才能按当前配置进行本文讨论的分流。Proxy 是整体使用代理的姿态,Direct 是整体直接连接的姿态;Scene 则应结合已设置的场景条件核对,不能仅凭菜单中出现 Scene 就认为某份规则已生效。排错时先固定为 Config,减少场景切换带来的变量。

6 类
本文涉及 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、GEOIP、IP-CIDR、FINAL
3 项
普通条件规则包含类型、匹配值、策略
1 条
最小示例用一条 FINAL 处理前面未匹配的连接

结论:先固定生效配置

测试前记录当前配置名称与 Global Routing 的选择;若这两项不确定,先不要增加规则,否则无法判断变化来自文件切换还是匹配条件。

规则写法与策略名称

在配置文本的 [Rule] 段中,一条普通条件规则通常使用英文逗号分隔三项:规则类型、匹配值、策略。不要把网页地址整体填入域名字段:域名条件不包含 https://、路径、查询参数或端口。下面两行分别表示“指定域名直接连接”和“其余连接使用代理”。

[Rule]
DOMAIN,example.com,DIRECT
FINAL,PROXY
字段或策略含义核对重点
DOMAIN规则类型,按完整域名匹配。不是协议类型,也不是服务器名称。
example.com该行使用的匹配值。不能写成带路径的网页地址。
DIRECT直接连接目标。连接仍受当前网络、DNS 与目标可达性影响。
PROXY使用代理策略。核对 Home 中当前选择的默认服务器。
REJECT拒绝匹配的连接。命中后访问失败可能就是规则的预期结果。

如果已有配置使用了自定义策略组名称,规则末尾必须引用配置中实际存在的名称。初学测试先用 DIRECT 与 PROXY,不要在同一次修改中同时新增策略组、调整 DNS 和重排规则。本文示例是片段,已有配置包含 [Rule] 时,应编辑原段落,而不是反复追加同名段落。

三种域名条件怎么区分

DOMAIN 适合单个主机例外;DOMAIN-SUFFIX 适合一个域名及其子域名;DOMAIN-KEYWORD 按域名中是否包含指定字符串匹配。三者匹配的是域名信息,不是网页标题、页面内容,也不是 URL 路径。

示例规则会匹配不会匹配
DOMAIN,example.com,DIRECTexample.comapi.example.com
DOMAIN-SUFFIX,example.com,DIRECTexample.com、api.example.comnotexample.com、example.com.test
DOMAIN-KEYWORD,example,DIRECTapi.example.com、notexample.comexample.org 之外、不含该字符串的域名,例如 sample.test

选择 DOMAIN-SUFFIX 时直接写 example.com,不需要添加 *.。它按域名边界识别后缀,并非简单的字符串尾部比较。相比之下,DOMAIN-KEYWORD,example,DIRECT 的范围明显更宽,可能覆盖与目标站点没有关系的域名;仅希望匹配一个站点家族时,优先使用明确的后缀条件。

GEOIP 与 IP-CIDR 匹配什么

GEOIP 根据目标 IP 在地理数据库中的归属进行判断。比如 GEOIP,CN,DIRECT 表示把数据库识别为 CN 的目标 IP 交给 DIRECT。它不根据域名后缀、网页语言、公司注册地判断,也不能保证某个域名的所有解析结果都属于同一区域。

IP-CIDR 则直接描述 IPv4 地址范围。斜杠后是前缀长度:/32 表示单个 IPv4 地址,/24 覆盖 256 个地址。下面使用专门用于文档示例的地址段说明语法,这些地址不是可用服务地址。

IP-CIDR,192.0.2.7/32,DIRECT
IP-CIDR,198.51.100.0/24,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY

部分 IP 条件可带 no-resolve,例如 IP-CIDR,192.0.2.0/24,DIRECT,no-resolve。其作用是避免仅为了评估这条规则而触发域名解析,并不表示全局关闭 DNS;如果当时没有可用的目标 IP,就不能指望这条规则通过解析域名来命中。排查时先保留原配置的相关选项,不要批量添加或删除。

按顺序匹配,FINAL 放最后

对于本文这些普通规则,按从上到下的顺序检查,命中后采用该行策略,不会因为后面出现了“更精确”的条件就自动改选。因此,类型名称不构成优先级:DOMAIN 不会天然压过排在它前面的 DOMAIN-SUFFIX。

[Rule]
DOMAIN,api.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
  1. 请求 api.example.com 时,第一行已经命中,使用 PROXY。
  2. 请求 www.example.com 时,第一行不匹配,第二行命中,使用 DIRECT。
  3. 目标 IP 为 192.0.2.8 且前面的域名规则未命中时,示例网段规则可命中。
  4. 其他连接继续检查 GEOIP;仍未命中时,由 FINAL,PROXY 收尾。

如果交换前两行,api.example.com 会先命中后缀规则,原本希望保留的单域名例外就失效了。同理,FINAL 是无条件兜底,应位于规则末尾;放在它后面的普通规则没有机会改变已经确定的结果。不要用增加第二条 FINAL 的方式修复前面的顺序错误。

结论:先写例外,再写范围

需要让某个子域名采用不同策略时,把它的 DOMAIN 条件放到相关 DOMAIN-SUFFIX 前面;保存后分别测试该子域名和另一个普通子域名,确认两条路径确实分开。

修改与验证按五步执行

以下流程以用户已经拥有自己的服务器或订阅、能够完成基础连接为前提。规则文件与 Home 中的服务器列表用途不同:更新服务器信息,不等于正在编辑的规则文件已经切换;同样,修改分流也不能修复失效的连接凭据。

  1. 备份配置

    进入 Config,先保留当前配置副本,记录正在使用的文件名称。涉及远程配置时,确认后续更新是否会覆盖本地修改。

  2. 确认姿态

    在 Home → Global Routing 选择 Config,并确认 Config 中选中的正是待测试文件;同时核对 Home 中默认服务器的选择。

  3. 只改一项

    在 Config 中打开目标配置的编辑入口,进入文本编辑,定位 [Rule],仅增加一条已知目标的 DOMAIN 规则,或只调整一处顺序,保存修改。

  4. 重建连接

    保存后重新建立 VPN 连接,并让测试应用发起新请求。已有长连接可能继续沿用原路径,反复刷新同一个页面不一定产生新的连接。

  5. 对照结果

    结合连接记录中可见的目标、策略与错误信息,核对实际结果。Connectivity Test 可辅助检查基础连通性,但不能单独证明某个网站命中了哪条规则。

命中正确却访问失败怎么排查

规则命中只说明选择了某条路径,并不保证该路径能够成功到达目标。检查时先看“是否选对策略”,再看“选中的路径是否可用”。以下是连接诊断中可能遇到的系统错误原文,不是规则解析器的固定报错;出现位置与完整描述可能随连接类型而不同。

报错:Connection refused

原因:连接被目标或中间设备主动拒绝,可能与服务未监听或端口填写错误有关,不能据此认定 DOMAIN 语法有误。

解法:先核对记录中的实际连接目标;若走 PROXY,检查自己已有服务器的地址与端口;若走 DIRECT,检查目标服务是否允许访问该端口。

报错:Operation timed out

原因:连接在等待期限内没有完成,可能发生在服务器不可达、目标无响应或网络丢弃数据时,单凭超时不能判断是哪条规则造成。

解法:先核对最终策略,再用同一网络测试基础连通性;保持配置不变逐项检查,避免同时切换 DNS、服务器与规则顺序。

没有报错,但策略不符合预期

完成测试后,把临时规则删除或改为明确需要的范围,再保存备份。可复查的最小记录应包含目标域名、实际目标 IP、预期策略、实际策略以及错误原文;凭这些信息,才能区分匹配边界、规则顺序与网络连通性三类问题。

App Store 正版核对