Shadowrocket On Demand 按需连接设置:按 Wi-Fi、蜂窝网络与域名自动触发

讲清 On Demand 的触发逻辑:指定 Wi-Fi 名称、蜂窝网络和域名条件分别怎么填,多条规则同时生效时的优先顺序,以及常见误触发怎么排查。

本文速览

On Demand 决定系统何时尝试建立或断开 VPN 连接,不负责替代流量分流规则。本文适合已经有自己的服务商与订阅、并且能够手动连接的用户:先验证手动连接,再配置 Settings → On Demand 中的网络条件,最后分别验证 Wi-Fi、蜂窝网络与域名条件。域名按需连接涉及 DNS 评估,不能等同于“打开某个网址就一定连接”。

先分清 On Demand 与 Global Routing

Shadowrocket(小火箭)的 On Demand 是连接触发设置。保存到系统 VPN 配置后,系统可以在网络变化或符合域名评估条件时尝试连接,不要求用户每次都先打开应用再点 Home 顶部开关。它不是定时器,也不会修复无法连接的服务器。

Global Routing 解决的是另一件事:连接建立后,请求怎样处理。Proxy、Direct、Config、Scene 是该入口下的不同选项;其中 Config 按所选配置的规则分流,Scene 按已配置的场景处理。即使按需连接已经触发,最终请求仍可能走 DIRECT。系统显示 VPN 已连接,并不等于每个请求都经由代理服务器。

网络条件变化 按需条件评估 建立隧道 分流规则匹配 请求出站

域名评估还可能由新的名称解析请求引发,因此上述流程用于理解职责划分,不表示所有触发都必须先切换网络。检查问题时应把“是否触发连接”和“连接后如何分流”分开验证。

2 层
连接触发与请求分流分别配置
3 类
本文核对 Wi-Fi、蜂窝网络、域名条件
2 级
应用入口:Settings → On Demand

配置前:先建立可复现的手动连接基线

本文以用户已有自己的服务商与订阅为前提。On Demand 不包含服务器信息,也不会随客户端购买附送线路。若手动连接尚未成功,应先处理服务器、认证参数与网络可达性,再增加自动触发条件。

  1. 暂时关闭 Settings → On Demand 中的按需连接,让测试不受自动重连影响。
  2. 回到 Home,选择已导入且准备使用的服务器,确认选择标记落在预期条目上。
  3. 打开连接开关;首次使用时,按系统提示允许添加 VPN 配置。不能跳过系统授权。
  4. 执行 Connectivity Test,再访问一个平时可访问的页面。测试结果只证明对应测试目标的表现,不能替代所有业务请求的验证。
  5. 记录当前 Global Routing 选项和已启用的 Config,随后再关闭连接,进入自动触发测试。

Wi-Fi 与蜂窝网络:先明确条件,再选择动作

进入 Settings → On Demand,检查当前提供的网络条件与动作选项。不同界面布局可能把条件与动作放在同一行或分别编辑;以当前应用实际显示的字段为准。配置思路不变:先限定网络,再决定匹配后连接还是断开。不要把仅用于标记用途的备注当成 Wi-Fi 名称。

Wi-Fi 名称填写实际 SSID

指定 Wi-Fi 时,填写设备当前连接网络的完整名称,也就是 SSID。例如下面使用的 Home-WiFi 是说明用名称,应替换成系统 Wi-Fi 页面中实际显示的名称。不要填写路由器管理地址、无线密码或 https:// 开头的网址,也不要自行添加引号或通配符。

  1. 在系统 Wi-Fi 页面确认当前网络名称,逐字符核对大小写、空格及后缀。
  2. 回到 Settings → On Demand,在 Wi-Fi 条件中填写该名称,选择与目标一致的动作并保存。
  3. 启用 On Demand,再断开并重新接入该 Wi-Fi,观察连接状态是否发生预期变化。
  4. 切换到另一个 Wi-Fi 重复检查,确认这条规则没有意外覆盖所有无线网络。

同一个路由器的不同频段可能使用不同名称;相同 SSID 也可能出现在不同地点。名称匹配不等于可信网络认证。不要仅因为网络名称看起来熟悉,就把它视为已经完成安全核验。

蜂窝网络填写接口条件,而不是运营商名称

蜂窝条件针对系统当前使用的蜂窝接口,不是让用户填写电话号码、运营商名称或移动网络 APN。若目标是离开指定 Wi-Fi 后自动连接,应同时考虑其他 Wi-Fi 的行为:蜂窝规则不会自动代表“除家庭 Wi-Fi 外的所有网络”。

指定 Wi-Fi 示例

入口
Settings → On Demand
网络条件
Wi-Fi
名称示例
Home-WiFi
动作目标
不维持 VPN 时使用 Disconnect

只在确实需要该网络断开 VPN 时使用;SSID 必须替换为实际名称。

蜂窝网络示例

入口
Settings → On Demand
网络条件
Cellular
名称字段
不填写 Wi-Fi SSID
动作目标
需要自动建立 VPN 时使用 Connect

保存后关闭 Wi-Fi,确认设备确实正在使用蜂窝数据再验证。

Connect 表示尝试建立连接,并不保证连接成功;Disconnect 表示在对应条件下断开。若界面提供忽略或保留现状的动作,也不能把它理解为“确保断开”。需要可靠的排除效果时,应核对动作的实际含义,而不是只看规则名称。

