小火箭 On Demand 按需连接规则:按 Wi-Fi、蜂窝网络与域名自动触发

讲清 On Demand 的触发逻辑,分步演示如何按 Wi-Fi 名称、蜂窝网络与域名设置自动连接或断开,并说明规则先后顺序。

本文速览

Shadowrocket(小火箭)的 On Demand(按需连接)决定系统何时启动或断开 VPN 连接,不负责替代连接后的分流规则。本文面向已有可用连接与配置的用户,先设置指定 Wi-Fi 与蜂窝网络的动作,再解释域名条件为何不等于“打开某个网页就一定连接”,最后用逐项验证的方法排查规则顺序与自动重连问题。

一、先区分 On Demand 与连接后的规则分流

配置前先给出结论:按网络环境自动连接,检查 Settings → On Demand;已经连接但某个网站的去向不对,检查 Home → Global Routing 与 Config 中当前启用的配置。两者处于不同阶段,把域名分流规则写进配置,并不等于创建了系统的按需连接触发条件。

网络条件变化 系统评估条件 执行连接动作 隧道建立 流量规则匹配

On Demand 依赖 Apple 系统的 VPN 按需机制。系统根据当前网络及已保存的条件评估是否连接;连接成功后,Shadowrocket 才按选定的路由方式处理流量。网络切换、名称解析需求等事件可以参与评估,但这不是一个不断扫描前台网页内容的功能,也不是按 App 打开与关闭来计时的开关。

例如,配置中的 DOMAIN-SUFFIX,example.com,DIRECT 表示域名后缀命中后直连;FINAL,DIRECT 是前面规则未命中时的最终去向。这些规则不会自行启动系统 VPN。GEOIP(按 IP 地理归属匹配)与 IP-CIDR(按 IP 网段匹配)也属于流量处理层,不能替代 Wi-Fi 或蜂窝网络条件。

二、配置前核对入口、连接与恢复方式

先手动连接成功,再开启自动化。本文以 iPhone 与 iPad 的设置过程为主,系统要求以 App Store 页面标注为准。不同系统与应用界面的可选字段可能存在差异,实际可保存的条件以 Settings → On Demand 当前页面为准,不要把系统动作名称当成每个界面都必然出现的按钮。

2 层
设置入口:Settings → On Demand
2 类
本例网络条件:Wi-Fi 与 Cellular
3 项
验证记录:当前网络、连接状态、请求结果
  1. 在 Home(首页)选择用户已有的可用连接,手动打开连接开关。首次出现添加 VPN 配置的系统提示时,核对应用后按系统流程确认。
  2. 打开一个平时能够访问的页面,确认网络本身正常。若手动连接都失败,先处理连接参数、网络可达性或配置问题。
  3. 记录当前 Global Routing 的姿态,以及 Config 中正在启用的配置,避免测试时顺手切换后忘记恢复。
  4. 进入 Settings → On Demand,先记录已有条件及排列顺序。只调整本次需要验证的一项,不同时更新订阅或更换连接。
  5. 记住系统 设置 → 通用 → VPN 与设备管理 → VPN 中对应的 VPN 配置位置。系统显示“按需连接”相关选项时,应一并核对它的状态。

结论:先得到一个手动可用的基线

同一网络下先手动连通,再只改 On Demand 条件。这样出现异常时,可以直接判断是触发没有发生,还是触发后连接本身没有成功。

三、按 Wi-Fi 名称设置连接或断开

