网络一切换,VPN 为什么就“掉线”一下
手机从 Wi-Fi 切到蜂窝网络,或者从一个 Wi-Fi 切到另一个,设备的出口地址就会变化。而 VPN 隧道是建立在旧地址之上的,地址一变,原来的连接就失效了,需要重新建立。这就是为什么切换网络后经常会有几秒到几十秒的中断,甚至需要手动重新连接。这篇文章把原理、不同协议的表现和减少断连的方法讲清楚,适合经常在通勤、出差路上使用手机的用户。
原理:为什么地址变了隧道就断
隧道依赖的是设备当前的来源地址
服务器收到数据包时,会记录它的来源地址和端口,回复时也发回同一个地址。当手机切换网络,来源地址变了,服务器里记录的还是旧地址,回复就发到了一个已经不存在的位置,连接也就断了。
不同协议对这件事的处理方式不同
WireGuard 没有“会话”的概念,服务器会把最近收到的、校验通过的数据包所在地址作为对端的新地址,这种“漫游”能力让它在网络切换时恢复得很快。OpenVPN 一般需要检测到超时后重新连接,恢复速度取决于保活和超时设置。客户端的实际表现还会受自己实现的重连逻辑影响,不能只看协议名称。
省电和后台限制会让问题更明显
手机系统为了省电,会限制后台应用的运行和网络活动。如果 VPN 客户端被系统暂停,就无法及时检测到网络变化并重建隧道,表现为切换网络后“一直不恢复”。
| 情形 | 常见表现 | 可以尝试的处理 |
|---|---|---|
| Wi-Fi 切到蜂窝网络,几秒后恢复 | 隧道正在重建 | 属于正常现象,可开启断线保护避免期间直连 |
| 切换后一直显示已连接但打不开网页 | 隧道状态未更新 | 手动断开再重新连接 |
| 锁屏一段时间后断开 | 客户端被系统限制后台运行 | 在系统设置里允许客户端后台运行 |
| 每次切换都要手动重连 | 客户端自动重连未生效 | 检查客户端设置里的自动重连选项 |
自己记录一下中断有多久
- 连接 VPN,打开一个能持续显示状态的应用,比如在终端里持续 ping,或者播放一个直播。
- 手动关闭 Wi-Fi,让手机切到蜂窝网络,记下从切换到恢复的时间。
- 再打开 Wi-Fi,切回来,再记一次。
- 重复三次,取中位数,作为这台设备和这款客户端的基线。
- 每调整一项设置,就重新记录一次,用数据判断哪项设置真的有效。
减少断连的几个实用办法
允许客户端在后台运行,关闭针对它的省电限制
在手机的电池或应用管理设置里,把客户端设为“不限制”或“允许后台活动”。具体菜单名称因手机品牌和系统版本不同,以手机上实际显示为准。
关掉“网络不好时自动切换到蜂窝网络”
很多手机默认开启 Wi-Fi 辅助、智能网络切换之类的功能,在信号波动时频繁切换。如果在一个稳定的 Wi-Fi 下工作,关掉它能减少不必要的切换。
需要不间断时,开启断线保护并接受短暂断网
如果你的场景对出口地址一致性要求很高,切换期间宁可短暂断网,也不希望回落到本地直连。这时可以开启断线保护,代价就是切换期间会明显的断网。
出差和通勤路上的实际建议
如果你经常在地铁、高铁等信号变化频繁的环境中使用手机,建议把客户端的自动重连选项打开,并在系统设置里允许它在后台运行。到达稳定的 Wi-Fi 环境之后,可以主动断开再重新连接一次,让隧道建立在稳定的网络上,而不是沿用路上不断切换留下的状态。对于重要的在线会议,提前连接到稳定网络并保持不动,比临时在途中切换更可靠。平时多留意客户端里显示的连接状态和时间,有助于发现重连是否真的生效。
如果想在手机上测试自动重连的表现,可以试试 TonBoVPN,用上面的五步记录一下切换网络的恢复时间,比直觉判断更可靠,结果以你的设备和网络为准。
小结:切换会断,关键是恢复多快
网络切换时短暂中断是正常的,真正值得关注的是恢复的速度和是否需要手动操作。先记录基线,再处理后台限制和自动切换这两个最常见的原因,比直接更换线路更有效。
