WireGuard是什么?在中国能用吗,和OpenVPN有什么区别
WireGuard 是一种 VPN 协议,2020 年 3 月进入 Linux 5.6 内核,核心代码只有 4000 行左右,用 UDP 传输,以速度快、配置简单、耗电少出名。但在中国大陆跨境使用,原版 WireGuard 很容易被识别和阻断:它的握手包有固定特征,官方也明确说不做流量混淆。
所以它好不好要看用在哪里。这篇先用一张表把它和 OpenVPN 放在一起比,再讲它为什么在国内容易被识别、有哪些缺点,以及两个流传很广的误解。
WireGuard 和 OpenVPN 的区别
| 对比项 | WireGuard | OpenVPN |
|---|---|---|
| 诞生时间 | 2016 年前后公开,2020 年进入 Linux 内核 | 2001 年 |
| 代码量 | 约 4000 行(内核实现) | 十万行以上(含依赖的 OpenSSL 更多) |
| 传输方式 | 只有 UDP | UDP 或 TCP 都可以 |
| 加密算法 | 固定一套:Curve25519、ChaCha20-Poly1305、BLAKE2s | 通过 OpenSSL 可以选很多种 |
| 速度和耗电 | 更快、更省电,手机切换网络时恢复也快 | 相对慢,开销大 |
| 配置 | 一对密钥加几行配置 | 证书、参数多,配置复杂 |
| 流量混淆 | 不做 | 本身也不做,特征同样明显 |
| 中国大陆跨境使用 | 容易被识别阻断 | 早就容易被识别阻断 |
简单说:在不受干扰的网络里,前者几乎全面胜过 OpenVPN;但两者都不是为对抗流量识别设计的,在国内跨境使用都不合适。
为什么在国内容易被识别
这个协议的每个包开头都是同一种格式:第 1 个字节是消息类型(1 是握手发起,2 是握手回应,4 是数据),后面紧跟 3 个固定为 0 的字节。握手包的长度也是固定的:
| 包类型 | 开头 4 个字节 | 固定长度 |
|---|---|---|
| 握手发起 | 01 00 00 00 | 148 字节 |
| 握手回应 | 02 00 00 00 | 92 字节 |
| 数据包 | 04 00 00 00 | 不固定 |
内容是加密的,看不出你在访问什么;但「这是一条这种协议的连接」这件事,看前几个字节和包长就能判断出来。识别设备不需要解密,按特征拦下就行。
官方在「已知限制」里写得很直白:协议不关注混淆,混淆应该在它上面一层去做。这是一个设计取舍:协议保持简单,代价是特征明显。另外,国内一些网络对跨境 UDP 流量本身就有限速,只能走 UDP 的它在这里也吃亏。
它的四个缺点
- 特征明显,不做混淆:上一节说的,这是在国内跨境用不了的主要原因
- 只支持 UDP:官方明确不支持走 TCP,理由是 TCP 套 TCP 性能很差。遇到只放行 TCP 的网络(比如部分公司和酒店网络)就连不上
- 服务器会记住客户端最后的 IP:它靠这个实现漫游,手机从 Wi-Fi 切到流量不用重连;代价是服务器内存里有你的真实 IP。商业 VPN 用它时要额外做处理
- 加密算法不能换:好处是没有「选错算法」的风险,坏处是万一其中某个算法出问题,只能整体升级协议
两个流传很广的误解
「OpenVPN 支持 4096 位密钥,比它的 256 位安全」
这是把两种密钥放在一起比位数。4096 位说的是 RSA 这类非对称密钥,256 位说的是 Curve25519 这种椭圆曲线密钥,或者 ChaCha20、AES 这类对称密钥。不同类型的密钥,位数不能直接比:256 位的椭圆曲线密钥,强度大约相当于 3072 位的 RSA。它用的这套算法在安全性上没有短板。
「NordLynx 就是做了混淆的版本」
NordLynx 是 NordVPN 在这个协议基础上做的,额外加了「双 NAT」,用来解决上面说的「服务器记住客户端 IP」这个隐私问题,跟流量混淆无关。它的握手特征和原版一样。
适合用在哪些场景
| 场景 | 适不适合 |
|---|---|
| 公司内网、家里和云服务器组网 | 很适合,快、简单、稳定 |
| 境外两地之间、或者不经过审查的网络 | 很适合 |
| 手机长期挂着 VPN,在意耗电 | 适合 |
| 中国大陆跨境访问境外网站 | 原版不适合,容易被识别 |
| 只能用 TCP 的网络环境 | 不适合,它只有 UDP |
需要在国内跨境使用的,要选本身就为抗识别设计的协议。几种常见协议按场景怎么选,见 VPN协议怎么选。
我们为什么选了 Reality
我们的主协议是 VLESS + Reality:握手时借用真实网站的证书,从外面看就是在访问一个正常的 HTTPS 网站,原理见 Reality协议是什么。备用协议是 Hysteria2,它同样走 UDP,但加了自定义证书和流量混淆,见 Hysteria2是什么。
在不受干扰的网络里,它比我们的主协议更简单、更省电,而我们并不提供它。如果你要的是给公司或家里的设备组网,自己搭一套会更合适,我们的服务在这件事上帮不上忙。
常见问题
WireGuard 是什么?
一种开源的 VPN 协议,代码精简、只走 UDP、用一套固定的现代加密算法,2020 年进入 Linux 内核。特点是快、配置简单、省电。
WireGuard 在中国能用吗?
国内的公司内网、组网这类不跨境的用法没问题。用来跨境访问境外网站的话,原版握手特征明显,很容易被识别阻断,不适合。
WireGuard 和 OpenVPN 哪个好?
不受干扰的网络里前者更好:更快、更省电、配置更简单。在国内跨境使用,两个都容易被识别,都不推荐。
WireGuard 有什么缺点?
不做流量混淆,特征明显;只支持 UDP;服务器会记住客户端最后的 IP;加密算法不能更换。
WireGuard 客户端有哪些?
官方提供 Windows、macOS、Linux、iOS 和 Android 客户端,都可以在官网找到下载入口。导入服务端给的配置文件或扫二维码就能用。