Wi-Fi 名称条件通常对应 SSID(无线网络名称)。它识别的是网络名称,不是路由器品牌,也不是网站域名。以下使用虚构名称 Home-WiFi 演示“指定 Wi-Fi 断开、蜂窝网络连接”的配置目标;是否适合让某个网络断开,应由实际访问需求决定,不能仅凭网络叫“家庭”就判断其可信。

  1. 在系统 Wi-Fi 设置中核对当前接入的完整名称,保留名称中的空格、符号与大小写,不使用“家里网络”之类的备注替代真实 SSID。
  2. 进入 Settings → On Demand,编辑 Wi-Fi 条件,将需要匹配的网络名称填为实际 SSID。本例的 Home-WiFi 只用于说明。
  3. 如果目标是该网络下不保持此 VPN 连接,将匹配后的动作设为 Disconnect(断开);如果该网络下需要连接,则使用 Connect(连接)。按当前界面提供的方式保存。
  4. 检查是否还有覆盖全部 Wi-Fi 的宽泛条件。特定 SSID 的例外应先于可能覆盖它的通用条件。
  5. 离开该 Wi-Fi,再重新接入,观察 VPN 状态;不要只在原网络上保存后立即用一次网页加载结果判断成功。

指定 Wi-Fi 的配置目标

入口
Settings → On Demand
网络类型
Wi-Fi
SSID
Home-WiFi(虚构示例)
动作
Disconnect:该网络下断开

这是填写目标的说明,不是可直接导入的配置文本;实际名称须换成当前网络的 SSID。

蜂窝网络的配置目标

入口
Settings → On Demand
网络类型
Cellular:蜂窝网络
SSID
不适用,SSID 属于 Wi-Fi 条件
动作
Connect:该网络下连接

仅在支持并已启用蜂窝数据的设备上测试;连接成功仍取决于已有连接能否正常使用。

Disconnect 的含义是断开此 VPN,不是关闭设备的 Wi-Fi,也不是拦截全部网络流量。若只是希望家中某个域名直连,通常应保留连接并在 Config 内配置分流,而不是把整个家庭 Wi-Fi 都设成断开。两种做法的影响范围不同。

四、蜂窝网络自动连接与规则先后顺序

在支持蜂窝数据的设备上,可以让 Cellular(蜂窝网络)条件使用 Connect。离开指定 Wi-Fi 后,系统切换到蜂窝数据,再评估相应条件。切换期间仍要经过网络可用、VPN 建立与后续请求等过程,不能把按需连接理解成所有已有连接都会无缝保留。

评估顺序条件动作核对重点
优先例外Wi-Fi,SSID 为 Home-WiFiDisconnect名称与实际接入网络一致
网络类型CellularConnect设备当前确实使用蜂窝数据
末尾通用项其余需要连接的网络Connect仅在界面支持且确有需要时添加

系统按需规则按顺序评估,先命中的适用规则决定相应动作。若最前面的通用连接条件已覆盖所有 Wi-Fi,后面的指定 SSID 断开条件就可能没有机会生效。Shadowrocket 界面可能将条件按网络类型组织,核对时既要看页面中的顺序,也要看条件覆盖范围,不能只看某个开关是否开启。

没有蜂窝功能的 iPad 无法完成蜂窝切换测试。Wi-Fi 连接到另一台设备的个人热点时,本机使用的仍是 Wi-Fi 接口,应按本机所见的网络类型评估,而不是按照热点提供方的上网方式判断。

五、域名按需触发不是 DOMAIN-SUFFIX 分流

“访问域名时连接”需要单独理解。Apple 的按需机制中,EvaluateConnection(评估连接)可以结合域名及解析相关条件决定是否建立 VPN。它与连接后匹配 DOMAIN-SUFFIX 的机制不同,也不能笼统理解为监听浏览器地址栏。

