如何配置 WireGuard 客户端与两个不同的服务器交互?

如何配置 WireGuard 客户端与两个不同的服务器交互?

我想要一个无人值守的 WireGuard 客户端与冗余 WireGuard 服务器一起使用。

身体的:

  • 我在美国提供商 A 的 VPS 中有一个主数据库服务器。
  • 我在欧洲提供商 B 的 VPS 中的从属服务器上运行连续复制。
  • 我有一个备份数据库服务器,也作为复制从属服务器运行,位于我家庭办公室的 WiFi LAN 上。

网络:

  • 美国的主数据库服务器运行 WireGuard 服务器,版本号为 10.20。20.1.
  • 欧洲的从数据库服务器运行 WireGuard 服务器,版本号为 10.20。10.1.

我家庭办公室的备份数据库已成功配置为与主远程 WireGuard 服务器或从属远程 WireGuard 服务器进行交互单独地

要通过美国连接,我需要家里有人来做:

suda wg-quick down wgEUR; suda wg-quick up wgUSA;

要通过欧洲连接,我需要家里有人来做:

suda wg-quick down wgUSA; suda wg-quick up wgEUR;

然而!!

关键是无论我身在何处,都能够通过 WireGuard 服务器通过 SSH 访问家庭办公计算机;如果其中一个发生故障,另一个仍然可用。

如何在家庭办公室 WireGuard 客户端中配置路由以允许同时从两个远程 WireGuard 服务器的子网访问?


设置

欧洲 (37.xxx.xxx.139:34567): wg0.conf

[Interface]
Address = 10.20.10.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0  -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0  -j MASQUERAD
ListenPort = 34567
PrivateKey = MNf4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiVg=

[Peer]
PublicKey = durAZO/EtWQnqwnbadbadbadzDa9+klqUmqCT6VplWc=
AllowedIPs = 10.20.10.16/32

美国 (185.xxx.xxx.36:34567): wg0.conf

[Interface]
Address = 10.20.20.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERAD
ListenPort = 34567
PrivateKey = EGdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxp2Q=

[Peer]
PublicKey = durAZO/EtWQnbadbadbadMkTzDa9+klqUmqCT6VplWc=
AllowedIPs = 10.20.20.16/32

客户端 wgEUR.conf:

[Interface]
### PrivateKey_of_the_Client
PrivateKey = EBmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaXlE=
### IP VPN for the Client
Address = 10.20.10.16/24
### DNS Server
DNS = 8.8.8.8, 8.8.4.4

[Peer]
###Public of the WireGuard VPN Server
PublicKey = pTm/tJwOWJ3QRwEcbadbadbadWx/BbCthbFa52M2uVE=

### IP and Port of the WireGuard VPN Server
##### Syntax: IP_of_the_server:Port
Endpoint = 37.xxx.xxx.139:34567

### Allow all traffic
AllowedIPs = 0.0.0.0/0

客户端 wgUSA.conf:

[Interface]
### PrivateKey_of_the_Client
PrivateKey = EBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXlE=
### IP VPN for the Client
Address = 10.20.20.16/24
### DNS Server
DNS = 8.8.8.8, 8.8.4.4

[Peer]
###Public of the WireGuard VPN Server
PublicKey = f/H+1b/jkkXvbhYPEbadbadbadkKMBMgEW1IvmOeCEE=

### IP and Port of the WireGuard VPN Server
##### Syntax: IP_of_the_server:Port
Endpoint = 185.xxx.xxx.36:34567

### Allow all traffic
AllowedIPs = 0.0.0.0/0

答案1

此 VPN 是访问私有资源的方式,而不是匿名访问 Internet 的方式。所以分裂隧道应该使用。

只需在客户端替换:

AllowedIPs = 0.0.0.0/0

仅由所需的资源:运行数据库的服务器。

对于客户wgEUR.conf

AllowedIPs = 10.20.10.1/32

对于客户wgUSA.conf

AllowedIPs = 10.20.20.1/32

现在,两个隧道可以同时启动:wg-quick不会劫持路由(默认Table = auto设置会发生这种情况,并显示AllowedIPs为 0.0.0.0/0 或 ::/0),并且两个隧道不会相互冲突。客户端平常的互联网访问不会通过隧道,这当然是一个改进:为什么数据库服务器会提供这样的服务?

相关内容