我有一个运行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
. 但这是设置的首要目的!
现在,我想让我的同伴们互相交谈,也就是说,我必须能够ping出 172.16.16.2
同道中人 172.16.16.3
反之亦然,但这是行不通的。它说网络无法到达。
我的想法是,我想让它像局域网服务器一样工作,一个服务器作为网关,多个peersclients可以互相通话,也可以和服务器通话。
这样做可行吗?如果可以,我缺少什么?
经过整个晚上在互联网上的搜索,我发现了一些有用的链接,谈到了我所面临的同样的问题。
链接。https:/lists.zx2c4.compipermailwireguard2018-August003250.html。
也就是说,我们必须在服务器中启用ip转发,才能使它像边缘路由器一样工作。
默认情况下,linux内核中的IPv4策略是不支持IP转发的。这就阻止了运行linux server的机器作为专用边缘路由器的功能。要启用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
做好了这些,现在我所有的同行都可以互相通话了,这个功能就像局域网网络一样!