系统域名评估中的 ConnectIfNeeded(需要时连接)通常与 DNS 解析失败、所需 DNS 服务器不可用等条件有关;NeverConnect(不为匹配域名启动连接)也不是一条网站封锁规则。这些是系统机制名称,只有当前 Shadowrocket 界面提供相应条件时,才能按页面支持的选项设置,不能直接当作配置文件关键字粘贴。

  1. 先确认需求:是“隧道未连接时,访问内部域名需要建立连接”,还是“隧道已连接时,某个网站需要走指定去向”。后者应在 Config 处理。
  2. 在 Settings → On Demand 中核对是否提供域名相关条件及其可选动作。若当前界面只提供网络类型条件,就按其实际能力配置,不自行编造字段。
  3. 如果界面支持域名条件,使用自己有权访问且确实需要该网络环境才能解析的域名测试。internal.example.com 仅是语法说明,不能用于验证真实连通性。
  4. 按照字段用途填写主机名或域名,不填完整 URL。https://internal.example.com:443/path 中的协议、端口与路径不属于域名本身。
  5. 先记录未连接时的 DNS 结果,再启用条件测试;如果域名在普通网络已经解析成功,不能期待“需要时连接”必定触发。
不要用刷新次数判断域名条件

DNS 缓存、浏览器已有连接、App 自行使用的加密 DNS,都可能改变系统是否观察到一次新的解析需求。仅刷新已打开的页面,可能没有产生预期的评估事件。应同时观察 VPN 状态与实际解析结果,而不是把页面打开成功直接归因于 On Demand。

如果需求只是“example.com 直连,其他请求按现有配置处理”,应在活动配置中安排相应域名规则,并选择 Global Routing → Config。域名分流只决定去向;断开整条 VPN 则会影响其他应用的请求,不能互相替代。

六、用三个场景检查设置是否生效

每次只改一个变量:保留同一个已有连接、同一份活动配置与相同的测试页面。下面是验证时应记录的现象,不是固定耗时或实测性能承诺。系统评估与隧道建立并非瞬间完成,应等待状态稳定后再判断。

测试场景操作应核对的现象异常时先查
接入指定 Wi-Fi重新加入已设例外的 SSIDVPN 是否按 Disconnect 目标断开SSID 与通用条件覆盖范围
切换到蜂窝数据关闭 Wi-Fi,确认蜂窝数据可用VPN 是否开始连接并最终连通Cellular 条件、已有连接可用性
访问需内部解析的域名在适用的域名条件下发起新解析是否发生评估、连接后能否解析DNS 缓存、解析路径与域名条件

若状态显示已经连接而页面仍失败,问题已经进入连接后的处理阶段。此时检查 Global Routing、活动 Config、DNS 与目标可达性,不应反复修改 Wi-Fi 名称条件。若根本没有连接动作,则先检查按需开关、当前接口类型和规则优先级。

七、自动重连、名称匹配与电量常见问题

手动关掉连接,为什么又自己连上了?

先进入 Settings → On Demand 检查是否仍有匹配当前网络的 Connect 条件,再到系统 VPN 配置核对按需状态。需要暂停自动化时,关闭按需功能后再断开,不要只反复拨动 Home 的连接开关。

设置了家里 Wi-Fi 断开,回家后还是连接?

在系统 Wi-Fi 页面重新读取完整 SSID,检查是否实际接入了名称不同的另一频段网络。随后检查覆盖所有 Wi-Fi 的通用 Connect 条件是否先命中;不要仅凭路由器相同就认定 SSID 条件相同。

打开指定域名没有触发,是域名规则写错了吗?

先确认写的是 On Demand 域名条件,而不是 Config 内的 DOMAIN-SUFFIX。再检查该域名是否已被缓存、是否在普通网络就能解析,以及请求是否经过系统可评估的解析路径;“页面打开了”本身不能证明发生过新的触发。

按需连接一定比保持连接省电吗?

不能只凭开关判断。先在系统 设置 → 电池 对照相同使用时段的活动情况;如果频繁切换网络导致重复建立隧道,应减少不必要的条件切换。按实际连接需求设置,避免为了测试而不断断开重连。

最终检查顺序保持一致:先确认网络可用,再确认系统是否触发连接,最后检查连接后的路由与 DNS。按这三个阶段记录现象,比同时修改 On Demand、订阅和配置更容易找到原因。更多基础操作可从本站教程继续核对。

App Store 正版获取先核对应用信息 →