网络架构


目前有两个异地网络,都是内网。现在需要做一个网络组网方便两个网络的资源互通。

WireGuard 是一个Linux的组网软件,配置比较简单安全性也还不错。

网络拓扑

两端网络

  • 192.168.4.0/24
  • 192.168.5.0/24

通过云服务器搭建WireGuard节点来为两边做联通。

云服务器配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[Interface]
PrivateKey = ****
Address = 10.23.0.0/24
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
ListenPort = 12083

# 192.168.4.0
[Peer]
PublicKey = ****
AllowedIPs = 10.23.0.15/32,192.168.4.0/24

# 192.168.5.0
[Peer]
PublicKey = ****
AllowedIPs = 10.23.0.20/32,192.168.5.0/24

192.168.4.0 网络配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Interface]
PrivateKey = ****
Address = 10.23.0.15/32

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE


[Peer]
PublicKey = ****
AllowedIPs = 10.23.0.0/24,192.168.5.0/24
Endpoint = ****:12083
PersistentKeepalive = 10

192.168.5.0 网络配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Interface]
PrivateKey = ****
Address = 10.23.0.20/32

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE


[Peer]
PublicKey = ****
AllowedIPs = 10.23.0.0/24,192.168.4.0/24
Endpoint = ****:12083
PersistentKeepalive = 10

附加说明

3台机器均需要开启ip转发,有些系统默认没开。

AllowedIPs 的配置只要填写允许通过的IP地址即可,例如 192.168.4.0 的并不需要在这里填 192.168.4.0/24 。
如果填写了就会导致无法访问到自己了。
服务器上的 AllowedIPs 同理。 192.168.4.0与192.168.5.0 要在服务器上需要允许别的网络请求此网络时进入。不配置的话会连不上。

PostUp 与 PostDown 为开启和关闭连接时要执行的指令,这里为 iptables 的NAT设置。
需要注意把配置内的 wg0 替换为具体的 WireGuard 网卡

这样配置后,两边网络均可以直接访问对方网络。