我可以让 Wireguard VPN 对等点相互交谈吗?
Can I make Wireguard VPN peers to talk to each other?
我有一个服务器 运行 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
我的客户端 wg0.conf
上的配置如下所示。
[Interface]
PrivateKey = XXX
Address = 172.16.16.x/32
[Peer]
PublicKey = XXX
AllowedIPs = 172.16.16.0/24
PersistentKeepalive = 30
一切正常,运行,从我的 IP 地址为 172.16.16.2
的客户端,我能够 ping 服务器 172.16.16.1
。我可以使用 172.16.16.3
从我的其他客户端执行相同的操作,我可以 ping 服务器 172.16.16.1
.
有趣的是,在我的服务器上,我能够 ping 通所有的对等点!也就是说,在 172.16.16.1
内,我可以 ping 172.16.16.2
和 172.16.16.3
。但这是设置的主要目的!
现在,我想让我的同伴互相交谈,也就是说,我必须能够从我的另一个同伴 172.16.16.3
ping 172.16.16.2
,反之亦然,但这不起作用.它说网络无法访问。
我的想法是,我希望它像 LAN 服务器一样工作,其中一个服务器充当网关,多个 peers/clients 可以相互通信,也可以与服务器通信。
这可能吗?如果是,我错过了什么?
在互联网上搜索了一晚上之后,我找到了一些有用的链接,这些链接讨论了我面临的相同问题。
Link: 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
此配置更改仅对当前会话有效;它不会在重启或网络服务重启后持续存在。要永久设置 IP 转发,请按如下方式编辑 /etc/sysctl.conf
文件:
找到以下行:
net.ipv4.ip_forward = 0
编辑如下:
net.ipv4.ip_forward = 1
使用以下命令启用对 sysctl.conf 文件的更改:
[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
完成后,现在我所有的同伴都可以互相交谈了,这就像局域网一样!
我遵循了 Sibidharan 建议的所有步骤,但还需要在服务器上添加一个 iptables 命令以在点对点之间转发 wireguard 流量。
iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT
然后我可以通过 ssh 进行点对点连接。
只需将客户端上的接口设置为前缀 /24
我有一个服务器 运行 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
我的客户端 wg0.conf
上的配置如下所示。
[Interface]
PrivateKey = XXX
Address = 172.16.16.x/32
[Peer]
PublicKey = XXX
AllowedIPs = 172.16.16.0/24
PersistentKeepalive = 30
一切正常,运行,从我的 IP 地址为 172.16.16.2
的客户端,我能够 ping 服务器 172.16.16.1
。我可以使用 172.16.16.3
从我的其他客户端执行相同的操作,我可以 ping 服务器 172.16.16.1
.
有趣的是,在我的服务器上,我能够 ping 通所有的对等点!也就是说,在 172.16.16.1
内,我可以 ping 172.16.16.2
和 172.16.16.3
。但这是设置的主要目的!
现在,我想让我的同伴互相交谈,也就是说,我必须能够从我的另一个同伴 172.16.16.3
ping 172.16.16.2
,反之亦然,但这不起作用.它说网络无法访问。
我的想法是,我希望它像 LAN 服务器一样工作,其中一个服务器充当网关,多个 peers/clients 可以相互通信,也可以与服务器通信。
这可能吗?如果是,我错过了什么?
在互联网上搜索了一晚上之后,我找到了一些有用的链接,这些链接讨论了我面临的相同问题。
Link: 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
此配置更改仅对当前会话有效;它不会在重启或网络服务重启后持续存在。要永久设置 IP 转发,请按如下方式编辑 /etc/sysctl.conf
文件:
找到以下行:
net.ipv4.ip_forward = 0
编辑如下:
net.ipv4.ip_forward = 1
使用以下命令启用对 sysctl.conf 文件的更改:
[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
完成后,现在我所有的同伴都可以互相交谈了,这就像局域网一样!
我遵循了 Sibidharan 建议的所有步骤,但还需要在服务器上添加一个 iptables 命令以在点对点之间转发 wireguard 流量。
iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT
然后我可以通过 ssh 进行点对点连接。
只需将客户端上的接口设置为前缀 /24