本文适合已经在 Shadowrocket 中导入自己的订阅、且手动连接正常的用户。先区分 On Demand 的连接触发与 Config 的流量分流,再按指定 Wi-Fi、Cellular 和域名条件逐项配置。核验时采用一次只改一个条件的方法,分别检查规则命中、隧道状态和请求策略,避免把自动连接失败与规则分流错误混在一起。
先区分 On Demand 与 Global Routing
Shadowrocket(小火箭)的 On Demand 借助 Apple 系统的 VPN 按需机制,在网络变化或符合条件的网络请求出现时评估是否建立连接。它解决的是“什么时候连接”,不是“每个请求走哪条策略”。连接建立之后,请求仍受 Home 中 Global Routing 的当前姿态及相应配置影响。
日常核对可以分成三层:Home 检查选中的连接及 Global Routing,Config 检查实际启用的配置文件,Settings → On Demand 检查触发条件。不要用修改 On Demand 的方式修复错误的服务器地址、端口或认证参数;这些参数需要先在手动连接状态下验证。
Config
推荐连接建立后按当前配置中的规则决定请求策略。检查 DOMAIN-SUFFIX、IP-CIDR、GEOIP 与 FINAL 时,应确认启用的就是预期的 Config。
适合:需要自动连接,同时保留明确分流规则的日常使用。
Proxy
作为代理姿态处理由应用接管的请求,可用于临时排除 Config 分流的影响;它不等于 On Demand 已启用,也不保证系统所有流量都被接管。
适合:短时核验连接本身与配置规则是否分别正常。
Direct
采用直连姿态。即使 On Demand 已触发并建立隧道,请求也不因此自动改走代理,因此不能仅凭连接标识判断请求出口。
适合:核对直连行为,或排查“已连接但策略不符”的情况。
结论:先固定路由姿态
开始测试前将 Global Routing 固定为 Config,并记录当前配置名称;完成一组触发测试前不要同时切换姿态、配置文件和连接对象。
启用前:先完成一次手动连接核验
以下步骤以用户已经拥有自己的服务商与订阅为前提。本文不提供、不销售、不推荐节点或订阅。订阅更新与 On Demand 是两项独立操作:前者更新已有连接信息,后者控制系统何时使用连接,自动连接不会修复过期的订阅内容。
-
确认已有内容
进入 Home,确认自己的订阅已经导入并按需完成更新,选中一个已知可用的连接。核对地址、端口、协议与认证信息,不要在此时同时更换多项参数。
-
手动连接
在 Home 手动开启连接;首次使用时按系统提示允许添加 VPN 配置。若手动连接即失败,先解决连接参数或当前网络问题,再继续配置自动触发。
-
核对分流
在 Home → Global Routing 确认姿态,再到 Config 核对启用文件。用一个明确知道应走哪种策略的请求做验证,记录请求时间与匹配结果。
-
进入设置
打开 Settings → On Demand,先查看现有条件与顺序。若已有自动化规则,记录原值;只保留本次需要验证的条件,避免旧规则先行命中。
-
逐项开启
在 Settings → On Demand 设置一个网络条件并启用按需连接,返回 Home 查看状态,再实际切换网络。新增域名条件之前,先验证 Wi-Fi 与 Cellular 的基本触发。
下面用 Connect、Disconnect、EvaluateConnection、Ignore 说明 Apple 按需规则的动作语义,它们不是对每个 Shadowrocket 界面按钮名称的逐项复刻。具体可编辑字段与动作组合以当前界面为准;界面没有提供的条件,不要通过把 Config 规则粘贴到 On Demand 中来替代。
Wi-Fi SSID:具体网络放在通用条件之前
SSID 是 Wi-Fi 的网络名称,不是路由器地址,也不是无线接入点的硬件地址。设置指定网络条件时,应从设备当前连接的 Wi-Fi 信息核对完整名称,例如 Home-WiFi。注意大小写、空格与标点,不要自行假定 Home-* 会作为通配符匹配。
在 Settings → On Demand 的 Wi-Fi 条件中填写或选择目标 SSID,并配置该网络下的连接行为。例如,希望在已确认符合自己使用要求的家庭网络中断开,在其他 Wi-Fi 中连接,就需要把具体 SSID 的断开条件放在一般 Wi-Fi 连接条件之前。SSID 只是匹配依据,不是网络身份或可信程度的证明。
| 顺序 | 匹配条件 | 动作语义 | 核验方式 |
|---|---|---|---|
| 1 | Wi-Fi,SSID 为 Home-WiFi | Disconnect | 连接该 SSID 后检查隧道是否按设置断开。 |
| 2 | 其他 Wi-Fi | Connect | 切换到另一个已知名称的 Wi-Fi,检查是否触发连接。 |
| 3 | 其余网络 | 另设条件 | 蜂窝网络需要单独规定,不能由 Wi-Fi 条件推断。 |
此表是规则意图示意,不是可直接导入的配置文本。若系统或应用提示读取网络信息所需权限,应按实际提示核对;无法取得 SSID 时,指定 SSID 条件可能无法按预期匹配。公共 Wi-Fi 若有网页登录认证,先完成认证,再测试按需连接,不要把尚未获得互联网访问权限误判为连接参数错误。
Cellular:断开 Wi-Fi 后单独测试
Cellular 条件针对设备实际使用的蜂窝数据网络。设置前应确认设备具备并已启用蜂窝数据;仅支持 Wi-Fi 的 iPad 不会因为添加了该条件就获得蜂窝网络能力。网络名称相似也不代表类型相同:连接手机热点的另一台设备,通常仍是在使用自己的 Wi-Fi 接口。
在 Settings → On Demand 中为 Cellular 设置需要的动作,随后关闭 Wi-Fi,确认设备实际切换到蜂窝数据。仅离开某个 SSID 的覆盖范围并不总能形成干净的测试条件,因为设备可能立即连上另一个已保存的 Wi-Fi。
- 需要蜂窝网络自动连接:将 Cellular 条件设为连接语义,再检查是否有更靠前的通用条件抢先命中。
- 需要蜂窝网络保持断开:设置对应的断开语义,并检查列表末尾的通用连接条件是否覆盖了预期设计。
- 使用双卡设备:先记录当前用于蜂窝数据的线路;切换数据线路后重新验证,不要把运营网络变化与规则顺序问题混为一谈。
- 关注数据使用量:On Demand 控制连接触发,并非流量配额工具;订阅更新、应用同步与其他请求仍可能使用蜂窝数据。
域名触发:不是把 DOMAIN-SUFFIX 搬进设置
域名相关的按需连接属于系统连接评估机制。Apple 的 EvaluateConnection 可以结合域名匹配及连接所需的 DNS、可达性等条件决定是否建立连接。它不是持续检查每个网页 URL 的过滤器,也不等于“访问某域名时必定无条件立即连接”。只有当前界面提供相应域名评估字段时,才按字段含义配置。
在 Settings → On Demand 中检查域名评估选项是否可用。若可编辑,按字段要求填写域名,例如 example.com,不要粘贴 https://example.com/path 这样的完整 URL,也不要把 DOMAIN-SUFFIX,example.com,PROXY 当作域名值。是否覆盖子域名,应按该字段的实际匹配语义核对,不能套用 Config 中的规则语法。
| 项目 | On Demand 域名评估 | Config 域名规则 |
|---|---|---|
| 主要目的 | 评估是否需要建立连接。 | 决定已接管请求采用的策略。 |
| 配置位置 | Settings → On Demand 中实际提供的域名字段。 | Config 中启用文件的规则部分。 |
| 内容形式 | 按字段要求填写域名及评估条件。 | DOMAIN-SUFFIX,example.com,PROXY |
| 主要干扰 | DNS 缓存、已有连接、应用解析方式及前序按需规则。 | 前序规则先命中、策略名称错误或启用文件不符。 |
上表中的 Config 规则还要求当前配置存在可用的 PROXY 策略。它只解释分流语法,不会创建 On Demand 条件。测试域名触发时,应确认此前没有网络级 Connect 条件已经无条件建立隧道;否则只能证明网络条件生效,不能证明域名评估生效。
结论:域名测试要隔离条件
验证域名评估时,先暂时停用会提前命中的宽泛网络连接条件,并关闭相关应用的已有会话后重新发起请求;若界面没有域名评估选项,就保留网络触发,不用 Config 规则冒充该功能。
多条规则:先匹配连接条件,再处理请求策略
按需规则按顺序评估,优先使用第一个匹配的规则。通常应把具体 SSID 等例外放在前面,把适用范围更广的接口条件或兜底条件放在后面。同一条规则中填写多个条件时,还应区分“一个字段内列出多个可选值”与“同时限制接口和 SSID”,不能把所有条件都理解为任意命中即可。
Connect 表示符合条件时建立连接;Disconnect 表示符合条件时不保持该连接;Ignore 表示该规则不改变现有连接状态,不能当作 Disconnect 使用。EvaluateConnection 则需要进一步评估连接条件,不能按无条件 Connect 理解。实际设置时只使用界面支持的动作,并记录其顺序。
- 先写预期:例如“Home-WiFi 断开,其他 Wi-Fi 连接,Cellular 连接”,每个网络状态只保留一个明确结果。
- 先具体后宽泛:指定 SSID 在一般 Wi-Fi 条件之前;通用条件不要放在会被它覆盖的例外之前。
- 检查域名评估位置:网络级 Connect 已经命中时,后面的域名评估通常不会再成为本次连接的决定因素。
- 最后检查 Config:连接建立后,再核对 DOMAIN-SUFFIX、IP-CIDR、GEOIP 等请求规则及末尾 FINAL;这是另一个匹配层次。
不要把“按需规则的兜底行为”与 FINAL 混用。FINAL 是 Config 中请求规则的最终策略,放在请求规则列表末尾;它既不会选择 Wi-Fi,也不会替系统启用 On Demand。
验证与排障:一次只改变一个变量
测试记录至少应包含当前网络类型、SSID、On Demand 条件顺序、Home 连接状态、Global Routing 姿态和请求匹配结果。不需要预设固定连接耗时:网络切换、系统调度与服务端响应都会影响观察结果,不能用某个固定秒数作为必然成功标准。
为什么手动断开后又自己连上?
先进入 Settings → On Demand 暂时关闭按需连接,再回 Home 手动断开。若当前网络持续满足 Connect 条件,系统后续评估可能再次建立连接;需要长期停止时,应修改条件或关闭该功能。
回到家里还是没有自动断开?
核对当前实际连接的 SSID 是否与设置完全一致,再检查指定 SSID 条件是否排在通用 Wi-Fi 条件之前。若界面提示网络信息权限,先处理权限,再重新切换网络验证。
蜂窝数据下能触发,网页却打不开?
先关闭 On Demand,在同一蜂窝网络下手动连接并测试。手动也失败时检查已有连接参数和网络可达性;手动正常时再核对条件顺序、Home → Global Routing 与 Config 中实际启用的规则。
访问目标域名为什么没有触发?
先确认界面确实配置了域名连接评估,而非仅添加 Config 规则。关闭应用已有会话后重试,检查 DNS 缓存及应用自身解析方式;若该功能按解析失败等条件触发,正常解析时不连接可能符合原设定。
更新订阅后还需要重新设置吗?
更新后先回 Home 核对选中项是否仍存在,并手动验证一次。订阅内容变化可能影响连接对象,但不代表按需条件需要全部重建;先确认手动连接正常,再恢复 On Demand 测试。
完整验收应包括“指定 Wi-Fi → 其他 Wi-Fi → Cellular → 指定 Wi-Fi”的往返切换,并分别记录预期动作与观察状态。若需要撤销本次设置,先关闭 Settings → On Demand,再恢复原有条件与顺序;避免只删除一个条件却留下更宽泛的自动连接规则。