实战指南:用 WireGuard 打通全网设备的 VPN 内网通道
大家好,我是 33blog 的运维老司机。今天要分享的是我折腾 WireGuard 三个月的实战经验——如何用这个轻量级 VPN 让手机、笔记本、云服务器全部接入同一个内网。相比 OpenVPN 那些老前辈,WireGuard 的配置简单得让人感动,但有些坑还是得提前预警。
为什么选择 WireGuard?
去年公司要求全员接入内网时,我测试过各种方案:OpenVPN 配置复杂得像在写论文,IPSec 的 NAT 穿透让人头秃,直到遇见 WireGuard。它的优势太明显了:
- 内核级性能,传输速度比 OpenVPN 快 2-3 倍
- 配置文件就一个文本文件,改完立即生效
- 移动端切换网络时自动重连,不会像 IPSec 那样断线
服务器端配置(Linux 示例)
我的 VPS 是 Ubuntu 20.04,先装依赖包:
sudo apt update
sudo apt install wireguard resolvconf
生成服务器密钥对(千万保管好私钥):
wg genkey | sudo tee /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
创建配置文件 /etc/wireguard/wg0.conf
,重点注意:
[Interface]
Address = 10.8.0.1/24 # 内网网段
ListenPort = 51820 # 记得开防火墙
PrivateKey = <服务器私钥>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
客户端配置踩坑实录
给手机(Android)配置时遇到大坑:WireGuard 官方APP要求必须填写 DNS,否则无法保存配置。而 macOS 客户端却不需要,这兼容性…
这是我的手机配置模板:
[Interface]
PrivateKey = <客户端私钥>
Address = 10.8.0.2/24
DNS = 8.8.8.8 # 必须项!
[Peer]
PublicKey = <服务器公钥>
AllowedIPs = 10.8.0.0/24
Endpoint = your-server.com:51820
PersistentKeepalive = 25 # 保持 NAT 穿透
网络优化技巧
实测发现两个提速秘诀:
- 在服务器
wg0.conf
添加MTU = 1280
(避免某些网络分片) - 手机连接 WiFi 和 5G 时,用
wg-quick down wg0
切换网络后立即重连
最后提醒:WireGuard 默认没有流量加密(!),敏感业务记得在 AllowedIPs
里指定路由,别把所有流量都走 VPN。
现在我的设备们终于能在同一个 10.8.0.0 网段里愉快玩耍了,有什么问题欢迎在评论区交流~
WireGuard的配置确实比OpenVPN简单多了,最近也准备试试看
请问MTU设置成1280对性能影响大吗?🤔
老哥写得真详细,收藏了!之前被OpenVPN折腾得不行
移动端必须填DNS这个设计真的很迷,我第一次配置也卡在这里半天
实测WireGuard确实稳定,在公司连回家里的NAS再也不掉线了
为什么我的Ubuntu22.04装完后提示找不到wg命令?有人遇到过吗
这个教程比官方文档清楚多了,新手友好👍
正在考虑要不要把公司的VPN迁移到WireGuard,看完更有信心了