手机在 Wi-Fi 与蜂窝网之间切换时,VPN 容易掉线或「显示已连接却打不开网页」,根本原因是出口 IP、默认网卡与中间 NAT 映射同时改变,旧隧道的传输路径失效。能否平滑恢复取决于协议是否支持漫游、客户端多快感知网络变化,以及保活间隔。以 2026 年 9 月常见客户端看,切换后数秒中断属正常现象。

网络切换时到底变了什么

一个可独立引用的定义句:网络切换(handover)是设备的活动网络接口从一个网络换到另一个网络的过程,例如从家庭 Wi-Fi 换到蜂窝数据,通常伴随源 IP、默认路由与 DNS 服务器的同时变化。

对 VPN 而言,隧道外层是一条「本机地址:端口 ↔ 节点地址:端口」的会话。切换网络时这条会话的本机一侧会整体改变:

变化项切换前(Wi-Fi)切换后(蜂窝网)对隧道的影响
本机 IP家庭路由器分配的内网地址运营商分配的地址,常在 CGNAT 之后旧外层会话的源地址失效
公网出口家庭宽带公网地址运营商 NAT 出口节点看到的来源地址改变
默认路由经 Wi-Fi 网卡经蜂窝网卡外层包需要从新网卡发出
NAT 映射家庭路由器上的映射运营商 NAT 上的新映射旧映射不再有回程
DNS 服务器路由器或宽带下发运营商下发隧道外的解析路径改变

隧道里面的虚拟地址、加密密钥可以不变,但承载它们的外层路径已经换了一条。VPN 的基本分层可参见 VPN 是什么。

为什么会出现「假连接」

「假连接」指客户端界面显示已连接,但隧道内的数据包实际无法往返。切换网络后出现假连接,通常是以下几种情况叠加:

  1. 客户端没收到或没及时处理网络变更事件:仍从旧网卡或旧源地址发包,包在本机或第一跳就被丢弃;
  2. 节点仍向旧地址回包:客户端已从新地址发包,但协议不支持更新对端地址,节点的回程仍发往旧的 NAT 映射;
  3. 系统休眠期间切换:手机锁屏时后台网络受限,切换发生时 VPN 进程未被唤醒,解锁后才开始处理;
  4. 保活间隔过长:客户端要等到下一次保活超时才判定失效,这段时间里界面仍显示已连接。

其中第 4 点与 VPN 保活与掉线重连 讨论的静默失效是同一机制,只是网络切换让失效来得更突然。

不同协议对漫游的处理

各协议在设计上对「源地址变了」的容忍度不同。下表为概念层对照,具体行为以客户端实现与文档为准:

协议 / 机制源地址变化时的行为切换后的典型表现
WireGuard服务端收到来自新地址、且能通过认证的数据包后,自动更新对端地址客户端从新网卡发出下一个包后通常可快速恢复
IKEv2 + MOBIKEMOBIKE 扩展(RFC 4555)允许在不重建安全关联的情况下更新地址支持且双方启用时可较平滑迁移
IKEv2(未启用 MOBIKE)需要重新协商中断时间更接近完整重连
OpenVPN over UDP取决于服务端是否允许对端地址浮动允许时可恢复,否则需重连
OpenVPN over TCP外层 TCP 连接随旧地址失效必须重建 TCP 连接并重新握手
基于 QUIC 的传输QUIC 协议设计了连接迁移取决于具体实现是否启用

「可快速恢复」不等于零中断。即使协议支持漫游,客户端也要先感知网络变化、从新网卡发出第一个包,这之间仍有一个窗口。协议层面的更多差异参见 IKEv2 与 WireGuard 怎么比 与 VPN 用 TCP 还是 UDP。

切换窗口里的流量去哪了

从旧路径失效到新隧道恢复之间,存在一个几百毫秒到数十秒不等的窗口。这个窗口里系统和应用发出的流量有三种可能:

情况流量去向由什么决定
被阻断丢弃,应用短暂报错或重试Kill Switch 或系统「阻止未经 VPN 的连接」类设置
走物理网卡以真实出口 IP 直接发出未启用阻断,且路由表回落到默认网卡
排队等待缓冲后经新隧道发出客户端实现,少见且不应依赖

