0%

WireGuard 组网

本次演示在 debian12 下进行。
本次演示将尝试让两台不同区域的内网机器互通。
WireGuard 原版不支持 nat 穿透,这里不进行演示。

需要准备三台,机器其中一台需要有公网 ip
这里对三台机器进行命名方便后端的理解

server 公网机
home 内网机
dev 内网机

登录三台机器安装 WireGuard

1
sudo apt install wireguard

分别在三台机器上运行下面的命令生成密匙对

1
wg genkey > priv_key && wg pubkey < priv_key > pub_key

server 上面的操作

wireguard 节点互通时需要通过公网机进行流量转发所以需要允许转发。
在 /etc/sysctl.conf 增加 net.ipv4.ip_forward = 1 以允许流量转发

创建 /etc/wireguard/wg0.conf 并写入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
[Interface]
Address = 192.168.20.1/24
ListenPort = 51820
PrivateKey = <server 服务器上的 priv_key>

[Peer]
PublicKey = <home 服务器上的 pub_key>
AllowedIPs = 192.168.20.2/32

[Peer]
PublicKey = <dev 服务器上的 pub_key>
AllowedIPs = 192.168.20.3/32

内容写入好后启动服务

1
sudo wg-quick up wg0

如果没有没有任何报错那么就是启动成功了

home 上面的操作

创建 /etc/wireguard/wg0.conf 并写入以下内容

1
2
3
4
5
6
7
8
9
[Interface]
PrivateKey = <home 服务器上的 priv_key>
Address = 192.168.20.2/32

[Peer]
PublicKey = <server 服务器上的 pub_key>
AllowedIPs = 192.168.20.0/24
Endpoint = <server机的公网>:51820
PersistentKeepalive = 25

启动服务

1
sudo wg-quick up wg0

可以尝试 ping 192.168.20.1 检测,联通是否正常。如果配置没有错误的话,会有正常的ping回复

dev 上面的操作

创建 /etc/wireguard/wg0.conf 并写入以下内容

1
2
3
4
5
6
7
8
9
[Interface]
PrivateKey = <dev 服务器上的 priv_key>
Address = 192.168.20.2/32

[Peer]
PublicKey = <server 服务器上的 pub_key>
AllowedIPs = 192.168.20.0/24
Endpoint = <server机的公网>:51820
PersistentKeepalive = 25

启动服务

1
sudo wg-quick up wg0

这时我们尝试 ping home 的内网机。
ping 192.168.20.2 如果回复正常的话,那么两台内网机就已经实现联通了

开启自启动

分别在三台机器上运行 sudo systemctl enable wg-quick@wg0 开启自启动