搜索 K
Appearance
如果你只想要答案,直接看这四条:
第一,iOS 上不存在"后台保活"这回事。 Shadowrocket 走的是 NEPacketTunnelProvider(网络扩展),由系统 nesessionmanager 托管,它的存活状态不取决于 App 是否在后台,而取决于三件事:VPN 描述文件是否被系统标记为 active、扩展进程是否触发 Jetsam 内存回收、底层链路是否被运营商 NAT 表项老化踢掉。任何号称"后台保活插件""防掉线神器"的方案,本质都是往这三件事里塞东西,而不是新增第四条路径。
第二,续航杀手是射频唤醒,不是加密算法。 很多人以为换 ChaCha20 或调低混淆强度能省电,实测差异在噪声范围内。真正吃掉电池的是"系统被唤醒后把蜂窝 RRC 从 Idle 拉到 Connected"这个过程,尾巴能耗通常持续 5–10 秒。一次 60 秒心跳 = 每小时 60 次射频拉起 = 每小时额外 5–10 分钟的高功耗射频窗口。
第三,掉线主因是规则集过大导致的扩展被杀。 iOS 给 VPN 扩展的内存水线相当紧,几万条 DOMAIN 规则 + 频繁重载,很容易撞上 Jetsam。表现就是"用了几小时突然断,重开 App 又好了"。
第四,正确的组合是:精简分流 + 关闭自诊断行为 + 链路层心跳匹配运营商 NAT 超时 + On-Demand 兜底重连。 本文后面给出的"中度优化"档,在我们的实验室口径下能把 8 小时待机耗电从 5.8%(Wi-Fi)/ 9.2%(蜂窝)压到 3.4% / 5.1%,后台断连从日均 6 次降到 1–2 次。
Shadowrocket 在 iOS 上是 Application Extension(App 扩展)形态的 Packet Tunnel Provider,运行在独立的沙盒进程里,宿主是 nehelper / nesessionmanager。理解这一点很关键:
beginBackgroundTask 对扩展意义有限),所以任何"保活"都只能通过减少被杀概率实现。把一次待机耗电拆开看:
| 耗电来源 | 占比(Wi-Fi 待机) | 占比(蜂窝待机) | 可控性 |
|---|---|---|---|
| 射频 RRC 状态切换尾巴能耗 | 约 35% | 约 58% | 高(改心跳频率) |
| SoC 唤醒 + 上下文切换 | 约 20% | 约 15% | 中(减规则、减测试) |
| 加解密 CPU | 约 10% | 约 8% | 低 |
| 隧道用户态转发(utun 读写) | 约 15% | 约 10% | 中(减 UDP/QUIC) |
| 其他系统噪声 | 约 20% | 约 9% | 低 |
结论很直白:在蜂窝网络下,超过一半的额外耗电来自射频被反复拉起。而拉起的触发源,几乎全部来自客户端的自诊断行为——自动延迟测试、订阅自动更新、规则集拉取、IPv6 探测。
路径 A:应用层心跳缺失。 UDP 类协议(Hysteria2 / TUIC / WireGuard / QUIC 系)没有内核级 TCP keepalive,一旦运营商 NAT 表项老化(移动网络常见 30–120 秒,部分 300 秒),后续任何上行包都会打到黑洞,客户端通常要 10–30 秒超时才发现并重连。这段时间你的微信推送就是丢的。
路径 B:TCP 长连接被静默丢弃。 TCP 系协议有重传机制,恢复更快,但如果服务端配置了过短的 idle timeout(例如 nginx 默认 60s),而客户端 NAT 老化更早,就会出现"连接还在但发什么都不通"的半开状态。
路径 C(很多人忽略):TLS 会话票据 / Reality 握手开销。 这属于连接建立成本,只在重连时产生。频繁断连 → 频繁完整握手 → 每次都多一次 RTT + 一次射频窗口,这才是它影响续航的真正路径。所以稳定即省电,而不是"选个省电协议"。
这一点常被忽略但非常重要。跨境链路的重传率、抖动(jitter)、RTT 稳定性,会直接决定:
IEPL / IPLC 专线(端到端物理专线,不经公网出口)的价值不只是"快",而是把重传率压到 ≤ 1%、抖动压到个位数毫秒。同一条规则集、同一台手机,换成专线后实测待机耗电确实下降——这不是玄学,是射频被唤醒的次数实实在在少了。
以下数据来自 AirPick 实验室固定环境:iPhone 15 Pro / iOS 18.5 / 双卡(移动 + 联通)/ 屏幕关闭 / 后台仅留微信与邮件推送 / 节点为同城入口 + 香港出口。每档配置连续采样 72 小时,取中位数。
| # | 量化指标 | A 档:默认配置 | B 档:中度优化 | C 档:极致省电 |
|---|---|---|---|---|
| 1 | Wi-Fi 待机 8h 耗电 | 5.8% | 3.4% | 2.6% |
| 2 | 蜂窝待机 8h 耗电 | 9.2% | 5.1% | 3.8% |
| 3 | 24h 后台断连次数 | 6 次 | 1–2 次 | 0–1 次 |
| 4 | 平均唤醒频率 | 3.1 次/分钟 | 1.2 次/分钟 | 0.6 次/分钟 |
| 5 | 扩展常驻内存 | 约 42 MB | 约 26 MB | 约 18 MB |
| 6 | 首包延迟中位数 | 380 ms | 340 ms | 360 ms |
| 7 | 上行重传率 | 2.4% | 1.1% | 0.9% |
| 8 | 网络切换恢复时间 | 8.4 s | 4.6 s | 3.2 s |
| 9 | 额外流量开销 | 6.2% | 3.1% | 2.4% |
| 10 | 被 Jetsam 回收概率(8h) | 高(约 32%) | 中(约 9%) | 低(约 3%) |
三档配置的差异定义:
注意第 6 项:C 档的首包延迟略高于 B 档,因为屏蔽 QUIC 后部分站点会回落到 TCP。这是续航与体验之间必须做的取舍,不是配置错误。
核心矛盾:基站切换导致的隧道重连。优先开启 On-Demand(按需连接),让系统在网络变化时自动重建隧道;同时把 UDP 类协议的心跳设为 120–180 秒,兼顾 NAT 老化与耗电。不建议使用极致省电档,切换恢复时间会拖长。
酒店 Wi-Fi 普遍存在强制门户(Captive Portal)和 UDP 限速。建议关闭 QUIC 屏蔽的反向操作——即允许 UDP,否则部分认证页无法弹出。同时开启"Wi-Fi 辅助"反而会增加射频切换,漫游场景建议关闭。
插电场景下续航不敏感,可以保留更激进的规则集以获得更好的分流精度。但仍建议关闭自动延迟测试——它影响的不是电量,而是待机时的瞬时抖动:一次延迟测试会拉起全部节点连接,低端机会出现明显掉帧。
这类用户更需要"稳定"而不是"省电"。建议选择 IEPL/IPLC 专线入口,配合 B 档配置。专线带来的低重传率会同时改善会议通话质量与续航,属于双赢。
月流量低于 80GB 的用户,其实不需要为"极致分流"付出内存代价。C 档配置 + 小流量专线套餐是最优解:规则少 → 内存低 → 被回收概率低 → 反而更稳。
打开「设置」页,按以下顺序调整:
macOS 上的同类���展(如 Surge、Clash Verge)功耗模型完全不同:Mac 没有移动射频状态机,耗电主要来自 CPU 与网络栈唤醒。所以"iPhone 上省电的设置"搬到 Mac 上收益有限,反而可能因为规则精简导致分流错误。
Android 平台(v2rayNG、Surge 等)有真正的前台服务 + 电池白名单机制,保活逻辑与 iOS 完全不同,不要跨平台照搬经验。
# 1. 检查 DNS 解析路径是否走隧道
scutil --dns | grep -A 3 "resolver #1"
# 2. 路由到节点的丢包分布(判断是本地、出口还是跨境段)
mtr -rwzbc 100 节点入口IP
# 3. TCP 握手延迟与端口可达性
nc -vz -w 3 节点入口IP 443
# 或安装 tcping 后:
tcping -t 5 节点入口IP 443
# 4. 查看 Network Extension 的状态变更