网络一切换,VPN 为什么就“掉线”一下

手机从 Wi-Fi 切到蜂窝网络,或者从一个 Wi-Fi 切到另一个,设备的出口地址就会变化。而 VPN 隧道是建立在旧地址之上的,地址一变,原来的连接就失效了,需要重新建立。这就是为什么切换网络后经常会有几秒到几十秒的中断,甚至需要手动重新连接。这篇文章把原理、不同协议的表现和减少断连的方法讲清楚,适合经常在通勤、出差路上使用手机的用户。

切换网络时隧道的重建过程
切换网络时隧道的重建过程

原理:为什么地址变了隧道就断

隧道依赖的是设备当前的来源地址

服务器收到数据包时,会记录它的来源地址和端口,回复时也发回同一个地址。当手机切换网络,来源地址变了,服务器里记录的还是旧地址,回复就发到了一个已经不存在的位置,连接也就断了。

不同协议对这件事的处理方式不同

WireGuard 没有“会话”的概念,服务器会把最近收到的、校验通过的数据包所在地址作为对端的新地址,这种“漫游”能力让它在网络切换时恢复得很快。OpenVPN 一般需要检测到超时后重新连接,恢复速度取决于保活和超时设置。客户端的实际表现还会受自己实现的重连逻辑影响,不能只看协议名称。

省电和后台限制会让问题更明显

手机系统为了省电,会限制后台应用的运行和网络活动。如果 VPN 客户端被系统暂停,就无法及时检测到网络变化并重建隧道,表现为切换网络后“一直不恢复”。

情形常见表现可以尝试的处理
Wi-Fi 切到蜂窝网络,几秒后恢复隧道正在重建属于正常现象,可开启断线保护避免期间直连
切换后一直显示已连接但打不开网页隧道状态未更新手动断开再重新连接
锁屏一段时间后断开客户端被系统限制后台运行在系统设置里允许客户端后台运行
每次切换都要手动重连客户端自动重连未生效检查客户端设置里的自动重连选项

自己记录一下中断有多久

  1. 连接 VPN,打开一个能持续显示状态的应用,比如在终端里持续 ping,或者播放一个直播。
  2. 手动关闭 Wi-Fi,让手机切到蜂窝网络,记下从切换到恢复的时间。
  3. 再打开 Wi-Fi,切回来,再记一次。
  4. 重复三次,取中位数,作为这台设备和这款客户端的基线。
  5. 每调整一项设置,就重新记录一次,用数据判断哪项设置真的有效。

减少断连的几个实用办法

允许客户端在后台运行,关闭针对它的省电限制

在手机的电池或应用管理设置里,把客户端设为“不限制”或“允许后台活动”。具体菜单名称因手机品牌和系统版本不同,以手机上实际显示为准。

关掉“网络不好时自动切换到蜂窝网络”

很多手机默认开启 Wi-Fi 辅助、智能网络切换之类的功能,在信号波动时频繁切换。如果在一个稳定的 Wi-Fi 下工作,关掉它能减少不必要的切换。

需要不间断时,开启断线保护并接受短暂断网

如果你的场景对出口地址一致性要求很高,切换期间宁可短暂断网,也不希望回落到本地直连。这时可以开启断线保护,代价就是切换期间会明显的断网。

出差和通勤路上的实际建议

如果你经常在地铁、高铁等信号变化频繁的环境中使用手机,建议把客户端的自动重连选项打开,并在系统设置里允许它在后台运行。到达稳定的 Wi-Fi 环境之后,可以主动断开再重新连接一次,让隧道建立在稳定的网络上,而不是沿用路上不断切换留下的状态。对于重要的在线会议,提前连接到稳定网络并保持不动,比临时在途中切换更可靠。平时多留意客户端里显示的连接状态和时间,有助于发现重连是否真的生效。

减少切换断连的三件事
减少切换断连的三件事

如果想在手机上测试自动重连的表现,可以试试 TonBoVPN,用上面的五步记录一下切换网络的恢复时间,比直觉判断更可靠,结果以你的设备和网络为准。

小结:切换会断,关键是恢复多快

网络切换时短暂中断是正常的,真正值得关注的是恢复的速度和是否需要手动操作。先记录基线,再处理后台限制和自动切换这两个最常见的原因,比直接更换线路更有效。