开启 3 天免费试用
注册即可免费体验全部高级功能。
*仅限新用户;每位用户只能获得一次试用。


WireGuard 漫游让 peer 公钥身份保持不变,同时允许外层 IP 地址和 UDP 端口变化。来自新来源地址或端口的包正确通过认证后,WireGuard 会更新该 peer 的当前 Endpoint,后续流量便发往新位置。系统不会信任未经认证的“我已移动”消息。
VPN 完整指南介绍完整受保护连接。本文只讨论 WireGuard 协议层的 Endpoint 更新,而不是你切换网络时操作系统和应用可能经历的所有事件。
关键要点
- 公钥标识 peer,Endpoint 记录该 peer 当前在哪里可达。
- 最近一个正确认证包可以更新 peer 的外层 IP 地址和 UDP 端口。
- 移动后,漫游 peer 通常要先从新路径发出有效包。
- NAT 状态与可选 PersistentKeepalive 会影响可达性,但不定义身份,也不保证恢复。
- 隧道恢复不代表每个 TCP、媒体、DNS 或应用会话都能原样继续。
wg(8) 说明,已配置 Endpoint 会自动更新为来自相应 peer、最近一个正确认证包的来源 IP 地址与端口。[1]在更新过程中,公钥不会改变。这样,密码学身份与临时网络位置就被清楚分开。
手机使用家庭 Wi-Fi 时,服务器可能看到 198.51.100.7:42310。切到移动网络后,运营商 NAT 可能让它显示为 203.0.113.9:51124。只要手机从移动路径发送有效 WireGuard 包,服务器会认证它仍是同一 peer,再用新组合替换旧 Endpoint。
即使外层地址变化,10.0.0.7 这样的内层隧道地址通常仍保持不变。应用可以继续寻址同一个内层 peer,但实际会话是否存活还取决于时序、操作系统行为,以及 Endpoint 更新之外的传输协议。
| 属性 | 普通漫游中的表现 |
|---|---|
| peer 公钥 | 保持不变 |
| 外层源 IP 和端口 | 可以变化 |
| 已记忆 Endpoint | 收到有效包后更新 |
| 内层隧道地址 | 通常保持不变 |
| 系统路由可用性 | 仍须有效 |
| 应用会话 | 可继续、重试或独立失败 |
WireGuard 白皮书描述 peer 从认证数据中学习最新互联网 Endpoint。[2]新来源必须先通过认证才会被接受。随机 UDP 包不能向监听端口冒认另一 peer,也不能重定向其明文流量。
图例:1 是 peer 旧的外层地址;2 是切换网络后的新外层地址;3 是远端 peer 记忆的 Endpoint;4 是促使 Endpoint 更新的正确认证 UDP 包。虚线旧路径已经陈旧,实线新路径只有在有效流量到达后才可用。
移动一侧通常先发包,因为仍知道服务器位置。远程客户端可以保留服务器稳定主机名或公网地址作为配置 Endpoint。客户端本地网络变化后,下一个握手或数据包从新接口发出,并建立新的 NAT 映射。服务器验证该包、学习映射,再向那里回复。
Endpoint 指南说明 Endpoint 为什么是外层 地址:UDP 端口,而非隧道地址。漫游会改变这个运行目的地,却不编辑 peer 的公钥关联。
应用流量、握手重试都能触发;可选保活也可能在达到空闲间隔后产生认证流量。协议并不要求信任一种专门的网络变化通知,才能确认 peer 新位置。
时序仍很重要。如果移动操作系统暂停 VPN 进程、延迟接口回调或等待一段时间才重试,在有效流量从新位置发出前,远端仍记得旧 Endpoint。WireGuard 学习规则无法处理设备尚未发送的包。
NAT 会创建临时外层地址与端口映射。更换接入网络通常会获得不同映射,即使设备内层隧道地址没有变化。新路径上的第一个出站 WireGuard 包,为远端提供了这个映射的认证观察。
PersistentKeepalive 的作用更窄。NAT 后 peer 可以周期发送认证空包,避免当前映射在静默时过期。PersistentKeepalive 说明解释 25 秒为何只是常用示例,而非漫游保证。
保活在切换前后可能有两项帮助:没有应用数据时,它可能主动使用新路径;更新以后,它也可能维持新 NAT 映射。但它不能让封锁 UDP 的网络放行,不能唤醒无限期暂停的进程,也不能修复错误路由或密钥。
如果两个 peers 同时移动,且谁都没有保留对方的可用位置,Endpoint 学习会遇到启动问题。只有认证包先到达,位置才能更新;WireGuard 本身不提供一个通用会合或发现服务,替双方寻找两个未知新地址。
协议层漫游不会决定 Wi-Fi 消失后操作系统该使用哪个本地接口。系统仍须更新默认路由、让新网络可用,并把有关内层包交给 WireGuard。认证门户、没有数据的移动套餐、IPv4/IPv6 变化和本地防火墙都可能在这里阻断。
wg-quick(8) 能安装从 AllowedIPs 推导的路由,并管理默认路由。[3]这种设置与 WireGuard 学习 peer Endpoint 不同。正确的 peer 更新无法补偿陈旧系统路由,正确路由也无法认证 peer。
分层顺序有助于定位切换问题:
步骤 1 与 2 的通用症状应参考 Wi-Fi/移动网络切换指南。把所有切网故障都称为 WireGuard 漫游失败,会掩盖序列到底停在哪里。
WireGuard 可以很快恢复认证包流,而不保留每个上层连接。TCP 会话可能容忍短暂停顿并重传,也可能触发应用超时;实时通话可能重新协商媒体;DNS 请求可能通过新的解析路径重试;浏览器也可能建立替代连接。
内层地址保持稳定会有帮助,但本地系统仍可能删除路由或暂停 socket,远端服务也可能让会话过期。“握手已更新”与“视频通话无感”是两种验收。
应分别测量。对隧道记录切换前后握手时间、传输计数和远端 Endpoint;对应用记录会话是继续、重试还是重建。这样不会把应用政策错误归因于 WireGuard Endpoint 学习规则。
想从用户侧观察漫游,可以在 Android 手机上连接 AethoVPN,开始一次长时间下载或通话,然后从 Wi-Fi 切换到移动数据,记录隧道是否重新连接、中断持续多久,以及应用会话是否延续。保持同一个应用内位置,让网络成为唯一变化的因素。该应用没有文档说明手动 WireGuard 字段,也不承诺每个会话都能在网络切换后延续,所以每次结果都只是测量,而不是保证。测试前先下载 Android 应用。
Endpoint 更新受认证约束,离路径发送者不能随便提供未经认证的替代地址。合法 peer 移动时,加密与身份认证仍有效。
不过,WireGuard Known Limitations 记录了一种主动中间人场景:攻击者可让已记忆 Endpoint 重定向到受害地址并造成拒绝服务。[4]没有密钥的攻击者仍不能解密载荷或冒充 peer。
“只有认证包更新 Endpoint”描述正常规则,但“Endpoint 学习绝无滥用可能”超出官方边界。高风险模型还应考虑当前实现与官方限制。
在两个你有权测试的网络之间做一次受控切换。保持密钥、peer 配置、远端服务器和应用不变。记录当前的 Endpoint 和最近一次握手,切换接入路径,产生合法的隧道流量,然后观察 Endpoint 是否变为新的源地址映射。
然后把空闲和活跃两种情况分开测试。如果活跃流量能迁移,而空闲的 peer 之后收不到数据,问题可能在于 NAT 状态的保留时长。如果新接口上根本没有数据包发出,就检查操作系统的路由或应用生命周期。如果 UDP 已发出却没有收到经过认证的响应,就检查外层可达性、服务器日志、密钥、时间或过滤。
不要凭一个应用里的加载图标推断协议行为。数据包层面的 Endpoint 更新、正常的隧道交换和应用不中断,是三个范围逐步扩大的观察结论。
不会。稳定公钥用于识别 peer,漫游只更新联系它所用的当前外层 IP 与 UDP 端口。
普通 Endpoint 学习要求来自已配置 peer 的正确认证包,随机 UDP 输入无法通过身份检查。
通常是移动客户端,因为它仍保留可用服务器 Endpoint。出站包建立新 NAT 映射,并让服务器学习新来源。
不必。应用数据或握手流量都能触发更新。只有空闲期间确实需要周期认证流量时,保活才有用。
如果双方都不知道对方可达的新地址,包就无法先到达并教授新 Endpoint。WireGuard 自身不提供通用会合服务。
不一定。稳定内层地址和快速隧道恢复会有所帮助,但 TCP、应用、操作系统和远端服务各有超时与切换行为。
不能。Endpoint 学习只有在有效 UDP 包能够穿过新路径时才工作,不会绕过本地政策、认证门户、错误路由或传输封锁。
来源:
wg(8): https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8wg-quick(8): https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8Sources checked 2026 年 9 月 12 日。
延伸阅读:
注册即可免费体验全部高级功能。
*仅限新用户;每位用户只能获得一次试用。