WireGuard 双 VPS 组网教程:路由、密钥与防锁死验证
在两台 Ubuntu 或 Debian VPS 之间建立 WireGuard 站点互联,覆盖密钥、AllowedIPs、转发、防火墙、NAT keepalive、systemd 启动和安全回滚。

WireGuard 双 VPS 组网教程:路由、密钥与防锁死验证
WireGuard 可以让两台 VPS 的私有网段通过加密 UDP 隧道互通,但最常见故障来自地址重叠、AllowedIPs 写错、转发未启用或防火墙把管理入口一起阻断。本文采用先建立点对点地址、再逐步加入站点路由的方式。配置前保留现有 SSH 会话,并参考nftables 防火墙教程准备回滚;服务持久化可结合systemd 服务管理教程。
规划地址和生成密钥
先确认两端现有公网与私网网段不重叠,为隧道选择独立的小网段。Ubuntu 和 Debian 可从发行版仓库安装 WireGuard。每端执行 umask 077 后用 wg genkey 生成私钥,再通过 wg pubkey 导出公钥。私钥只保留在本机受限文件中,交换的只有公钥。
每个 peer 的 AllowedIPs 同时承担路由选择和来源校验,不是随意填写的访问列表。第一阶段只加入对端隧道地址;确认握手和双向通信后,再加入对端站点网段。两端不能把相同网段分别声明给不同 peer,否则路由会产生歧义。
配置接口与 peer
在两端创建 /etc/wireguard/wg0.conf,Interface 段设置各自隧道地址和私钥,至少一端设置 UDP ListenPort。Peer 段写入对端公钥、Endpoint 和 AllowedIPs。对端位于 NAT 后且需要长期接收连接时,可以按官方建议设置合理的 PersistentKeepalive;公网固定端点通常不必启用。
先用 wg-quick up wg0 临时启动,运行 wg show 查看最新握手和传输计数。这里的计数只证明隧道交换数据,不能说明公网质量。若无握手,依次检查 Endpoint、UDP 入站规则、公钥是否配对以及系统时间。
打开转发并限制防火墙
只有两台主机自身互通时,不需要转发第三方网段。要让各自后方网段通信,才启用 IPv4 或 IPv6 转发,并为 wg0 与目标内部接口添加明确的 forward 规则。不要直接允许任意接口互转,也不要无条件做 NAT;路由可达时优先保留真实源地址。
云安全组和主机防火墙都要允许 WireGuard UDP 端口,但来源应尽量限制为对端公网地址。SSH 管理端口保持独立规则。上线前安排自动回滚,错误规则导致新连接失败时恢复原配置。
验证路由和持久化
按顺序检查隧道地址、对端主机、对端站点网关和站点内目标。使用 ip route get 确认数据确实选择 wg0;抓包时只核对接口与协议,不把单次结果扩展为长期结论。还要测试错误来源是否被拒绝,以及 WireGuard 停止后公网 SSH 仍可访问。
验证完成后执行 systemctl enable --now wg-quick@wg0,再做一次可控重启。私钥文件、配置备份和日志权限都应限制。添加第三个站点时重新检查 AllowedIPs 唯一性,而不是复制整段配置。
运维与轮换
密钥轮换可先在一端新增新 peer 或安排短维护窗口,再逐端替换公钥并验证。设备失陷时应立即从所有对端移除旧公钥。WireGuard 不负责用户身份、密钥分发或 DNS,应由独立流程管理。
稳定的站点互联依赖明确网段、最小 AllowedIPs、双层防火墙和可验证回滚。先让点对点隧道工作,再增加转发和业务路由,可以显著降低远程改网导致失联的风险。


