WireGuard实操
定位说明:这篇是文档学习整理,WireGuard 的版本演进快、各平台客户端差异大,文中配置是"最小可用骨架"——真部署时以官方文档 https://www.wireguard.com/quickstart/ 为准(核对点)。目前没在自家的 VPS 上跑通过完整流程,跑通后回填实录。
06-VPN实战的原话感受是"openvpn比较麻烦",上一篇也说了现代默认答案是 WireGuard。这篇就看它到底简化到了什么程度——答案是:核心配置就是两个几十行的文本文件。
一、心智模型:先记住三个东西
WireGuard 把一切抽象成网络接口 + 公钥路由:
| 概念 | 是什么 | 类比 |
|---|---|---|
| Interface(接口) | 本机这块"虚拟网卡",有自己的私钥和内网 IP | 一张只连自己人的网卡 |
| Peer(对端) | 通信的另一台设备,用公钥标识身份 | 通讯录里的联系人 |
| AllowedIPs | 允许(且只允许)从某个对端收发哪些网段的流量 | 路由表 + 防火墙二合一 |
最反直觉也最优雅的是第三条:WireGuard 没有"用户名密码",身份就是密钥对。AllowedIPs 同时承担两个职责——出站时"哪些目标走隧道"(路由),入站时"哪个来源的包能从这条隧道进来"(源地址过滤,也叫 cryptokey routing)。配错了不是连不上就是拒绝收包,排查先查它。
二、最小可用配置:服务端 + 客户端
场景:一台有公网 IP 的 VPS 当服务端,家里电脑当客户端,组个双机虚拟局域网(服务端 10.0.0.1,客户端 10.0.0.2)。
第一步:两端各生成密钥对(各执行一次):
wg genkey | tee privatekey | wg pubkey > publickey
第二步:服务端 /etc/wireguard/wg0.conf:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <服务端私钥>
[Peer]
# 客户端
PublicKey = <客户端公钥>
AllowedIPs = 10.0.0.2/32
第三步:客户端 wg0.conf:
[Interface]
Address = 10.0.0.2/24
PrivateKey = <客户端私钥>
[Peer]
# 服务端
PublicKey = <服务端公钥>
Endpoint = <VPS公网IP>:51820
AllowedIPs = 10.0.0.0/24
# 开机自动握手(可选)
PersistentKeepalive = 25
第四步:启动与验证:
# 服务端:启动(wg-quick 会自动创建 wg0 接口)
wg-quick up wg0
# 开机自启(systemd 版)
systemctl enable --now wg-quick@wg0
# 客户端:导入 conf 后启动,然后验证
wg show # 看到 latest handshake: x seconds ago 即通
ping 10.0.0.1 # 直接 ping 虚拟 IP
和 EasyTier 的配置对照着看会发现是同一套思想的不同表达:EasyTier 的 --ipv4 10.10.10.1 --network-secret <组网密码>,翻译成 WireGuard 就是 [Interface] Address + 密钥对;EasyTier 的 Peers 指向 VPS 公网入口,就是 WireGuard 的 Endpoint。区别在于 WireGuard 要双向登记公钥(服务端得写上客户端的公钥),EasyTier 用共享密码代替了这一步。
三、几个绕不开的坑(文档整理,未亲测)
- 服务端要开转发:如果想让客户端通过 VPS 访问 VPS 后面的网段(或做出口),服务端需要
net.ipv4.ip_forward=1并配 iptables/NAT 转发规则——01-再次出发里配 Tunnel 转发时踩过同类问题,思路通用。 - AllowedIPs 决定"翻不翻":客户端
AllowedIPs = 0.0.0.0/0意味着全部流量走隧道(全局代理效果),只写10.0.0.0/24则只有内网目标走隧道(分流模式)。这就是"VPN 全局 vs 规则分流"在 WireGuard 里的具体开关,和 02-VPN是什么里 VPN vs 正向代理的辨析呼应。 - NAT 后的客户端要
PersistentKeepalive:家庭宽带在 NAT 后面,不主动发包会被 NAT 表项回收导致连不上,25 秒心跳保活。 - 时间戳/密钥不匹配静默失败:两端公钥没对应上时,
wg show里 handshake 一直不出现,不报错——先核对公钥再查防火墙 UDP 51820 放行。
四、什么时候不用它
诚实地说,WireGuard 也有边界:
- 动态 IP + 想要零配置 → 打洞、密钥轮换、IP 分配都得自己处理,这时托管组网更省心(见下一篇)。
- 需要企业级审计/双因素 → OpenVPN 的证书体系和控制面更成熟。
- 只能 TCP 的严苛网络 → WireGuard 只走 UDP,被完全封 UDP 的网络里需要套壳方案(如 udp2raw,可靠性未验证,用时再查)。
下一篇把 Tailscale/ZeroTier/EasyTier 三家组网工具放一张表里比,顺便接上 06-VPN实战 的 Tailscale 实录和 EasyTier 的部署篇。
💬 评论