搜索 K
Appearance
写在前面:这���不是"重启一下就好了"的玄学合集。我拉了 2025 下半年到 2026 年初收集到的 130 多份 iPhone
powerlog和 sysdiagnose,把"开代理就发烫"这件事拆成了可量化、可复现的四层原因。按本文做完,绝大多数机型的待机功耗能回到接近不开代理的水平。
如果你只看一段,看这段。
发烫的大头不在"墙",在客户端自己。 在我统计的样本里,因为节点被封锁、强制切备用线路导致的高负载转发只占不到两成;剩下八成,锅在健康检查心跳、DNS 重复解析、TLS 握手重建、以及系统级后台保活上。这四件事有一个共同特征:它们都发生在你没在用手机的时候,所以你感觉"什么都没干,手机却烫得离谱"。
四招的收益对照(实验室口径,iPhone 15 Pro / iOS 18.6 / 联通 5G,节点为 IEPL 专线,静置 30 分钟取稳定值):
| 招数 | 具体动作 | 待机功耗变化 |
|---|---|---|
| 第一招 | 健康检查间隔 60s 提到 300s 以上,关掉"自动测速/自动切换" | 下降约 35%~50% |
| 第二招 | DNS 分层解析 + 客户端本地 DNS 缓存,关闭不必要的 DoH 长连接 | 下降约 15%~25% |
| 第三招 | 移动网络下优先 TCP+TLS 系协议,谨慎使用 QUIC/UDP 系 | 下降约 10%~20% |
| 第四招 | 关闭后台 App 刷新、iCloud 私人中继、5G 常开改"自动" | 再降约 10%~15% |
四项叠加,静置待机电流可以从 90~140 mA 压回 25~45 mA 区间——这个数字和"不开代理"的 18~30 mA 已经很接近了。手机不烫,不是因为代理变强了,而是因为它终于能安静下来。
下面逐层拆。
这是最容易被忽略、也最容易被误判的一层。
LTE 与 5G NR 的无线链路并不是"一直通着"的。手机侧有一个 RRC 状态机(RRC_IDLE / RRC_INACTIVE / RRC_CONNECTED),只有在 CONNECTED 状态下才能收发数据。当你 30 秒没有业务流量时,基带会滑向 IDLE,功耗掉到十几毫安级别;而任何一次数据发送,都要先把状态从 IDLE 拽回 CONNECTED,这个过程包含随机接入、调度请求、资源分配等一系列信令交互,能量开销大约相当于持续传输 2~7 秒。
然后是 tail time:数据传输结束后,基带不会立刻回 IDLE,而是会保持一段 DRX 周期(LTE 常见 5~10 秒,NR 类似),以防你紧接着还有数据。也就是说,一次心跳 = 一次状态唤醒 + 一段 tail time 的尾功耗。
现在算笔账:如果你的客户端把健康检查设成 60 秒一次,并且有 3 个策略组各自独立测速,那就是每分钟 3 次唤醒,tail time 几乎首尾相连,基带永远回不到 IDLE。这台手机在你不看它的时候,一直卡在"半活跃"状态。发烫,是必然结果。
iOS 上的代理有两条完全不同的实现路径:
第二条是绝大多数人在蜂窝下唯一的选择。它的问题在于:每个数据包都要经历一次用户态↔内核态的往复拷贝。单个包的开销微不足道,但在弱网重传、DNS 风暴、TLS 握手密集的场景下,这个拷贝会被放大成可观的 CPU 占用——而 CPU 占用在 iPhone 上几乎 1:1 转化成热量。
这也解释了一个常见现象:同样是开代理,打游戏时不烫,静置时反而烫。因为游戏时数据路径是连续的、可预测的;静置时则是一堆零散的小包在高频唤醒,协处理器和主核都在反复进出低功耗状态,调度开销远大于实际传输开销。
把上面两层串起来看:客户端为了保证"节点可用",会定期向节点发起一次连接测试。这个测试通常是"TCP 三次握手 + TLS 握手 + 一次 HTTP HEAD 请求",如果节点在海外、RTT 150 ms 以上,一次完整测试至少产生 6~10 个往返。
于是你的手机每 60 秒就要:唤醒基带 → 建立 TCP → 协商 TLS(如果没做会话复用)→ 收发 HTTP → 保持 tail time → 回 IDLE。再叠加订阅自动更新、规则集更新、GEOIP 数据库更新,如果这些任务没有对齐时间窗,一天下来就是几千次不必要的唤醒。
DNS 这块的坑比想象中深。很多配置会用一个加密 DNS(DoH/DoT)处理全部解析请求,而加密 DNS 本身是一条需要保活的长连接——你为了安全性,额外养了一条永不睡眠的 TCP 连接。
TLS 握手同理。如果客户端没有开启会话复用(Session Ticket / PSK),每次新建连接都要走完整握手;在 RTT 200 ms 的线路上,一次握手的能量开销大致相当于传输 100~300 KB 数据的量级。
最后一层是物理规律。温度升高后,A 系列芯片会触发热降频(thermal throttling),CPU 频率下调意味着同样的加密/解密工作量需要更长的时间完成,而基带和屏幕的功耗基本不变。结果是总能耗反而上升。这就形成了一个闭环:心跳多 → CPU 忙 → 发热 → 降频 → 处理更慢 → 唤醒窗口更长 → 更热。
所以"把手机放冰箱旁边降温"这种事确实有用,但它是治标。真正要断的是上面那条链路。
把上述机理归类,方便你对照排查:
| 象限 | 典型表现 | 主要诱因 |
|---|---|---|
| 协议层 | 待机电流高、温度缓慢爬升 | UDP 系协议在蜂窝下的保活、加密套件不匹配硬件加速 |
| 客户端层 | 温度忽高忽低、有规律波动 | 健康检查间隔过短、多策略组并发测速、订阅/规则自动更新 |
| 系统层 | 全天温热、锁屏也降不下去 | 后台 App 刷新、iCloud 私人中继、按需连接反复重连 |
| 链路层 | 局部发热(听筒/上部)、掉电快 | 弱网重传、信号差导致发射功率拉满、节点 RTT 高 |
四类里,链路层的问题只能靠换线路解决,协议层和客户端层完全靠自己动手。这也是本文的重点。
下表���我在实验室环境(iPhone 15 Pro,iOS 18.6,5G 信号 -85 dBm,静置 30 分钟)测得的典型值,用于横向对比不同配置组合的功耗表现。实际数值会因机型、运营商、线路质量有 ±20% 波动,看相对关系比看绝对值更重要。
| 指标 | 高频心跳 UDP 系 | 高频心跳 TCP+TLS 系 | 低频心跳 TCP+TLS 系 | 优化后(本文方案) |
|---|---|---|---|---|
| 健康检查间隔 | 60 s | 60 s | 300 s | 600 s |
| 静置待机电流 |