如果你需要切换期间不出现真实 IP,关注点应是阻断设置,而不是协议漫游能力。二者分工参见 Kill Switch 是什么。

与 Always-on、Keepalive、省电的关系

这几个设置常出现在同一个页面,但在切换场景中各管一段:

设置在切换场景里负责什么不负责什么
Always-on / 按需连接隧道断开后由系统自动重新拉起不消除切换瞬间的中断
Keepalive / 心跳缩短发现旧路径失效的时间不决定失效后流量走哪里
Kill Switch / 阻断窗口期内禁止流量走物理网卡不加快恢复速度
系统省电 / 后台限制可能延迟 VPN 进程对网络变更的响应不是 VPN 自身的设置

省电与耗电的权衡参见 VPN 为何让手机更耗电:保活越密,发现失效越快,但无线电唤醒也越频繁。

还有一个常被忽略的来源:部分手机系统提供「Wi-Fi 信号弱时自动使用蜂窝数据」一类的功能,会在 Wi-Fi 未断开时让部分流量改走蜂窝网。它会让切换变得更频繁、更难察觉。据各系统说明,这类功能的名称和行为因厂商和系统版本而异,排障时应先确认它是否开启。

常见误解

误解 1:掉线是节点质量差。 如果掉线总发生在进出家门、进电梯、地铁换站这类网络切换时刻,更可能是切换处理问题,而不是节点本身不稳定。

误解 2:换一个协议就一定不会掉线。 支持漫游的协议能缩短恢复时间,但系统休眠、后台限制和客户端对网络事件的响应速度同样影响结果。

误解 3:显示已连接就说明切换已经恢复。 界面状态可能滞后。应以访问检测页能否拿到隧道出口 IP 为准。

误解 4:Always-on 能保证切换期间不暴露真实 IP。 Always-on 负责自动重连;窗口期内是否阻断流量由阻断设置决定,需要单独验证。

可复现的排障步骤

以下步骤用于判断掉线发生在哪一环,不涉及修改运营商或路由器配置。

测试环境写法示例:2026 年 9 月,同一部手机、同一客户端版本与节点,记录系统版本、协议类型、Keepalive 间隔(若可见)、Always-on 与阻断设置是否开启。

  1. 建立基线:连接 VPN 后访问检测页,记下隧道出口 IP;
  2. 亮屏切换:屏幕常亮时关闭 Wi-Fi,让手机切到蜂窝网,每隔几秒刷新检测页,记录多久恢复为隧道出口 IP;
  3. 观察窗口期:切换后第一次刷新如果显示的是运营商 IP,说明窗口期内流量走了物理网卡;
  4. 反向切换:重新打开 Wi-Fi 并等待自动连接,重复第 2、3 步;
  5. 锁屏切换:锁屏一段时间后离开 Wi-Fi 覆盖范围,再解锁测试,对比与亮屏切换的恢复时间差;
  6. 对照协议:若客户端允许,换一种协议或外层传输重复以上步骤。

结果怎么读

现象更可能的原因下一步
亮屏切换几秒内恢复,锁屏后切换恢复很慢系统后台限制或休眠延迟检查该应用的电池优化与后台权限
切换后长时间假连接,手动重连立即恢复协议或客户端未迁移会话,或保活过疏查看是否支持漫游,适度缩短保活间隔
窗口期内检测页显示运营商 IP未启用阻断验证 Kill Switch 或系统阻断设置
只在某个 Wi-Fi 下切换失败该网络有认证页或特殊限制参见 验证门户与 VPN
所有切换都要手动重连客户端未监听网络变更更新客户端,或开启 Always-on

无法确认运营商或系统的具体行为时,写「据本次实测」,不要推广为某品牌、某运营商的普遍结论。

纳入日常检查

把「亮屏切换」和「锁屏切换」两项加进换手机、系统大版本更新、换客户端之后的检查清单,与 DNS 泄漏检测放在一起做。先确认切换后能自动恢复、窗口期流量符合你的预期,再比较节点速度;否则优化的只是稳态体验,切换时的掉线与暴露窗口仍然存在。