不是 OpenVPN 不好,是你真的不用那么累。
Tecmint 最新发了一篇 WireGuard 在 Debian 13 上的部署教程,通篇传达一个意思:WireGuard 在 2026 年,已经是你的默认选择了。
但这里我想展开说说它跟 OpenVPN 的真实对比——不是什么厂商 PPT,是实际部署和跑起来之后你会遇到的那些事。
━━━ ━━━ ━━━
先看一个直观的
这是 WireGuard 的服务器配置:
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = 服务器私钥 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT ... PostDown = iptables -D FORWARD -i wg0 -j ACCEPT ...
6 行。没了。
这是 OpenVPN 的服务器配置:
ca ca.crt cert server.crt key server.key dh dh.pem tls-auth ta.key 0 port 1194 proto udp dev tun server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo cipher AES-256-GCM auth SHA256 persist-key persist-tun status openvpn-status.log verb 3 explicit-exit-notify 1
20 行,而且这还没算你还要一套完整的 CA 证书体系——生成 CA、签发服务器证书、每个客户端签一个独立证书。做一遍要你 10 分钟,如果你忘了操作顺序,从头再来又是 10 分钟。
WireGuard 的核心哲学:每个对端(peer)一个密钥对,不需要 CA,不需要证书链,不需要过期管理。
━━━ ━━━ ━━━
部署流程对比
| 步骤 | WireGuard | OpenVPN |
|---|---|---|
| 安装 | apt install wireguard,1 条命令 |
apt install openvpn easy-rsa,2 条 |
| 生成密钥 | 2 条命令,各产生一个 base64 字符串 | 要初始化 PKI、生成 CA、生成服务器/客户端证书 |
| 配置文件 | 6\~10 行 | 20\~50 行 |
| 启动 | systemctl start wg-quick@wg0 |
systemctl start openvpn@server |
| 握手成功 | 能看到时间戳和流量 | 要查日志 |
| 直连延时 | \~1ms (实测 ping 0.8\~2.8ms) | 视加密参数,通常多几 ms |
那个 ping 不是编的——是 Tecmint 测试里的实际数据:rtt min/avg/max/mdev = 0.796/1.588/2.854/0.814 ms。
━━━ ━━━ ━━━
WireGuard 的优势:为什么它更快① 在内核里跑,不在用户态
WireGuard 从 Linux 5.6 开始就集成在内核里了。这意味着数据包处理不走用户态和内核态之间的切换,直接在内核空间完成加解密和转发。OpenVPN 则是用户态进程,数据要进出两次内核。
这就是为什么 CPU 跑满的情况下,WireGuard 能多推 30\~50% 的吞吐量。
② 加密算法简单但够硬
WireGuard 只用 Curve25519(密钥交换)、ChaCha20Poly1305(对称加密+认证)、BLAKE2s(哈希),三件套全是在现代 CPU 上有硬件加速支持的。
OpenVPN 的可选加密组合太多,很多人选了「看上去很安全但性能很差」的组合(例如 AES-256-CBC 加 SHA-1 HMAC,既慢又不够安全)。
③ 无连接设计(connectionless)
WireGuard 的概念里没有「连接」。它发一个加密包,对端收到了就解密,解密成功了就算握手。没有三次握手,没有保活重连状态机。这对移动端特别友好——手机切网络从 Wi-Fi 到 5G,WireGuard 瞬间恢复,OpenVPN 可能要断开重建。
━━━ ━━━ ━━━
什么时候不该用 WireGuard
有一个关键缺陷:
WireGuard 只支持 UDP。
如果你的网络环境(公司防火墙、某些国家的 ISP)主动封 UDP 或者限速 UDP,那 WireGuard 就废了。这时候你需要 OpenVPN over TCP 443,用 HTTPS 的端口做伪装穿透防火墙。
这也是 OpenVPN 在特定场景下仍然不可替代的原因。
━━━ ━━━ ━━━
完整部署过程(极简版)服务端(Debian 13)
# ① 安装
sudo apt update && sudo apt install wireguard -y
# ② 加载内核模块
sudo modprobe wireguard
# ③ 生成密钥对
wg genkey | sudo tee /etc/wireguard/server_private.key
sudo chmod 600 /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
# ④ 写配置 /etc/wireguard/wg0.conf
配置就这几行:
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = 上面生成的私钥
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# ⑤ 开启 IP 转发
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p
# ⑥ 启动
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
客户端(以 Ubuntu 为例)
一样的安装,一样的生成密钥对。客户端配置:
[Interface] Address = 10.0.0.2/24 PrivateKey = 客户端私钥 DNS = 8.8.8.8
[Peer] PublicKey = 服务端公钥 Endpoint = 服务端公网IP:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
然后在服务端加一行:
[Peer] PublicKey = 客户端公钥 AllowedIPs = 10.0.0.2/32
重载配置不重启即可生效:
sudo wg addconf wg0 <(sudo wg-quick strip wg0)
━━━ ━━━ ━━━
加一个客户端有多快?
三步:
- 客户端机器生成密钥对
- 客户端写自己那 8 行配置
- 服务器加一行
[Peer]+ 客户的公钥
不要签证书,不要上传文件,不要等任何东西过期。生成密钥到握手成功,1 分钟。
━━━ ━━━ ━━━
一些你在教程里看不到的坑
关于 PersistentKeepalive
WireGuard 是静默协议——没数据的时候就什么都不发。但经过 NAT 路由器,如果一段时间没流量,NAT 映射会被回收。PersistentKeepalive = 25 的作用就是每 25 秒发一个空包保活。没有这一行,你的手机锁屏 5 分钟后 VPN 可能就断了。
关于 AllowedIPs
AllowedIPs = 0.0.0.0/0 是全流量走 VPN。如果你只想翻墙、或者只访问公司内网,精确写成 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 即可。
关于防火墙
很多人的 WireGuard 搭好了就是连不上,99% 是服务器防火墙没放行 UDP 51820 端口。检查:
sudo ufw allow 51820/udp
关于内核模块
如果在 Debian 13 上 modprobe wireguard 报错,大概率是内核头没装:
sudo apt install linux-headers-$(uname -r)
━━━ ━━━ ━━━
一句话总结
| 场景 | 推荐 | 原因 |
|---|---|---|
| 自己搭 VPN 翻墙 | WireGuard | 配置简单、UDP 直连快 |
| 公司远程办公 | WireGuard | 客户端管理方便,一个密钥对一台设备 |
| 网络封 UDP | OpenVPN TCP 443 | 没得选 |
| 大规模部署 | WiresGuard + wg-dashboard | 加上 Web 管理界面后就没短板了 |
WireGuard 已经是 Linux 内核的居民了。你的 OpenVPN 配置再长、调得再好,从内核模块支持的那一刻起,性能差距就是物理层面的。
后记: 很多人学 VPN 配置从 OpenVPN 入门,然后一直用下去。不是说 OpenVPN 不行,但你值得看看 WireGuard 这头更快的野兽。如果你已经在用 OpenVPN 稳定跑着了,完全没必要急着换——等下次重装服务器的时候,花 5 分钟试试 WireGuard,你会回来谢我的。
━━━ ━━━ ━━━
━━━ ━━━ ━━━
*欢迎关注 LeisureLinux 以及同名 B 站频道,每天一篇深度 Linux 技术解读。*
Mullvad GotaTun 安全审计深度报告:基于 Rust 的 WireGuard 新架构稳吗?