On Demand 管理 VPN 隧道何时建立,不代替隧道建立后的分流规则。本文以用户已有自己的服务商与订阅、且能手动正常连接为前提,按指定 Wi-Fi、蜂窝网络、域名需求三个场景说明配置思路、验证顺序与停用方法;适合希望减少手动切换、又需要保留明确连接边界的 iPhone/iPad 用户。
先区分连接与分流
Shadowrocket(小火箭)的 Home 开关用于发起或停止连接;Settings → On Demand 管理按条件连接的行为;Home → Global Routing 决定连接之后如何处理流量。三个位置处理的是不同层次的问题,不能把“看到 VPN 状态”直接理解为“每个请求都走代理”。
On Demand 依赖 Apple 系统的 VPN 按需机制。网络发生变化或出现符合条件的网络需求时,系统会评估已保存的条件。它不是一个持续检查网页内容的定时器,也不会因为页面中出现某个文字就启动连接。退出 Shadowrocket 的前台界面,同样不等于关闭已经交给系统的按需配置。
建立最小测试配置
首次设置只启用一个条件,验证通过后再加入例外。不同应用界面语言与系统环境下,条件编辑入口的名称或可用字段可能不同;以下以 Settings → On Demand 为起点,按页面实际提供的网络、SSID、域名与连接动作字段操作,不把示例条件当成可直接导入的配置文件。
-
确认手动连接
进入 Home,选择已有的服务器,打开连接开关并完成系统 VPN 配置授权。运行 Connectivity Test,再访问一个已知可以正常打开的页面,分别记录测试结果与实际访问结果。
-
检查分流姿态
在 Home → Global Routing 查看当前选项。日常按规则使用时选 Config,并到 Config 确认正在使用的配置文件,避免自动连上后仍处于 Direct 而误判触发失败。
-
设置单一条件
进入 Settings → On Demand,先只配置一个网络条件。例如针对当前 Wi-Fi 的准确 SSID 设置连接动作;保存条件,并启用 On Demand。不要同时加入多个相互覆盖的条件。
-
重建测试环境
先离开目标网络,再重新加入,随后发起一次新的网页访问。观察系统 VPN 状态和 Home 状态,而不是只观察 On Demand 开关是否已经开启。
-
逐项添加例外
单一条件通过后,再补充家庭 Wi-Fi、蜂窝网络或域名需求。每加一项都重复切换与访问测试,失败时撤回最后一项,保留已经验证过的条件。
若页面没有提供独立的域名评估字段,不应把域名写进 SSID 一栏,也不要在 Rule 中加入一条域名规则后就视为完成按需触发。前者匹配对象错误,后者只改变已经进入隧道的流量路径。
按 Wi-Fi 与蜂窝网络设条件
Wi-Fi 条件通常围绕 SSID,也就是无线网络名称。SSID 不是路由器管理地址,也不是设备名称。建议从系统当前连接的网络信息核对并填写,保留空格、大小写与标点;例如 Home-WiFi 和 Home-WiFi-5G 应按两个网络处理,不能因为来自同一路由器就认为一定匹配。
两种网络条件的设置边界
指定 Wi-Fi
- 先确定准确 SSID,再选择符合需求的连接或断开动作。
- 如家庭 Wi-Fi 希望保持断开,将其作为明确例外,并检查是否被更宽泛的 Wi-Fi 条件提前覆盖。
- 遇到需网页认证的访客网络,先完成网络认证,再测试按需连接。
蜂窝网络
- 需要设备具备并启用蜂窝数据连接;仅 Wi-Fi 的 iPad 不适用此条件。
- 以实际网络接口为准,连接手机热点时,本机通常仍属于 Wi-Fi 环境。
- 测试时断开 Wi-Fi,确认蜂窝数据可用,再发起新的访问请求。
先写清每种网络下希望“连接”还是“断开”,再配置条件;网络名称本身不能证明网络可信。
多个按需条件存在匹配顺序时,应让具体例外先于广泛条件。例如先处理家庭 SSID 的断开需求,再处理其他 Wi-Fi 的连接需求。请按实际界面提供的排序方式核对;不要假设新添加的条件必然具有更高优先级。兜底条件过宽,是“家庭网络明明设了例外却仍然连接”的常见检查方向。
- 网络变化:从 Wi-Fi 切到蜂窝网络后,旧连接可能短暂保留或重新建立,应以切换后的新请求验证。
- 系统权限:若 SSID 无法识别,核查系统对相关网络信息的访问限制及页面提示,不要用空字符串替代网络名称。
- 自动断开:仅设置连接条件,不等于离开该网络就一定执行断开;需要同时检查其他条件与默认行为。
域名触发不等于域名分流
域名相关按需机制通常由系统对域名解析需求进行评估,而不是逐个读取浏览器地址栏。若界面提供这类条件,应填写域名,如 example.com,而不是 https://example.com/path。匹配范围和子域名行为应以该字段说明为准,不能直接套用 Rule 中 DOMAIN-SUFFIX 的语义。
Apple 的按需机制中,域名评估可以在满足解析条件时要求连接,并非所有域名访问都必然无条件建立隧道。因此,“访问目标域名却没立即连接”需要同时检查评估动作、当前 DNS 结果和缓存,不能只检查拼写。浏览器已有连接、应用自身的加密 DNS 或直接使用 IP 地址,都可能让预期的系统域名解析需求没有出现。
| 位置 | 处理的问题 | 验证方式 |
|---|---|---|
| Settings → On Demand | 是否按网络或域名需求建立 VPN | 断开后产生新需求,观察是否连接 |
| Config 中的 Rule | 隧道内请求匹配哪条规则、使用什么策略 | 连接后查看请求记录与命中策略 |
| Home → Global Routing | 当前采用哪一种流量处理姿态 | 核对 Config、Proxy、Direct 或 Scene |
下面是“指定域名走代理,其余直连”的 Rule 示例,不是 On Demand 条件。它必须位于正在使用的配置文件的 Rule 段,并在 Config 姿态下验证;代理策略还应能使用用户已有的可用服务器。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX 匹配指定域名及其子域名,FINAL 作为最终兜底;规则从上到下匹配。GEOIP 与 IP-CIDR 面向目标 IP 的归属或网段,也不会自行唤起一个尚未建立的 VPN。按需连接成功后,这些规则才负责后续分流。
连接后检查 Global Routing
自动连接只是第一步。测试时应固定 Global Routing 姿态,否则同一个域名可能因为姿态不同得到不同路径,掩盖真正的按需行为。下面比较的是 Shadowrocket 自身的设置,不涉及服务商差异。
Config
推荐按照当前配置文件处理流量。域名规则、IP 规则与 FINAL 的顺序会影响实际去向,适合在自动连接后继续保持明确的分流边界。
适合:已经准备好配置文件,希望按规则处理日常请求
Proxy
对进入隧道并由该姿态处理的流量采用代理路径,可用于隔离规则配置的影响;它不会替代 On Demand,也不能保证所有系统流量都被接管。
适合:短时排查代理路径是否可用,完成后恢复原姿态
Direct
对所处理的流量采用直接连接路径。VPN 显示已连接与请求直连并不矛盾,因此不能用状态图标判断是否经过代理服务器。
适合:对照直连结果,区分目标网站故障与代理路径故障
Scene
按已经配置的场景决定相应处理方式。测试前先检查场景内容;场景选择与系统是否按需建立隧道是不同设置层次。
适合:已明确配置场景条件,需要按场景切换处理方式
手动关闭与排错顺序
On Demand 开启后,手动关闭 Home 开关不一定代表永久停用自动连接。后续网络变化或符合条件的访问可能再次引发系统评估;具体时机还会受系统对手动断开的处理影响。若目的是明确停止按需行为,应先到 Settings → On Demand 停用,再回 Home 断开连接。
为什么关掉后又连上了?
先检查 Settings → On Demand 是否仍然开启,再检查是否有覆盖当前网络的宽泛连接条件。临时停用时先关 On Demand,再关 Home 开关;重新切换一次网络,确认没有再次自动建立连接。
换到蜂窝网络还是没反应?
先确认 Wi-Fi 已真正断开且蜂窝数据可访问网页,再核对条件匹配的网络类型。重新发起访问后观察 Home;若连手动连接也失败,先处理基础连接,不要继续叠加按需条件。
域名写对了,为什么没有触发?
检查该条件是否被更早的网络条件覆盖,并核对域名评估动作。关闭已有页面后重新测试;私密浏览窗口也不保证清空系统 DNS 缓存。若应用使用自己的 DNS 路径,改用能产生系统解析需求的访问方式交叉验证。
自动连上了,网页还是打不开?
在 Home 运行 Connectivity Test,并核对 Global Routing 与当前 Config。测试延迟只说明对应测试目标的结果,不代表目标域名解析、TLS 建连和页面资源都正常;继续查看请求记录,区分解析失败与连接失败。
更新订阅后要重配 On Demand 吗?
订阅更新与按需条件属于不同设置,通常不需要仅因列表更新而重建条件。但应检查原先选中的服务器是否仍存在、认证是否有效,再手动连接一次。更新服务器列表不能代替检查当前 Config 和按需条件。
用切换记录完成验收
验收至少覆盖一次进入目标 Wi-Fi、一次离开目标 Wi-Fi、一次蜂窝数据访问,以及一次停用 On Demand 后的手动断开。每次只改变一个变量,记录“所在网络、触发请求、连接状态、实际访问结果”四项。这样可以区分没有触发、触发但连接失败、连接成功但分流错误三种问题。
- 目标 Wi-Fi:重新加入准确 SSID,发起新请求,确认结果符合该条件的连接或断开动作。
- 例外网络:切换到设置为断开的 Wi-Fi,确认没有被其他宽泛条件覆盖。
- 蜂窝访问:断开 Wi-Fi 后确认移动数据可用,重新访问测试域名并观察状态。
- 停止自动连接:停用 Settings → On Demand,再关闭 Home 开关,重复网络切换以检查停用结果。
按需连接会带来隧道建立与网络切换过程,不应预期所有切换都完全无等待,也不应仅凭开启自动连接就判断耗电更低。保留必要条件、删除重复条件,并在修改后完成上述验收,比不断添加兜底规则更容易定位问题。