我可以让 Wireguard VPN 对等点相互通信吗?

Sib*_*ran 14 vpn networking lan wireguard

我有一台运行 Wireguard 的服务器,并且我有多个客户端(对等方)连接到它并正在运行。我不太确定 VPN 是如何工作的,但这是我当前的设置。

/etc/wireguard/wg0.conf我的服务器看起来像这样。

[Interface]
Address = 172.16.16.1/24
SaveConfig = true
ListenPort = 8999
PrivateKey = XXX

[Peer]
PublicKey = XXX
AllowedIPs = 172.16.16.2/32

[Peer]
PublicKey = XXX
AllowedIPs = 172.16.16.3/32
Run Code Online (Sandbox Code Playgroud)

我的客户端上的配置wg0.conf看起来像这样。

[Interface]
PrivateKey = XXX
Address = 172.16.16.x/32

[Peer]
PublicKey = XXX
AllowedIPs = 172.16.16.0/24
PersistentKeepalive = 30
Run Code Online (Sandbox Code Playgroud)

一切都启动并运行后,从我的具有 IP 地址的客户端172.16.16.2,我可以 ping 服务器172.16.16.1。我可以从我的其他客户端执行同样的操作172.16.16.3,我可以 ping 服务器 172.16.16.1

有趣的是,从我的服务器,我能够 ping 所有的对等点!也就是说,从内部172.16.16.1,我可以 ping172.16.16.2172.16.16.3。但这是设置的主要目的!

现在,我希望我的同级能够互相交谈,也就是说,我必须能够172.16.16.2从我的其他同级ping 通,172.16.16.3反之亦然,但这不起作用。它说网络无法访问。

这个想法是,我希望它像 LAN 服务器一样工作,其中一台服务器充当网关,多个对等方/客户端可以相互通信,也可以与服务器通信。

这可能吗?如果是,我错过了什么?

小智 7

我遵循了 Sibidharan 建议的所有步骤,但还需要在服务器上添加一个 iptables 命令,以将wireguard 流量从对等转发。

iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

然后我就可以通过 ssh 进行点对点连接。


Sib*_*ran 6

经过整个晚上的互联网搜索,我找到了一些有用的链接,这些链接讨论了我面临的同样问题。

链接:https : //lists.zx2c4.com/pipermail/wireguard/2018-August/003250.html

也就是说,我们必须在服务器中启用 ip 转发,使其像边缘路由器一样工作。

默认情况下,Linux 内核中的 IPv4 策略禁用对 IP 转发的支持。这可以防止运行 linux 服务器的机器用作专用边缘路由器。要启用 IP 转发,请使用以下命令:

[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)

此配置更改仅对当前会话有效;它不会在重新启动或网络服务重新启动后持续存在。要永久设置 IP 转发,请/etc/sysctl.conf按如下方式编辑文件: 找到以下行:

net.ipv4.ip_forward = 0
Run Code Online (Sandbox Code Playgroud)

编辑它如下:

net.ipv4.ip_forward = 1
Run Code Online (Sandbox Code Playgroud)

使用以下命令启用对 sysctl.conf 文件的更改:

[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

阅读更多:https : //docs.fedoraproject.org/en-US/Fedora/18/html/Security_Guide/sect-Security_Guide-Firewalls-FORWARD_and_NAT_Rules.html

完成后,现在我所有的同行都可以互相交谈了,这就像一个局域网网络!