部署 WireGuard 实现两个机房之间互通
温馨提醒
需求
两个数据中心内网之间互通
环境
| 环境 | 公网IP | 内网IP | OS |
|---|---|---|---|
| 华为云-广州 | 110.41.20.135 | 172.16.0.133 | Ubuntu 22.04 |
| 华为云-北京 | 114.114.131.37 | 192.168.2.152 | Ubuntu 22.04 |


部署 WireGuard
在两端节点上部署
CentOS 7 安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18# 安装 epel 源 yum install epel-release -y # 安装 dkms yum install dkms -y # 查看内核版本 uname -r # 下载wireguard-dkms离线rpm包 https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/package/wireguard-dkms/ # 安装 wireguard-dkms wget https://download.copr.fedorainfracloud.org/results/jdoss/wireguard/epel-7-x86_64/04573240-wireguard-dkms/wireguard-dkms-1.0.20220627-1.el7.noarch.rpm yum localinstall wireguard-dkms-1.0.20220627-1.el7.noarch.rpm -y # 安装 wireguard-tools yum install wireguard-tools -y如果在启动
wg-quick@wg0时,启动报错,查看内核是否一致,如不一致,则升级到一致的版本即可rpm -qa | grep kernel
rpm -qa | grep kernel-devel
在两端节点上生成密钥
在两端节点上启用内核转发
配置 WireGuard
广州节点配置
vim /etc/wireguard/wg0.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18[Interface] Address = 10.0.0.1/24 PrivateKey = 本端的私钥 # 服务端监听的端口 ListenPort = 51820 DNS = 8.8.8.8 MTU = 1420 # wg0 改成具体的配置文件名称 # eth0 改成具体的网卡 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = 对端的公钥 AllowedIPs = 10.0.0.2/24, 192.168.2.0/24 # 对端的内网IP Endpoint = 114.115.131.37:51820 # 对端的公网IP PersistentKeepalive = 25北京节点配置
vim /etc/wireguard/wg0.conf1 2 3 4 5 6 7 8 9 10 11 12 13[Interface] Address = 10.0.0.2/24 PrivateKey = 本端的私钥 ListenPort = 51820 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = 对端的公钥 AllowedIPs = 10.0.0.1/24, 172.16.0.0/24 # 对端的内网IP Endpoint = 110.41.20.135:51820 # 对端的公网IP PersistentKeepalive = 25安全组开放 51820/UDP 端口
测试


如果要实现广州节点网段的所有主机与北京节点网段的所有主机之间互通,需要在其他节点上添加一条路由
比如 广州节点的主机 172.16.0.150 要访问北京节点的 主机192.168.2.150,只需要在这两台机器上添加一条到对端的路由,走本网段的 VPN 地址,格式:ip route add 对端的内网网段 via 中继器地址(就是vpn的 IP 地址)
172.16.0.150 上执行ip route add 192.168.2.150/24 via 172.16.0.133 dev eth0
192.168.2.150 上执行ip route add 172.16.0.150/24 via 192.168.2.152 dev eth0