跳到主要内容

用手机跑 VPN 的人都熟悉那一刻:你走出咖啡馆,手机断开 Wi-Fi,接上移动数据,你只能希望隧道别断。有些协议在这时连接会崩掉,你得等应用重新连接。WireGuard 的设计让这种切换成为常态:它的漫游行为可以在设备更换地址之后让隧道继续运行,往往没有明显的中断。

本文从数据包层面讲清 WireGuard 漫游到底做了什么、为什么行得通、哪些部分取决于你或你的 VPN 应用,以及还有哪些地方可能出问题。这是协议知识介绍,而不是设置教程,也不声称任何具体服务商提供哪些协议。想从更宽的角度对比老协议,请看 WireGuard 与 OpenVPN 对比。

漫游要解决的问题

每个互联网连接都由地址和端口来描述。传统 VPN 会话往往与建立它的那对地址绑定。手机一换网络,公网地址也跟着变,旧会话就和服务器认得的信息对不上了。服务器丢弃数据包,客户端等到超时,然后一切从头协商。

在网络间切换是常有的事:

  • 通勤的人在去车站的路上,从家里 Wi-Fi 切到移动数据。
  • 笔记本用户在办公室合上盖子,到咖啡馆再打开。
  • 旅行者的手机在同一个下午里,在酒店、机场和移动网络之间来回切换。
  • 家里的宽带在路由器重启后换了新地址。

如果每次都需要一次明显的重连,VPN 就会变成负担,人们会干脆关掉它。漫游就是针对这一点的设计答案。

WireGuard 漫游如何工作

WireGuard 不把会话绑定在地址上。每个对端由公钥来标识,配置里写明这个密钥可以使用哪些内部地址。对端的外部 IP 和 UDP 端口,称为端点(endpoint),只被视为可以变化的提示信息。

规则很短:

  1. 对端把加密数据包发往对方最后已知的端点。
  2. 数据包到达后,接收方用会话密钥检验它是否真实。
  3. 如果数据包有效,且源地址与保存的端点不同,接收方就把端点更新为新的源地址。
  4. 之后的回复就发往新地址。

就这些。没有单独的漫游消息,也没有协商。来自新网络的第一个真实数据包,就重新告诉对方你在哪里。参考资料里的白皮书描述了这一行为及其背后的密码学设计。

为什么这样是安全的

攻击者复制你的一个数据包,再从别的地址重放,并不能控制隧道。这个包要么通不过认证,要么是被协议的重放保护丢弃的重复包。端点只会因证明了会话密钥的数据包而改变,而密钥只有真正的两端才持有。

哪一方可以漫游

当一方有稳定、可到达的地址,另一方在移动时,漫游效果最好。这正是 VPN 的常见形态:网关固定不动,你的手机或笔记本四处走动。

情形 是否可行 原因
手机漫游,网关地址固定 可行 手机发包,网关学到新端点
网关地址不变,但手机在 NAT 后 配合 keepalive 可行 手机发出的包让 NAT 映射保持打开
网关换了地址,手机没换 视情况 手机会继续发往旧地址,直到重新解析配置
两端同时更换地址 通常不行 谁也不知道第一个包该发往哪里
两台设备各在不同 NAT 后,没有中继 需要辅助 谁都无法先被联系到,见下文

最后两行更像是点对点 mesh 的情形,而不是手机连接网关。这类设计如何应对,可参阅 CGNAT 环境下的 VPN。

Keepalive 与 NAT 的问题

这里有个坎。漫游依赖于从新地址到达的数据包。如果设备很安静,什么也不发,网关就没有理由知道变化。更糟的是,许多家用路由器和移动网络在沉默几十秒后就会忘记 NAT 映射,于是来自网关的入站数据包不再到达,尽管并没有真正断开。

WireGuard 提供一个可选设置,叫 persistent keepalive。以较短间隔(例如 25 秒)启用后,即使没什么要说,对端也会发一个空的、已认证的数据包。这有两个作用:

  • 让路径上的 NAT 映射保持有效。
  • 在变化发生后的几秒内,告诉对方设备当前的端点。

