← LeisureLinux 文章索引
LeisureLinux · 微信公众号文章

WireGuard vs OpenVPN:都是 VPN,为什么人家配置只有 10 行你却要写 50 行?

Linux/运维 阅读原文(微信)↗

不是 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)

━━━ ━━━ ━━━

加一个客户端有多快?

三步:

  1. 客户端机器生成密钥对
  2. 客户端写自己那 8 行配置
  3. 服务器加一行 [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 新架构稳吗?

架构即防御:拆解 SASE 如何在底层重构零信任安全

拒绝被大厂"围猎":5 款带你重获数字主权的 Linux 服务器系统

零信任安全架构全景解析:从概念到落地的完整指南(2026版)

本文整理自微信公众号 LeisureLinux 的原创内容(Linux / AI / 安全 硬核技术)。

· 阅读原文(微信公众号)

· 关注公众号 LeisureLinux,第一时间获取技术深度内容。

LeisureLinux 公众号二维码(微信扫一扫关注)