域名条件:填写名称,不要粘贴完整 URL

域名条件与 Wi-Fi、蜂窝接口条件并不完全等价。系统 VPN 按需机制可以对域名进行连接评估:匹配域名后,根据解析结果及该规则的要求决定是否建立连接。这类机制常涉及 EvaluateConnection 与 ConnectIfNeeded 的语义,不能简单理解为网页地址栏的字符串匹配。

在 Settings → On Demand 中检查当前界面是否提供域名相关的评估条件;只有实际提供时才配置。域名列表填写 example.com 这类名称。不要把下列分流语法粘贴到域名字段,也不要把 DNS 服务器字段误当成目标域名字段。

输入内容如何处理原因
example.com作为域名示例没有协议、端口和路径
https://example.com/page只取域名部分域名评估不匹配网页路径
example.com:443删除端口部分443 是 HTTPS 常用端口,不属于域名
DOMAIN-SUFFIX,example.com,PROXY放入 Config 的规则区域这是分流规则,不是按需域名输入格式

如果需要覆盖多个具体主机,应核对该字段的域名匹配说明,不要默认 *.example.com 在任何位置都有效。域名相关字段可能具有不同的后缀匹配约定;先用一个明确主机测试,再逐步扩大范围。

若实际目标是“VPN 保持连接,但只有指定域名经代理”,更适合检查 Global Routing → Config 与规则内容,而不是依赖域名按需连接实现分流。下面仅展示职责区别,示例会影响匹配域名的请求,应按自己的配置目标使用。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

DOMAIN-SUFFIX 在此决定请求出站策略,FINAL 接住前面没有命中的请求。GEOIP、IP-CIDR 同样属于分流规则范畴,都不会因为被写入 Config 就自动成为 On Demand 的连接触发条件。

多条规则同时存在:按顺序理解,不按“更具体”猜测

系统按需规则按列表顺序评估,使用首个匹配的顶层规则;不能假设域名更长、SSID 更具体就会自动获得更高优先级。单条顶层规则内填写的不同条件通常需要共同满足;同一名称列表中的多个候选值则用于匹配其中一个。域名评估还可能有内部动作,不能把所有条件当成一个简单的平铺列表。

如果当前界面允许排列规则,应把明确的例外条件放在宽泛条件之前。若界面只提供固定选项,不要假设可以任意拖动排序:应通过保存后的实际行为验证这些选项之间的覆盖关系。尤其不能同时开启广泛连接条件,又期待后面的排除条件必然生效。

  1. 先写目标:例如“指定 Wi-Fi 断开,蜂窝网络连接,其他 Wi-Fi 暂不改变”。
  2. 检查重叠:一条匹配所有 Wi-Fi 的连接规则,会与指定 SSID 的断开规则重叠。
  3. 处理例外:在可排序的规则列表中,让指定 SSID 的例外先被评估,再放宽泛 Wi-Fi 条件。
  4. 单独验证域名:顶层网络规则已匹配 Disconnect 时,不应期待后续域名评估再推翻它。
  5. 重新保存并测试:应用中的修改需要保存到生效的 VPN 配置;只改编辑页但未保存,不能代表系统正在使用新条件。

这里的顺序是 On Demand 的顺序,与 Config 中规则自上而下匹配是两套独立机制。即使两处都使用“首个匹配”的思路,也不能把两份列表混在一起排优先级。

验证与排障:先查触发,再查连接,最后查分流

完成配置后,至少分别测试指定 Wi-Fi、其他 Wi-Fi 与蜂窝网络。域名测试应单独进行,并记录是否存在 DNS 缓存或后台请求。以下是应观察的现象与检查方向,不是对任意网络环境的成功承诺。

为什么手动关掉后又连上了?

先到 Settings → On Demand 暂时关闭按需连接,再回 Home 关闭连接开关。如果此后不再自动连接,说明仍有条件在触发;逐条检查宽泛的网络连接规则,以及后台域名请求。需要暂停连接时,应同时处理自动触发设置。

家里 Wi-Fi 已经设置断开,为什么仍然连接?

先在系统 Wi-Fi 页面重新核对完整 SSID,再检查是否有更靠前的所有 Wi-Fi 连接条件。保存后断开并重新接入网络;如果规则正确但表现仍不同,确认系统正在使用的是刚刚保存的 Shadowrocket VPN 配置。

打开指定域名没有触发,是填写错误吗?

先删除域名字段中的协议、路径与端口,再核对该条件究竟是无条件连接还是按解析需要连接。若属于 ConnectIfNeeded,当前网络解析成功时不触发可能符合预期;还应排除 DNS 缓存、应用自带解析与先命中的网络规则。

自动连接成功了,页面为什么仍打不开?

回到 Home 执行 Connectivity Test,确认默认服务器可用,再检查 Global Routing 与当前 Config。若测试失败,先恢复手动连接排查服务器与认证参数;若测试成功但单个页面失败,继续检查该请求的 DNS 与分流规则,不要反复添加 On Demand 条件。

需要回退时,关闭 Settings → On Demand 并保存,再手动控制 Home 的连接开关。确认基线恢复后,一次只重新启用一类条件。订阅更新改变的是用户已有服务器列表及相关配置,不会自动证明按需规则正确;更新后仍需确认选中的服务器与实际连接结果。

App Store 正版核验