代价是一点点流量和一点电量。对整天使用的手机来说,这样的取舍通常合理,许多应用会替你选好合适的值。对有线连接、位置固定的台式机,可能根本不需要 keepalive。想了解电量方面,请看 VPN 会耗电吗。

切换期间的密钥轮换与握手

WireGuard 还会按计时器刷新会话密钥,有流量时大约每隔几分钟通过一次简短握手完成。漫游与密钥轮换是两个独立的机制,但相互配合得很有用:握手包本身也会更新端点。如果手机换了网络,并从新地址发出握手,网关马上就知道了这次迁移。

一个简短的时间线例子:

  1. 09:00:00:手机在 Wi-Fi 上,隧道正常。
  2. 09:00:10:你离开大楼,手机切换到移动数据,获得新地址。
  3. 09:00:11:应用发出数据包,网关验证后更新你的端点。
  4. 09:00:11 之后:回复到达新地址。加载到一半的页面可能短暂停顿,然后继续。

如果第 3 步要等你做点什么,比如打开某个应用,那段延迟就是你感觉到的隧道“卡住了”。

为什么漫游后隧道仍可能卡住

漫游不是魔法。以下是卡住的常见原因,按值得检查的顺序排列。

  1. 新网络屏蔽 UDP。 WireGuard 使用 UDP。有些酒店、办公室和公共网络会过滤它,来自新地址的数据包就到不了。换到移动数据或别的网络可以验证。
  2. NAT 映射过期。 旧路径一直存在到过期,回复无处可去。keepalive 通常能避免。
  3. 端点名称只解析了一次。 如果网关是用主机名配置的,而它的地址变了,客户端可能一直使用旧地址。重连时会重新解析名称的应用能处理这种情况,有些则需要重启。
  4. 操作系统暂停了应用。 激进的省电设置可能在切换的那一刻让 VPN 进程休眠。
  5. 强制门户(captive portal)。 新的 Wi-Fi 可能要求先通过登录页面,才允许流量通过。在此之前 VPN 无法穿过。参见 VPN 与强制门户问题。
  6. 数据包大小。 新网络的最大包长度可能更小,大包会消失。VPN 的 MTU 问题 解释了这种症状。

如果遇到卡住,VPN 断开后如何重新连接 里的快速步骤讲了如何干净地关闭再打开连接,提升 VPN 连接稳定性 则更进一步。

与其他协议的漫游对比

其他协议以各自的方式解决同一问题。带有 MOBIKE 扩展的 IKEv2 也可以在不重建整个会话的情况下更新地址,所以在手机上口碑不错,细节见 WireGuard 与 IKEv2 对比。常见模式下的 OpenVPN 往往要在地址变化后重新建立会话,所以延迟更容易被察觉。这些是一般性的设计差异,你看到的结果还取决于应用和操作系统。

自己测试漫游的简单方法

不需要特殊工具,就能看到自己设备的表现。在一部已经使用 VPN 应用的手机上试试。

  1. 在家里的 Wi-Fi 上连接 VPN,确认网页能加载。
  2. 开始一个持续但无害的东西,比如一段较长的音频流,或一个 ping 测试应用。
  3. 从快捷设置里关闭 Wi-Fi,让手机转到移动数据,记下时间。
  4. 观察音频停顿多久。停几秒是不错的结果;停半分钟以上,说明应用可能在等超时或握手。
  5. 重新打开 Wi-Fi 再试一次。切回来的表现常与切出去不同,因为手机可能需要一点时间才会优先选 Wi-Fi。
  6. 再换一个网络试一次,比如咖啡馆,因为过滤 UDP 的网络会完全改变结果。

把看到的情况记下来。如果在每个网络上停顿都很长,先看应用的电池和后台设置,再怪协议。如果只在某个网络上很长,问题多半出在那个网络上。这样的观察比任何经验法则都有用,因为结果取决于手机、操作系统和 VPN 应用三者的组合。笔记本也能同样测试:从 Wi-Fi 切到手机热点,同时看看长时间下载会怎样。

