同样是连接 VPN,有的协议下载能跑到 400Mbps,有的却只能到几十兆。差异的根源在协议设计。WireGuard 是 ProtonVPN 客户端默认推荐的新一代协议,它把「简单」做到了极致——整个核心代码只有约 4000 行,而 OpenVPN 的代码量是其几十倍。代码越少,可以出错的点就越少。
VPN 协议负责在客户端和服务器之间建立加密隧道,把明文流量包进密文里转发。传统的 OpenVPN 诞生于 2001 年,为了兼容各种场景,积累了庞大的配置选项和握手流程。WireGuard 由安全研究员 Jason A. Donenfeld 在 2016 年开始开发,2020 年进入 Linux 内核主线,走的是「只保留必要的」路线。
一、VPN 协议为什么有快慢之分
速度差距来自三个层面:握手复杂度、加密算法效率、以及内核态与用户态的切换开销。握手越简单,建立连接越快;加密算法越现代,吞吐越高;代码运行在内核态,就比频繁在用户态与内核态之间拷贝数据快得多。WireGuard 在这三点上都做了取舍。
二、WireGuard 的核心设计
WireGuard 把整个连接抽象成「Cryptokey Routing」(密钥路由)。每个对等节点都有一个公钥,流量根据目标公钥路由。这跟传统 VPN「先建隧道、再路由」的思路不同——WireGuard 的路由表本身就内建了加密语义。
它只使用现代密码学原语,不保留任何为兼容旧设备而存在的过时算法。这个选择带来的好处是攻击面极小:没有复杂的协商状态机,就没有针对状态机的中间人攻击。
三、加密与密钥交换机制
| 密码学组件 | WireGuard 采用 | 作用 |
|---|---|---|
| 密钥交换 | Curve25519(椭圆曲线) | 完成安全的密钥协商 |
| 对称加密 | ChaCha20 | 加密数据包内容 |
| 完整性校验 | Poly1305 | 防止数据被篡改 |
| 哈希 | BLAKE2s | 密钥派生与指纹 |
握手采用 1-RTT(一次往返)设计:客户端发一个 Initiation 包,服务器回一个 Response 包,隧道即建立。相比之下,OpenVPN 的完整 TLS 握手往往需要多次往返,在网络延迟较高的场景下差距被进一步放大。
四、WireGuard 与 OpenVPN 实测对比
下面的数据来自 ProtonVPN 内部在同等网络条件下的基准测试,测试机为 Windows 11、千兆宽带,分别使用 WireGuard 与 OpenVPN(UDP)连接同一节点。
| 测试指标 | WireGuard | OpenVPN (UDP) | 差距 |
|---|---|---|---|
| 平均下载速度 | 486 Mbps | 214 Mbps | 快 127% |
| 平均握手耗时 | 0.18 秒 | 1.4 秒 | 快 7.7 倍 |
| CPU 占用(满载) | 14% | 31% | 低 55% |
| 网络切换重连 | 0.3 秒 | 4.8 秒 | 快 16 倍 |
北京的视频剪辑师何先生日常要上传大体积素材到海外服务器,他对比过两个协议。「用 OpenVPN 传一个 20GB 的工程文件要半个多小时,切到 WireGuard 之后稳定在 400 多兆,十几分钟就传完了。」对依赖大流量传输的用户来说,这个差异不是纸面数字,而是实打实的等待时间。
五、结语
WireGuard 的「快」不是靠堆硬件,而是靠精简的设计换来的:更少的代码、更现代的算法、更短的握手。回到开头那个快慢之分的疑问,答案就藏在这 4000 行代码里。ProtonVPN 已在所有平台客户端内置 WireGuard,连接时在协议选项中即可切换。前往 下载中心 获取客户端,亲身体验新一代协议的速度。
WireGuard 传大文件真的快,做视频的强烈建议切过去。