最近新增了一台VPS主机作为站点的前置机,但是两台主机之间没有VPC网络,所以需要搭建一条安全的隧道进行相互通信。如果你是在公有云厂商购买的主机就不需要担心主机通信问题,直接走VPC网络就行。
最早我是使用SSH把网站的端口映射到前置机的,但是稳定性不是很好,所以我考虑使用WireGuard来搭建一个安全的隧道网络
安装 WireGuard
在两台 Ubuntu 主机上运行以下命令安装 WireGuard:
sudo apt update
sudo apt install wireguard
配置 WireGuard
- 生成服务端密钥对
执行以下命令后,分别在两台主机执行下列命令,会在 /etc/wireguard 目录下生成私钥文件 privatekey 和公钥文件 publickey :
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
我们在/etc/wireguard目录会找到相应的公私钥文件,请一定要确保私钥的安全。
- 创建配置文件
在 A主机/etc/wireguard 目录下创建一个名为 wg0.conf 的配置文件:
vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <Machine A 的私钥内容>
Address = 10.0.0.1/24
ListenPort = 5555
[Peer]
PublicKey = <Machine B 的公钥内容>
AllowedIPs = 10.0.0.2/32
Endpoint = <Machine B 的公网 IP>:5555
同时在在 B主机/etc/wireguard 目录下创建一个名为 wg0.conf 的配置文件:
[Interface]
PrivateKey = <Machine B 的私钥内容>
Address = 10.0.0.2/24
ListenPort = 5555
[Peer]
PublicKey = <Machine A 的公钥内容>
AllowedIPs = 10.0.0.1/32
Endpoint = <Machine A 的公网 IP>:5555
设置权限和防火墙
确保配置文件安全,并允许 UDP 5555 端口:
sudo chmod 600 /etc/wireguard/wg0.conf
sudo ufw allow 5555/udp
启动和测试
启动 WireGuard 并测试连接:
sudo wg-quick up wg0
从 Machine A ping 10.0.0.2,从 Machine B ping 10.0.0.1。若成功,隧道已建立。
开机自启
使 WireGuard 在启动时自动运行:
sudo systemctl enable wg-quick@wg0
注意:除了需要在A.B主机直接放通公网IP访问UDP/5555端口之外,两端也需要放通内网10.0.0.0/24网段的互访权限。