On Demand 管理的是系统 VPN 连接何时建立或断开,不是每个请求采用什么出站策略。本文适合已经能手动连接、希望按 Wi-Fi、蜂窝网络或域名条件自动连接的用户;按 Settings → On Demand 设置并逐项验证后,再核对 Home → Global Routing 与 Config 中的分流规则。
先分清 On Demand、连接状态与分流策略
Shadowrocket(小火箭)的按需连接交给 Apple 平台的系统 VPN 机制执行。网络环境变化或符合域名评估条件的请求出现时,系统可以依据已保存的配置决定是否建立连接。打开 On Demand 不等于隧道此刻已经连接,也不等于所有请求都采用代理出站。
这几层需要分别检查:On Demand 决定连接时机;Home 的连接开关与系统 VPN 状态反映当前连接;Home → Global Routing 决定流量处理姿态。选择 Config 时,再由当前配置中的规则决定具体请求采用什么策略。不要用“已经出现 VPN 标记”代替对实际请求的核对。
其中 Proxy、Direct 是整体处理姿态,Config 使用当前配置,Scene 按已设场景处理。它们与 On Demand 不是同一组开关。例如,系统可以已经按需建立隧道,但 Global Routing 仍处于 Direct;这时“自动连接成功”与“目标请求采用代理出站”是两个不同结论。
设置前先完成一次手动连接
本文以用户已有自己的服务商、连接信息或订阅为前提。On Demand 不负责补齐服务端地址、认证信息或订阅内容。先让同一套配置在手动连接下正常工作,再增加自动触发条件,才能把连接故障与条件匹配问题分开。
- 在 Home 核对已有连接条目,确认地址、端口与协议参数来自自己的服务信息。端口应逐项照录,不要因为启用 On Demand 就统一改为
443。 - 手动打开连接开关。如系统要求添加 VPN 配置,阅读提示并完成授权;这一授权与配置内的分流规则不同。
- 访问自己有权使用的目标服务,确认当前配置可用。需要规则分流时,核对 Home → Global Routing 是否为 Config,以及 Config 中当前选中的文件。
- 进入 Settings → On Demand,先记录原有条件,再逐项修改。保存后到系统“设置”中搜索“VPN”,进入 Shadowrocket 对应的 VPN 配置,核对按需连接是否已启用。
排查期间保留一份原设置记录即可,不必反复删除 VPN 配置。删除配置可能同时移除系统侧的授权与按需状态,导致下一次连接重新出现权限提示,也使前后两次测试不再使用相同条件。
按 Wi-Fi 名称与蜂窝网络设置连接条件
先把期望写成具体条件:哪一个 Wi-Fi 名称下需要断开,其他 Wi-Fi 下是否连接,蜂窝网络下是否连接。Wi-Fi 名称指 SSID,不是路由器管理地址,也不是当前设备分配到的局域网 IP。名称应按实际值核对大小写、空格及后缀。
指定 Wi-Fi 条件示例
- 入口
- Settings → On Demand
- 网络类型
- Wi-Fi
- SSID 示例
Home-WiFi- 动作
- Disconnect
仅当你希望在此网络停止隧道时使用;Home-WiFi 是示例名称,需要改为设备实际连接的 SSID。
蜂窝网络条件示例
- 入口
- Settings → On Demand
- 网络类型
- 蜂窝网络
- 动作
- Connect
- 验证方式
- 关闭 Wi-Fi 后发起新请求
蜂窝条件与指定 SSID 条件分别核对,不需要为蜂窝网络填写 Wi-Fi 名称。
在实际界面提供的条件与动作中,Connect 表示满足条件时建立连接,Disconnect 表示满足条件时断开。不要把“指定 Wi-Fi 下断开”理解为“所有 Wi-Fi 都断开”。如果同时存在广泛匹配的 Wi-Fi 条件和指定 SSID 条件,应检查它们的优先关系,避免宽泛条件先覆盖了特定条件。
- 同名与异名:同一路由器的两个频段若使用不同 SSID,应分别核对;仅填写其中一个名称不能据此判断另一个也会匹配。
- 权限与名称:若条件页无法取得当前 Wi-Fi 名称,先按系统提示检查相关权限。名称为空时不要继续用空值做匹配测试。
- 认证网络:需要网页认证的 Wi-Fi,应先完成该网络的接入认证,再验证隧道与目标服务;接入尚未完成不是服务端参数错误的证据。
- 条件交叠:先保留一个特定网络条件和一个明确的其余网络处理方式,验证成功后再增加其他 SSID。
域名触发不是 DOMAIN-SUFFIX 分流
网络条件关心“设备接入了什么网络”,域名条件关心“系统正在处理什么域名相关请求”。域名按需评估由系统执行,与 DNS 解析和已配置的评估条件有关,不能简化为浏览器里输入一段文字就必定连接。应用是否重新发起解析、是否复用缓存或既有连接,都会影响测试现象。
在 Settings → On Demand 中配置域名相关条件时,填写主机名而不是完整网页地址。例如,测试域名可写成 portal.example.com,不要写成 https://portal.example.com:443/account。后者混入了协议、端口和路径,不能当作域名字段使用。示例域名只用于说明格式,不是可用服务地址。
| 配置位置 | 解决的问题 | 填写内容 |
|---|---|---|
| Settings → On Demand | 符合域名评估条件时,是否需要建立系统 VPN 连接 | 按域名字段要求填写主机名,并核对对应评估动作 |
| Config 中的规则 | 连接建立后,该请求采用哪种策略 | DOMAIN-SUFFIX,example.com,PROXY |
| Config 中的兜底项 | 前面的规则均未命中时采用什么策略 | FINAL,DIRECT |
系统的域名评估可以包含“必要时连接”的逻辑,例如与解析失败或指定解析条件有关;它不等同于“所有匹配域名一律立即连接”。应以当前条件页实际提供的选项为准。如果界面没有提供某个 DNS 评估字段,不要把其他配置格式的字段直接填入域名列表。
结论:用新请求验证域名条件
保留一个自己可控的域名条件,退出既有访问后重新发起请求,同时观察系统 VPN 状态;确认连接触发后,再看该请求命中的分流策略,不要同时修改两层规则。
三种常见组合与验证顺序
组合配置应先明确每种网络的预期,再考虑域名例外。下面列出的都是设置思路,不意味着某类网络天然安全或必须断开。是否连接取决于你自己的访问需求,以及当前服务是否允许该网络环境。
| 使用目标 | 条件思路 | 验证步骤 |
|---|---|---|
| 指定 Wi-Fi 不连接,外出连接 | 指定 SSID 使用 Disconnect;其他 Wi-Fi 与蜂窝网络按需求使用 Connect | 先连指定 SSID,再切换其他 Wi-Fi,最后关闭 Wi-Fi 测试蜂窝网络 |
| 仅在蜂窝网络自动连接 | 蜂窝网络使用 Connect;Wi-Fi 明确设置为不自动建立连接的处理方式 | 分别在 Wi-Fi 和蜂窝网络下发起新请求,核对系统 VPN 状态 |
| 仅在需要特定域名时评估连接 | 使用域名评估条件,避免另有广泛 Connect 条件提前建立连接 | 先确认隧道未连接,再访问自己的测试域名,并检查解析与连接状态 |
- 每轮测试只改一个条件,记录当前网络、实际 SSID、动作以及系统 VPN 状态。
- 切换网络后等待系统完成接入,再发起一次新的目标请求;不要用仍在播放的旧连接判断新条件。
- 先观察是否建立隧道,再观察目标请求是否成功;两项结果分别记录。
- 若结果不符合预期,先恢复上一组可用条件,再检查是否存在重叠条件或系统侧按需状态未启用。
频繁在多个条件间来回修改,容易把网络切换、域名解析缓存、路由姿态和服务端可用性混在一起。固定测试顺序能减少这种混淆,但不能据一次成功就推断所有应用的后台请求都会采用相同触发时机。
开关反复变化或没有触发时,按现象排查
为什么手动关掉后又自己连上了?
先查看 Settings → On Demand 是否仍有匹配当前网络的 Connect 条件,再到系统“设置”搜索“VPN”,核对对应配置的按需连接状态。需要暂停自动连接时,应先关闭按需机制,再关闭 Home 的连接开关;只关闭当前连接,后续请求仍可能再次触发连接。
切到蜂窝网络了,为什么没有自动连接?
先确认设备确实已使用蜂窝数据,而不是仍连接 Wi-Fi;随后检查蜂窝条件的动作及系统侧按需状态,再发起一个新请求。若仍未连接,临时停用 On Demand 并手动连接同一条目,以区分条件未匹配与服务本身不可用。
指定 Wi-Fi 设置了 Disconnect,为什么还是连着?
核对当前 SSID 的完整名称,检查是否接入了名称相似的另一频段或访客网络,再检查是否存在更宽泛的连接条件。保存后重新接入该 Wi-Fi,观察系统 VPN 状态;不要只依据条件编辑页中的开关判断。
访问域名没触发,是不是规则写错了?
先检查 Settings → On Demand 的域名字段是否误填完整 URL,再确认测试请求确实发生了新的域名解析,并核对域名评估动作。Config 中的 DOMAIN-SUFFIX 只能处理分流,不能代替系统按需连接条件。
已经自动连接,为什么访问结果还是不对?
回到 Home → Global Routing 核对当前姿态;使用 Config 时,检查当前配置中的 DOMAIN-SUFFIX、IP-CIDR、GEOIP 与 FINAL 顺序。连接触发成功后,目标请求仍可能命中 DIRECT 或其他策略,应继续检查分流而不是重复添加 On Demand 条件。
如果曾删除系统 VPN 配置,先回到 Shadowrocket 手动连接并完成必要的系统授权,再检查 On Demand 是否已重新保存。若正在测试的系统 VPN 配置不是 Shadowrocket 对应条目,也应先选对配置,避免把另一份配置的状态当作本次测试结果。