使用wireguard通过网关互连2台主机

Posted

技术标签:

【中文标题】使用wireguard通过网关互连2台主机【英文标题】:Using wireguard to interconnect 2 hosts via a gateway 【发布时间】:2019-10-08 22:27:04 【问题描述】:

我有 3 个 VPS 服务器,有公共 IP,我们称它们为wireguard1、wireguard2 和wireguard3。

我已经成功地使用以下DigitalOcean tutorial 连接了wireguard1 和wireguard2。 然后我成功地连接了wireguard1和wireguard3。

配置文件如下所示:

在wireguard1上:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 5555
PrivateKey = <wireguard1 private key>

[Peer]
PublicKey = <wireguard2 public key>
AllowedIPs = 10.0.0.2/32
Endpoint = <wireguard2 public ip address>:5555

[Peer]
PublicKey = <wireguard3 public key>
AllowedIPs = 10.0.0.3/32
Endpoint = <wireguard3 public ip address>:5555

在wireguard2上:

[Interface]
Address = 10.0.0.2/24
SaveConfig = true
ListenPort = 5555
PrivateKey = <wireguard2 private key>

[Peer]
PublicKey = <wireguard1 public key>
AllowedIPs = 10.0.0.0/24
Endpoint = <wireguard1 public ip address>:5555

在wireguard3上:

[Interface]
Address = 10.0.0.3/24
SaveConfig = true
ListenPort = 5555
PrivateKey = <wireguard3 private key>

[Peer]
PublicKey = <wireguard1 public key>
AllowedIPs = 10.0.0.0/24
Endpoint = <wireguard1 public ip address>:5555

我可以从wireguard2 (10.0.0.2) pingwireguard1 (10.0.0.1),反之亦然,这样可以正常工作。 我可以从wireguard3 (10.0.0.3) pingwireguard1 (10.0.0.1),反之亦然,这样可以正常工作。

但是,我无法从wireguard3 (10.0.0.3) pingwireguard2 (10.0.0.2),反之亦然。我确实可以在wireguard2 中的[Peer] 部分引用wireguard3,但我想找到一个所有流量都通过wireguard1 的解决方案。

我认为将 AllowedIP 设置为 10.0.0.0/24 可以解决问题,但它似乎不起作用。

有没有人可行的解决方案?

【问题讨论】:

【参考方案1】:

我有一段时间遇到同样的问题。似乎您需要让所有对等方都拥有所有其他客户端的公钥才能正常工作。但是,我不确定它们是否都需要端点。对于您的配置,它看起来像这样:

在wireguard1上:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 5555
PrivateKey = <wireguard1 private key>

[Peer]
PublicKey = <wireguard2 public key>
AllowedIPs = 10.0.0.2/32
Endpoint = <wireguard2 public ip address>:5555

[Peer]
PublicKey = <wireguard3 public key>
AllowedIPs = 10.0.0.3/32
Endpoint = <wireguard3 public ip address>:5555

在wireguard2上:

[Interface]
Address = 10.0.0.2/24
SaveConfig = true
ListenPort = 5555
PrivateKey = <wireguard2 private key>

[Peer]
PublicKey = <wireguard1 public key>
AllowedIPs = 10.0.0.1/32
Endpoint = <wireguard1 public ip address>:5555

[Peer]
PublicKey = <wireguard3 public key>
AllowedIPs = 10.0.0.3/32
Endpoint = <wireguard3 public ip address>:5555

在wireguard3上:

[Interface]
Address = 10.0.0.3/24
SaveConfig = true
ListenPort = 5555
PrivateKey = <wireguard3 private key>

[Peer]
PublicKey = <wireguard1 public key>
AllowedIPs = 10.0.0.1/32
Endpoint = <wireguard1 public ip address>:5555

[Peer]
PublicKey = <wireguard2 public key>
AllowedIPs = 10.0.0.2/32
Endpoint = <wireguard2 public ip address>:5555

【讨论】:

以上是关于使用wireguard通过网关互连2台主机的主要内容,如果未能解决你的问题,请参考以下文章

什么是MQTT网关?MQTT有什么优势?

Day2-2虚拟机的克隆与互连

VRRP简介

关于双网卡互连问题,求教高手

[Note]网关

Zabbix通过ping监控主机主机是否在线