On Demand 用于让系统根据网络条件建立或处理 VPN 连接,不负责决定每条请求的出站策略。本文适用于已在 Shadowrocket(小火箭)中配置好自有服务、且手动连接正常的用户;按顺序完成 Wi-Fi、蜂窝网络与域名条件的设置和验证,可区分自动连接、规则分流与手动断开的不同结果。
On Demand 与规则分流的边界
On Demand 是系统按需连接机制的设置入口,位于 Settings → On Demand。它描述的是“何时需要 VPN 连接”,不是“某个网站必须走哪条线路”。当前开关、条件列表和默认行为以当前应用显示为准;首次设置建议只启用一种网络条件,验证通过后再加入例外。
规则分流发生在隧道建立之后,由 Home 中的 Global Routing 和当前 Config 决定。选择 Config 时,请求按所选配置处理;Proxy、Direct 与 Scene 是其他路由姿态,不是 On Demand 的触发条件。自动连上不等于所有请求都经过代理,选择 Direct 也不等于已经断开系统 VPN。
网络切换、域名解析或后续网络访问可能促使系统重新评估条件,具体取决于保存的规则及系统状态。不要把 On Demand 理解为固定间隔的连接检测器:隧道建立、远端服务可达、目标网页可访问,是三个需要分别验证的环节。
结论:先确认隧道,再检查路由
自动连接后网页仍异常时,先确认系统 VPN 是否已连接,再核对 Home → Global Routing 和当前 Config;不要同时修改 On Demand 与分流规则,否则无法判断哪项修改产生了结果。
设置前:建立手动连接基线
手动连接基线是关闭自动触发后仍能重复得到的连接结果。推荐先保持现有协议参数不变,在 Home 使用已经配置好的服务完成一次连接;本文以用户已有自己的服务商与订阅为前提,不涉及服务来源。
- 进入 Settings → On Demand,记录原有设置,暂时关闭按需连接,避免排查时系统再次发起连接。
- 返回 Home,选中准备使用的服务。若通过 Subscribe 导入,先确认更新结果和实际选中项;更新列表不等于自动选中了可用项。
- 检查 Home → Global Routing。需要按配置分流时选择 Config,并到 Config 确认当前使用的文件。
- 打开 Home 的连接开关;首次出现系统 VPN 配置授权提示时,按系统流程确认。授权完成并不代表远端服务已经连通。
- 分别访问一个原本可直达的页面和一个需要现有代理策略的目标,记录连接状态、错误信息及当前网络类型。
- 断开后再连接一次。若手动连接本身不稳定,先检查地址、端口、认证与 DNS,再配置自动触发。
Wi-Fi:用 SSID 区分网络条件
SSID 是 Wi-Fi 网络名称,不是路由器管理地址,也不是接入点的硬件地址。按 SSID 设置时,应从设备当前 Wi-Fi 信息中核对完整名称,保留空格、大小写与符号;不要自行假定名称匹配会忽略这些差异。
Wi-Fi 条件的推荐取值取决于使用目的。例如,希望在家用网络不自动建立隧道、离开家后再按需连接,可以把家用 SSID 作为例外;若所有网络都需要连接,则不必添加这类例外。“家用”只是用户赋予的用途,不是系统能识别的安全等级。
- 在设备 Wi-Fi 设置中记录当前名称,例如
Home-5G。该名称仅作示例,实际填写自己的 SSID。 - 进入 Settings → On Demand,查找当前界面提供的 Wi-Fi 与 SSID 条件,先阅读列表说明,确认它表示包含匹配还是排除匹配。
- 按目标选择对应动作。若希望某 SSID 不自动连接,应使用该界面所支持的排除或断开行为;若仅提供忽略行为,不要把“忽略”当作“立即断开”。
- 保存并启用 On Demand,在该 SSID 下发起一次新请求,再切换到另一个已知网络重复测试。
- 如果应用无法获得当前 SSID,检查系统是否提示相关权限以及当前系统的访问限制。无法识别的名称不能作为已成功命中的证据。
| 测试网络 | 设置目标示例 | 需要观察的结果 |
|---|---|---|
Home-5G | 不主动建立新隧道 | 断开后发起请求,检查是否重新连接 |
| 另一个已知 SSID | 满足条件时自动连接 | 检查系统 VPN 状态及目标访问结果 |
| 需要网页认证的 Wi-Fi | 先完成网络接入 | 确认认证页可打开,再测试按需连接 |
公共 Wi-Fi 可能先要求网页认证;这时接入网络不等于已经能访问互联网。若认证页受连接行为影响,可暂时关闭 On Demand 并断开 VPN,完成网络认证后再恢复原设置。相同 SSID 也可能出现在不同地点,不能仅凭名称判断网络身份或作出安全承诺。
蜂窝网络:单独验证切换后的连接
蜂窝条件是设备使用移动数据时的按需行为,与 Wi-Fi 条件应分开记录。默认取值以当前应用显示为准;如果目标是在离开 Wi-Fi 后继续按需连接,建议先验证蜂窝网络本身可用,再启用对应条件,不要直接把 Wi-Fi 下的成功结果当作蜂窝测试结果。
- 进入 Settings → On Demand,检查当前界面提供的蜂窝网络条件并保存目标行为。
- 关闭 Wi-Fi,确认设备确实正在使用蜂窝网络,且系统允许 Shadowrocket 使用移动数据。
- 发起一次新请求,记录从网络切换到 VPN 状态变化的过程,不以单次页面加载耗时判断服务质量。
- 重新连接 Wi-Fi,检查 SSID 条件是否按预期生效;再切回蜂窝网络,复测一次。
- 若只有蜂窝网络失败,保留 On Demand 设置,改用手动连接测试同一服务,以区分触发失败和远端连接失败。
网络切换会改变本地地址、路由和可达性,已有 TCP 连接可能中断,应用需要重新建立连接。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 的传输方式和参数并不相同;On Demand 不会修正这些协议的地址、端口或认证错误,也不能保证每个既有会话在切换后连续保持。
域名条件:先区分触发域名与分流规则
域名触发是系统按需规则中的连接评估条件,不等同于 Config 中的域名分流。Apple 系统的域名按需机制可结合域名解析条件决定是否尝试建立连接,并非看到任意网页地址就必然启动隧道。Shadowrocket 当前界面是否提供对应编辑项、支持哪些匹配与动作,以实际显示为准;未显示的能力不要通过猜测配置键添加。
域名字段应填写主机名,而不是整段 URL。例如,目标页面位于 https://portal.example.com/account,用于域名条件的主机名是 portal.example.com。不要带上 https://、路径 /account 或端口 :443;通配符和子域覆盖范围则必须按该字段说明确认。
- 精确主机名:
portal.example.com用于表达这一主机。是否包含其他子域不能仅凭名称推定。 - 域名范围:
example.com是否覆盖api.example.com,取决于该条件的匹配语义;没有说明时分别添加和验证。 - 缓存影响:已有 DNS 缓存或复用连接可能使新一轮访问没有产生预期的解析事件。应结合新请求与连接记录判断,而不是连续刷新同一页面得出结论。
- 应用差异:应用自行解析域名、使用加密 DNS 或直接访问 IP 时,不能假定它一定触发系统域名按需条件。
Config 中的规则解决的是隧道内如何出站。下面是配置规则区的语法示例,不是 Settings → On Demand 的输入内容;其中 PROXY 必须能在当前配置中解析为有效策略。这段规则本身不会注册系统级域名触发条件。
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX 用于域名后缀匹配,FINAL 负责前面规则均未命中时的最终策略;此例将其他请求交给 DIRECT。若只需要“访问特定域名时走代理”,通常应先使用 Config 分流并保持隧道按需要连接,而不是为了这个目标叠加域名触发。修改前备份现有规则,避免用示例覆盖完整配置。
手动开关:断开不等于停用自动触发
Home 的连接开关控制当前连接,On Demand 控制后续满足条件时的系统行为。按需连接启用后,手动断开可能只改变当前状态;下一次网络变化或符合条件的请求仍可能触发连接。具体时序由系统与保存的条件决定,不应把再次连接直接判断为开关失效。
刚在 Home 关掉,怎么又连上了?
先到 Settings → On Demand 关闭按需连接,再返回 Home 断开。随后发起一次请求验证;若仍自动连接,再到系统 VPN 设置核对是否存在其他启用按需连接的配置。
退出 Shadowrocket 后,还会自动连接吗?
不要把离开应用界面当作停用系统 VPN 配置。需要暂停自动触发时,应明确关闭 Settings → On Demand,并检查系统 VPN 状态,而不是只返回主屏幕。
切到家里 Wi-Fi,为什么原来的连接还在?
先检查 SSID 条目匹配是否正确,再确认对应动作是忽略还是断开。忽略条件不一定撤销已有连接;可先手动断开,再测试该网络下是否会新建连接。
VPN 显示连接了,为什么目标网站还是打不开?
返回 Home 核对 Global Routing 和选中服务;若使用 Config,再检查当前文件中的规则与 DNS。先用相同网络手动连接复测,确认问题是否与自动触发无关。
验收与回退:按固定顺序定位失败环节
验收记录用于把“没有触发”与“连接后不可用”分开。推荐按下表逐项验证,每完成一行再调整下一项;不要同时更新 Subscribe、切换协议、修改 DNS 和改变 SSID 条件,否则无法保留可比较的基线。
| 现象 | 优先检查 | 下一步操作 |
|---|---|---|
| 网络切换后没有自动连接 | On Demand 开关、网络条件、SSID 识别 | 保存设置后重新切换网络并发起新请求 |
| 系统尝试连接后失败 | 相同服务能否手动连接 | 关闭按需触发,核对服务参数与网络可达性 |
| 仅域名条件没有反应 | 匹配语义、解析条件、缓存与应用解析方式 | 先验证网络条件,再单独复测域名条件 |
| VPN 已连接但请求失败 | Global Routing、Config、DNS 与远端服务 | 查看可用连接记录,区分解析失败和出站失败 |
| 希望暂时停止所有自动连接 | 应用及系统中的按需开关 | 先停用 On Demand,再断开当前 VPN |
回退操作应恢复最小可用状态:关闭 Settings → On Demand,保留原有服务和 Config,在 Home 手动连接。恢复成功后,先添加一个 Wi-Fi 条件,再测试蜂窝条件,最后处理确有需要的域名条件。共享排查记录时隐藏订阅凭据、服务密码和个人网络名称,仅保留必要的状态与错误描述。
结论:用三次独立测试完成验收
分别完成已知 Wi-Fi、蜂窝网络和手动暂停三次测试,记录“是否触发、是否连通、是否按规则出站”。只有三项结果都符合目标,再保留 On Demand 长期启用。