本文适合已经导入自己的服务配置、准备修改 Shadowrocket 分流规则的用户。先确认 Home → Global Routing 使用 Config,再按“具体例外在前、范围规则在后、FINAL 放末尾”的顺序编辑当前配置。读完可区分规则匹配与连接可用性,定位域名误走 DIRECT、REJECT 未生效和 FINAL 提前截断等问题。
先确认 Global Routing:规则生效的前提
Shadowrocket(小火箭)的 Home 用于连接与选择路由姿态,Config 管理规则配置文件,Settings 管理运行设置。把规则写入文件不等于已经使用这份文件:需要同时确认当前选中的配置,以及 Home → Global Routing 的状态。本文以用户已有自己的服务商与订阅、连接参数已经可用为前提,不涉及线路获取。
Global Routing 下的 Config 按当前配置进行分流;Proxy 和 Direct 用于整体改变流量去向;Scene 按所配置的场景条件选择行为。这里的界面词 Proxy 与规则中的策略关键字 PROXY 不应混为一谈:前者是路由姿态,后者是一条规则命中后的处理方式。
Config
推荐按当前配置中的规则处理连接。本文的顺序调整与 FINAL 示例均在这一姿态下验证。
适合:需要按域名、目标 IP 与地区规则分流。
Proxy
以整体代理方式处理流量,不适合用来确认自定义 DIRECT 或 REJECT 规则是否命中。
适合:临时对照代理路径,缩小规则排查范围。
Direct
以整体直连方式处理流量。此时某个网站可以访问,不能据此证明配置中的 PROXY 规则正确。
适合:对照本地网络的直连表现。
Scene
依照已配置的场景条件决定行为。排查规则时应先确认当前场景实际选择的路由方式。
适合:已经明确配置网络环境切换条件的使用方式。
判断:先固定姿态,再调整规则
测试期间先把 Home → Global Routing 设为 Config,并保持同一份配置处于选中状态。每轮只修改一项,避免把场景切换或整体代理的结果误认为规则优先级发生变化。
优先级按行序,不按规则名称或域名长度
规则按从上到下的顺序检查,首条匹配成功后即使用该条策略,不再继续寻找“更精确”的后续规则。因此,一条较宽的 DOMAIN-SUFFIX 可以挡住下方较具体的域名规则;REJECT 也不会因为表示拒绝就自动获得最高优先级。
例如,下面两行都可以匹配 ads.example.com。第一行先命中,结果为 DIRECT;第二行虽然更具体,却没有机会执行。这是顺序问题,不是 REJECT 失效。
DOMAIN-SUFFIX,example.com,DIRECT
DOMAIN-SUFFIX,ads.example.com,REJECT
把具体例外移到前面后,ads.example.com 及其下级域名先命中 REJECT,其他属于 example.com 的域名才会继续匹配 DIRECT。DOMAIN-SUFFIX 匹配目标域名本身及其子域名,并不是对任意字符串做包含判断。
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT
“从上到下”针对当前实际使用的规则序列。若配置还引用了外部规则集合,也需要检查这些规则在配置中的位置;不能只看新增的两行,而忽略更靠前的匹配项。
DOMAIN-SUFFIX、IP-CIDR 与 GEOIP 各检查什么
不同规则读取的信息不同。域名规则检查主机名;IP-CIDR 检查目标 IP 是否落入指定网段;GEOIP 按 IP 地理数据库分类。域名可用并不意味着一定命中域名规则,IP 属于某个地区也不等于网站运营方或域名后缀属于该地区。
| 规则示例 | 匹配依据 | 使用注意 |
|---|---|---|
DOMAIN-SUFFIX,example.com,DIRECT |
目标主机名 | 覆盖 example.com 与其子域名;具体例外应置于本行上方。 |
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve |
目标 IPv4 地址所属网段 | 这里示范私有地址范围;访问该网段仍需要本地网络具备相应路由。 |
GEOIP,CN,DIRECT |
目标 IP 在地理数据库中的分类 | 可能需要解析域名获得 IP;分类受数据库和实际解析结果影响。 |
FINAL,PROXY |
前面的规则均未命中 | 不填写域名或网段,放在规则序列末尾。 |
no-resolve 表示不为了匹配这条 IP 规则而额外发起域名解析。它不是“关闭 DNS”,也不会替代正常的域名解析过程。如果请求只有主机名、此时又没有可用的目标 IP,这条规则可能无法据此命中,流程便继续向下。
- 需要固定某个域名的去向时,优先写清该域名规则,不要仅依赖它当前解析出的 IP。
- 同一域名使用 CDN 时,解析结果可能变化;GEOIP 的命中结果也可能随目标 IP 改变。
192.168.0.0/16不是全部私有地址范围;实际使用其他网段时,应按本地网络地址补充对应规则。- DOMAIN-SUFFIX 不按 URL 路径匹配。填写域名即可,不写
https://、端口或/path。
FINAL 兜底写法:先例外,后范围,最后兜底
FINAL 没有匹配条件,会接住前面没有命中的连接。推荐只保留一条有效的 FINAL,并放在规则列表末尾。在它后面追加规则,即使语法正确,也无法获得正常的匹配机会。规则片段在完整配置文件中属于 [Rule] 段,不应粘贴到服务器地址、订阅地址或协议参数字段。
[Rule]
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
这份示例表达的是:先拒绝指定域名,再放行明确的域名与私有网段,随后按 GEOIP 处理 CN 地址,其余交给 PROXY。example.com 是说明语法用的示例域名,不是服务地址或可用线路。实际应用前,应把规则替换成自己的目标,并确认不会覆盖必要业务。
- 访问
ads.example.com时,第一行域名规则命中,执行 REJECT,不再进入后续 DIRECT。 - 访问
www.example.com时,第一行不匹配,第二行命中,执行 DIRECT。 - 直接访问
192.168.1.10时,前两行域名规则不匹配,私有网段规则可命中 DIRECT。 - 其他目标若被 GEOIP 识别为 CN,执行 DIRECT;仍未匹配时,由 FINAL 执行 PROXY。
FINAL,DIRECT 也是合法的兜底选择,含义是“仅明确命中的代理规则走代理,其余直连”。它与 FINAL,PROXY 没有脱离使用目标的统一优劣。这里的 PROXY 表示交给代理路径处理,并不自动创建服务器;当前选择的代理必须可用,配置中引用的策略也必须存在。
不要直接覆盖已有配置的全部规则。先保留原文件与策略组定义,再在副本中调整规则段。若现有规则使用的是自定义策略组名称,应保留其含义,不要机械地全部替换成 PROXY。
在 Config 中修改,并用新连接验证
以下按 Home、Config、Settings 的界面结构说明。不同平台编辑入口的按钮位置可能不同,但操作对象始终是 Config 中当前启用的配置文件。不要把服务器订阅更新与规则文件编辑混作同一步:更新服务器列表,不能代替保存并选中规则配置。
-
确认姿态
进入 Home → Global Routing → Config。记下当前选中的服务器或策略组,测试期间不要同时切换代理出口。
-
保留副本
进入 Config,找到当前选中的配置,先保留副本或导出备份,再打开该配置的编辑入口。确认不是在编辑另一份未启用的文件。
-
整理规则
检查规则列表;若使用文本编辑,定位到 [Rule]。把具体例外移到宽泛规则前面,将新增规则放在 FINAL 上方,并保留所引用的策略定义。
-
保存启用
保存后回到 Config,确认选中修改后的配置。返回 Home 重新建立连接,观察有无配置解析错误;出现错误时先恢复副本。
-
建立新请求
关闭目标页面已有连接后重新打开,结合连接记录中的目标、匹配规则和策略核对结果。不要只刷新仍复用旧连接的页面。
验证时分别选择“应该命中例外”“应该命中范围”“应该进入 FINAL”的目标。先检查实际命中的规则,再检查连接是否成功。命中 PROXY 后失败,可能是代理连接或远端服务问题;命中 DIRECT 后失败,可能是本地网络、DNS 或目标服务问题,不能只凭打不开网页就认定优先级错误。
- Connectivity Test:用于检查所选服务器的连通性表现,不能单独证明某个网站命中了哪条规则。
- Settings → DNS:当记录中的目标 IP 与预期不同,或域名无法解析时,再检查解析设置;一次只改变一个选项。
- Settings → On Demand:用于按条件触发连接,不负责改变规则行序。若测试时连接自动恢复,应同时检查这里的启用状态与条件。
常见问题:规则写了,为什么去向仍不符合预期
REJECT 写在下面,为什么还是直连?
先检查其上方是否已有匹配范围更大的 DIRECT 规则。例如 example.com 的 DOMAIN-SUFFIX 会先匹配其所有子域名。把需要拒绝的具体域名移到该范围规则上方,保存并重新建立连接,再查看实际命中项。
FINAL 后面加了规则,为什么没有效果?
FINAL 在到达它时就会兜底,后面的规则无法继续匹配。将新增规则移到 FINAL 前面,并检查是否存在第二条更靠前的 FINAL。不要仅把最后一行改成另一种策略,却保留前面的提前兜底。
改成 Proxy 能打开,Config 却打不开,怎么查?
回到 Home → Global Routing → Config,重新请求同一目标,检查它是否命中了 DIRECT 或 REJECT。若去向符合配置但不符合需求,修改那条规则或添加更具体的例外;若已经命中 PROXY,再核对策略组实际选择的出口。
更新自己的订阅后,需要重写规则吗?
先确认更新对象。服务器订阅通常更新连接条目;远程规则配置更新则可能替换本地文件内容。更新前保留本地修改,更新后检查当前配置与自定义规则是否仍在。只有确认规则丢失或引用的策略变化后,再调整相应部分。
网页部分内容失败,要给整个域名组放行吗?
先查看失败请求的实际主机名。页面可能同时使用多个域名,主文档命中 DIRECT 不代表图片或接口也命中同一条规则。仅对确认需要的目标添加例外,并把例外放在宽泛的 REJECT 或其他范围规则之前。
结论:按命中记录定位,不按页面观感猜测
保留一条失败请求的目标、命中规则与最终策略,每次只调整对应规则的位置或条件。若命中已经正确,就停止改顺序,转而排查 DNS、所选代理与目标服务。
获取 Shadowrocket 与查看配置教程
iPhone / iPad 版通过 App Store 获取,$2.99 一次性付费,开发者为 Shadow Launch Technology Limited,系统要求以 App Store 页面标注为准;Mac(Apple 芯片 / Intel)、Windows、安卓、Linux 版免费。按设备进入下载指南,再按快速上手导入自己的配置。
客户端买断 ≠ 线路套餐。本站不提供、不销售、不推荐节点或订阅;规则编辑以用户已有自己的服务配置为前提。