本文适合已有服务商与可用连接、准备编辑 Shadowrocket(小火箭)配置的用户。先确认 Global Routing 使用 Config,再按“具体例外在前、宽泛范围在后、FINAL 最后”的方式整理规则;通过一份最小配置、冲突示例和验证步骤,区分“规则没有命中”与“命中后连接失败”。
一、先确认 Config:规则列表何时参与分流
自定义规则不是连接开关,也不负责提供连接所需的服务器信息。开始前,应已从你的服务商处获取订阅或连接参数,并确认所选连接本身可用。本文以 iPhone / iPad 的 Home、Config、Settings 页面名称说明操作;其他平台应在对应的路由与配置入口核对相同设置。
在 Home 检查 Global Routing。使用 Config 时,当前生效配置中的规则才是排查分流的主要依据。Proxy 与 Direct 是全局路由姿态,不能与某一行规则末尾的 PROXY、DIRECT 策略混为一谈;Scene 则需结合当前场景的设置判断,不能直接当作 Config 的同义词。
这条流程描述的是参与配置分流的请求,不表示每个系统请求都必然按完全相同的路径处理。验证时应从一个明确的目标域名和一条新连接开始,不要仅凭状态栏出现 VPN 标记就认定规则已经生效。
- Home:核对连接状态、所选连接,以及 Global Routing 当前姿态。
- Config:核对实际使用的配置文件;编辑一份未选中的文件不会改变当前分流。
- Settings → On Demand:控制符合条件时的自动连接行为,不决定 DOMAIN-SUFFIX 与 FINAL 谁先匹配。
二、规则语法:匹配条件与执行策略分开读
常见规则由“类型、匹配值、策略”构成,字段之间使用英文逗号。类型说明检查什么,匹配值限定范围,策略决定命中后的动作。FINAL 不需要匹配值,所以通常只有两个字段。不要使用中文逗号,也不要把解释文字直接接到策略名称后面。
| 规则类型 | 示例 | 检查范围 |
|---|---|---|
DOMAIN | DOMAIN,login.example.com,PROXY | 精确匹配 login.example.com,不自动包含其子域名。 |
DOMAIN-SUFFIX | DOMAIN-SUFFIX,example.com,DIRECT | 匹配 example.com 本身及其子域名,如 www.example.com。 |
IP-CIDR | IP-CIDR,192.168.50.0/24,DIRECT | 检查目标 IPv4 地址是否落入指定网段;/24 不是端口号。 |
GEOIP | GEOIP,CN,DIRECT | 按目标 IP 在本地 GeoIP 数据中的地区分类判断。 |
FINAL | FINAL,PROXY | 处理前面的规则均未命中的请求。 |
域名规则中的匹配值不带 https://、路径、查询参数或端口。例如目标网址是 https://login.example.com:443/account,DOMAIN 的值仍写 login.example.com。IP-CIDR 则使用地址与掩码长度,不写网址。GEOIP 判断的是 IP 分类,不是网页语言、域名后缀或服务运营方所在地。
三、PROXY、DIRECT、REJECT 分别改变什么
策略位于规则末尾。命中只说明选定了处理动作,不保证目标一定可达:PROXY 仍依赖所选连接与远端网络,DIRECT 仍依赖本地网络,REJECT 则有意阻止连接。下面两张配置卡用于拆解规则,不是需要同时导入的完整配置。
按域名设置例外
- DOMAIN
- login.example.com,PROXY
- DOMAIN-SUFFIX
- ads.example.com,REJECT
- DOMAIN-SUFFIX
- example.com,DIRECT
精确例外和屏蔽子域放在整个域名范围之前,避免被较宽的条件提前覆盖。
按地址设置范围
- IP-CIDR
- 192.168.50.0/24,DIRECT
- GEOIP
- CN,DIRECT
- FINAL
- PROXY
只有确实需要直连该地址范围时才保留对应规则,FINAL 承接其余请求。
- PROXY:把匹配到的连接交给代理出站处理。它不是服务器地址,也不会自动创建可用连接;需要在 Home 核对所选连接或配置指定的策略目标。
- DIRECT:直接连接目标,不经过代理服务器。这不等于让请求绕开所有 VPN 处理,也不意味着目标必定能从当前网络访问。
- REJECT:拒绝匹配到的连接。它基于规则可识别的目标信息工作,不是网页内容过滤器,不能按同一 HTTPS 连接里的某一段页面内容选择性屏蔽。
同一个域名既承担登录又承担其他内容时,宽泛使用 REJECT 可能连登录也一起阻断。应先找到实际需要处理的目标,再缩小匹配范围。不要把“页面少了一块内容”直接视为规则正确,也不要把所有失败都归因于代理连接。
四、匹配顺序:更精确的规则不会自动获得优先权
规则列表从第一行向下检查,先命中的规则决定本次请求的策略,后续规则不再参与本次选择。DOMAIN 比 DOMAIN-SUFFIX 更精确,但这种精确程度不会自动抵消行序;同样,REJECT 也没有跨越前面 DIRECT 规则的特殊优先级。
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
DOMAIN,login.example.com,PROXY
FINAL,PROXY
在这份顺序中,访问 login.example.com 会先命中第一行,因为它属于 example.com 的子域。第二行虽然更具体,但已经没有执行机会。若希望登录域名走 PROXY、其他子域走 DIRECT,应交换前两行:
[Rule]
DOMAIN,login.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY
结论:把例外写在它所属的大范围之前
新增规则后,先检查它上方是否已有覆盖同一目标的条件。若有,应调整位置或缩小上方规则范围,而不是反复追加同一条规则。
“具体在前”是整理规则的实用方法,真正生效的原则仍是先命中者优先。例如某个特定 IP 必须使用 PROXY,就应放在可能覆盖它的 GEOIP 直连规则之前。不要假设域名规则一定优先于地址规则,或某一类策略天然比其他策略更强。
五、FINAL 为什么必须放在最后
FINAL 不再检查一个具体域名或地址,而是接住前面没有匹配到的请求。将它放到列表中间,就相当于在该位置结束其余规则的判断;即使下面仍写着语法正确的 DOMAIN、IP-CIDR 或 GEOIP,也无法处理已经被 FINAL 接住的请求。
[Rule]
DOMAIN,login.example.com,PROXY
DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.50.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
这是一份用于理解顺序的最小示例,不是适用于所有网络的默认方案。example.com 及其子域只作演示;局域网段也必须替换为实际需要访问的范围。若已有配置包含 [Rule],应在现有段内整理规则,而不是再次粘贴一个同名段。
login.example.com在第一行命中 PROXY,不会继续进入后面的域名后缀规则。ads.example.com在第二行命中 REJECT;其子域也属于该后缀范围。www.example.com命中第三行 DIRECT,前提是请求具有可供匹配的目标域名信息。- 目标地址
192.168.50.10属于示例 /24 网段,在前面未命中时由第四行处理。 - 其余请求继续检查 GEOIP,仍未命中才使用 FINAL 指定的 PROXY。
FINAL 的策略需要主动选择。FINAL,PROXY 表示未分类请求交给代理;FINAL,DIRECT 表示未分类请求直连。它们没有脱离网络需求的统一正确答案。实际维护时保留一个明确的 FINAL,并让它成为最后一条有效规则。
IP 类规则可能涉及域名解析,匹配结果也会受到实际目标 IP、DNS 结果及 GeoIP 数据的影响。直接使用 IP 地址发起的连接可能没有可用于 DOMAIN 匹配的域名。因此,域名访问与直接访问其 IP 不应被当作完全等价的测试。
六、保存与验证:先排除未生效,再检查连接失败
编辑前保存一份当前可用配置的副本。验证时一次只改一个目标或一个顺序,保留修改前后的结果,避免同时调整 DNS、路由姿态和规则列表,导致无法判断是哪项变化产生影响。
- 确认正在编辑的文件:进入 Config,核对当前使用的配置,再打开其编辑入口。远程配置与本地副本应分开辨认。
- 检查规则段:在
[Rule]内修改,保留英文逗号;核对策略名称拼写,并将 FINAL 移到末尾。 - 保存并应用:完成编辑后保存,确认该配置仍是当前使用项;回到 Home 检查 Global Routing 为 Config。
- 建立新连接:保存后重新连接,再重新打开测试页面或应用,避免把既有长连接的行为当成新规则的结果。
- 核对记录:在请求或连接记录中找到测试目标,查看可用的命中规则、策略与目标地址信息。先确认是否命中预期规则,再检查连接错误。
- 缩小问题范围:若命中 PROXY 后仍超时,检查所选连接与服务商状态;若命中 REJECT 后失败,则属于该策略的预期行为。
更新订阅与更新配置文件也要分清。连接订阅通常用于刷新服务商提供的连接信息,不等于已经改写当前 [Rule];远程配置更新则可能替换文件内容。需要长期保留的自定义规则,应明确放在哪份可维护的配置中,并在更新后再次核对。
不要用单次“能打开”证明分流正确。同一个页面可能连接主域名、图片域名和接口域名,分别命中不同规则。应逐个核对相关请求;排查时也不要公开带有认证信息的订阅链接或完整配置。
七、规则不生效时的常见问题
为什么加了 REJECT,目标还是能打开?
先检查它上方是否已有 DIRECT、PROXY 或 FINAL 覆盖同一目标,再确认 Global Routing 为 Config、编辑文件就是当前生效文件。随后重新建立连接,核对实际请求的域名;页面使用的接口域名可能与地址栏中的域名不同。
FINAL 后面还能继续写规则吗?
文件中可以出现后续文本,但 FINAL 已经接住此前未匹配的请求,后面的普通规则不会再有机会处理这些请求。把需要使用的规则移到 FINAL 上方,并清理多余的 FINAL,避免维护时误判。
开了 On Demand,为什么还是没有按域名分流?
Settings → On Demand 处理自动连接条件,不负责替换 Global Routing 的选择。回到 Home 检查 Config 姿态,再到 Config 核对所用文件;不要用自动连接开关代替路由设置。
订阅更新成功,为什么刚加的规则看起来没变?
先辨认更新的是连接订阅还是远程配置。前者不能作为规则已更新的证据;后者可能覆盖本地修改。打开当前配置检查实际的 [Rule] 内容,再用一个明确目标建立新连接验证。
同一个域名昨天直连,今天却命中其他规则?
先对比命中记录、实际目标 IP 和当前配置。DNS 返回地址变化可能改变 IP-CIDR 或 GEOIP 的判断,远程配置更新也可能改变行序。需要稳定按域名处理时,可把相应 DOMAIN 或 DOMAIN-SUFFIX 规则放在相关地址规则之前。
获取 Shadowrocket 与继续配置
iPhone / iPad 版在 App Store $2.99 一次性买断;Mac(Apple 芯片 / Intel)、Windows、安卓、Linux 版免费。iPhone / iPad 系统要求以 App Store 页面标注为准。进入下载页选择对应平台,再按教程导入已有配置与订阅。
客户端买断 ≠ 线路套餐。连接所需的订阅从你的服务商处获取;本站提供客户端获取与配置说明,不提供、不销售、不推荐节点或订阅。