漫游做不到的事

  • 它不能修复糟糕的网络。 如果新连接又慢又拥挤,隧道也一样。
  • 它不会隐藏你换过网络。 网关在正常运行中会学到你的新地址,网络运营商也能看到这些变化。
  • 它不保证所有应用都能挺过去。 个别下载、通话和游戏会话仍可能掉线,因为是应用本身丢了连接,而不是隧道。
  • 它本身不是隐私功能。 它让隧道更方便。隐私取决于运营方、你的设置和你的习惯。

总结

WireGuard 漫游之所以可行,是因为对端靠密码学密钥而不是地址来识别。当已认证的数据包从新地址到达,接收方更新保存的端点并向那里回复,无需单独协商。keepalive 帮助处于 NAT 后的设备保持可达,而大多数卡顿源于 UDP 被屏蔽、映射过期、主机名只解析一次或强制门户。你可以在隧道运行时切换网络来测试自己的设备,卡住时参考稳定性指南。

如果想在自己的手机和笔记本上试用 VPN 应用,下载页面 提供免费应用,价格页面 说明了预付通行证的运作方式。

常见问题

什么是 WireGuard 漫游?

指 WireGuard 的对端可以更换公网 IP 或端口,例如手机从 Wi-Fi 切到移动数据,而不需要手动重连。另一端一旦收到来自新地址、并通过认证的数据包,就会更新自己记录的发送目标。

漫游需要我配置什么吗?

漫游是协议设计的一部分,默认就有。你可能会配置的是 keepalive 间隔(帮助处于 NAT 后的设备保持可达),以及端点名称的解析方式。

WireGuard 隧道的两端能同时漫游吗?

如果两端同一时刻都换了地址,而且谁也不知道对方现在在哪,就通常不行。实际使用中,一端往往有稳定的地址(比如网关),漫游的一端就能重新“报到”。

为什么切换网络后隧道会卡住?

常见原因有:新网络屏蔽或过滤了 UDP、NAT 映射已过期、主机名只在启动时解析了一次,或应用在等下一次握手。关闭再打开连接通常就能恢复。

漫游会降低隐私或安全吗?

不会。新地址只对通过协议密码学校验的数据包生效,所以攻击者复制一个数据包,再从别处发送,也无法把隧道引向别处。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

  • XPASS VPN 创始人
  • eSIMonline.asia 联合创始人
  • 7 年以上网络营销经验
  • Cojourney Visa 与 Cojourney Travel 创始人

短途出行或忙碌的一个月,需要 VPN?

XPASS 提供按天数计算的预付通行证。一次付款,不会自动续费。

查看通行证

继续阅读

VPN 安全

WireGuard 与 OpenVPN 有什么区别

WireGuard 和 OpenVPN 都能建立加密隧道,但设计、复杂度和灵活性不同。本文用通俗的方式比较,并说明该怎样选择。

阅读约 9 分钟

VPN 安全

WireGuard 与 IKEv2:该选哪个协议

WireGuard 与 IKEv2 都适合手机,但在切换网络的方式、防火墙眼中的样子以及设计对象上各不相同。用评分表和一周试用法来选择。

阅读约 9 分钟

VPN 基础

什么是 VPN 协议?

VPN 协议规定了你的设备与 VPN 服务器如何连接并保护流量。本文用通俗的语言讲清楚它的含义和主要取舍。

阅读约 9 分钟

故障排除

VPN 在 4G/5G 移动数据下用不了怎么办

VPN 在 Wi-Fi 下正常、在 4G 或 5G 下失败,多半是被手机的数据规则、运营商网络或信号切换绊住。本文教你一步步查。

阅读约 9 分钟

设备指南

运营商级 NAT(CGNAT)下使用 VPN:能用与不能用的

CGNAT 让许多用户共用一个公网地址。了解为什么 VPN 应用在其后仍然可用,哪些功能会失效,以及你有哪些选择。

阅读约 9 分钟