本文速览

本文适合已经导入自己的服务配置、准备修改 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 也不会因为表示拒绝就自动获得最高优先级。

1 条
首条命中规则决定该次匹配的策略
3 种
本文策略:PROXY / DIRECT / REJECT
4 类
本文规则:DOMAIN-SUFFIX / IP-CIDR / GEOIP / FINAL

例如,下面两行都可以匹配 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,这条规则可能无法据此命中,流程便继续向下。

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 是说明语法用的示例域名,不是服务地址或可用线路。实际应用前,应把规则替换成自己的目标,并确认不会覆盖必要业务。

  1. 访问 ads.example.com 时,第一行域名规则命中,执行 REJECT,不再进入后续 DIRECT。
  2. 访问 www.example.com 时,第一行不匹配,第二行命中,执行 DIRECT。
  3. 直接访问 192.168.1.10 时,前两行域名规则不匹配,私有网段规则可命中 DIRECT。
  4. 其他目标若被 GEOIP 识别为 CN,执行 DIRECT;仍未匹配时,由 FINAL 执行 PROXY。

FINAL,DIRECT 也是合法的兜底选择,含义是“仅明确命中的代理规则走代理,其余直连”。它与 FINAL,PROXY 没有脱离使用目标的统一优劣。这里的 PROXY 表示交给代理路径处理,并不自动创建服务器;当前选择的代理必须可用,配置中引用的策略也必须存在。

不要直接覆盖已有配置的全部规则。先保留原文件与策略组定义,再在副本中调整规则段。若现有规则使用的是自定义策略组名称,应保留其含义,不要机械地全部替换成 PROXY。

在 Config 中修改,并用新连接验证

以下按 Home、Config、Settings 的界面结构说明。不同平台编辑入口的按钮位置可能不同,但操作对象始终是 Config 中当前启用的配置文件。不要把服务器订阅更新与规则文件编辑混作同一步:更新服务器列表,不能代替保存并选中规则配置。

  1. 确认姿态

    进入 Home → Global Routing → Config。记下当前选中的服务器或策略组,测试期间不要同时切换代理出口。

  2. 保留副本

    进入 Config,找到当前选中的配置,先保留副本或导出备份,再打开该配置的编辑入口。确认不是在编辑另一份未启用的文件。

  3. 整理规则

    检查规则列表;若使用文本编辑,定位到 [Rule]。把具体例外移到宽泛规则前面,将新增规则放在 FINAL 上方,并保留所引用的策略定义。

  4. 保存启用

    保存后回到 Config,确认选中修改后的配置。返回 Home 重新建立连接,观察有无配置解析错误;出现错误时先恢复副本。

  5. 建立新请求

    关闭目标页面已有连接后重新打开,结合连接记录中的目标、匹配规则和策略核对结果。不要只刷新仍复用旧连接的页面。

验证时分别选择“应该命中例外”“应该命中范围”“应该进入 FINAL”的目标。先检查实际命中的规则,再检查连接是否成功。命中 PROXY 后失败,可能是代理连接或远端服务问题;命中 DIRECT 后失败,可能是本地网络、DNS 或目标服务问题,不能只凭打不开网页就认定优先级错误。

常见问题:规则写了,为什么去向仍不符合预期

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 版免费。按设备进入下载指南,再按快速上手导入自己的配置。

客户端买断 ≠ 线路套餐。本站不提供、不销售、不推荐节点或订阅;规则编辑以用户已有自己的服务配置为前提。