WireGuard组网后节点无法互相Ping通解决办法

目录

搭建 wireguard 服务时遇到了这个问题,中心节点和从节点之间均能 ping 通,但是从节点之间无法 ping 通。花了挺长时间才找到解决办法,特此记录一下。

首先看看中心节点的配置,我的如下

#/etc/wireguard/wg0
[Interface]
PrivateKey = <server_privatekey>
Address = 10.0.8.1

PostUp   = iptables -I FORWARD -i wg0 -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -o wg0 -j ACCEPT

ListenPort = 14451
DNS = 8.8.8.8
MTU = 1280
[Peer]
PublicKey =  <peer1_publickey>
AllowedIPs = 10.0.8.2/32

[peer]
PublicKey = <peer2_publickey>
AllowedIPs = 10.0.8.3/32

两个 peer 也配置好之后,peer 之间无法 ping 通。

网上的说法是添加对应的 PostUp 的 iptables 脚本,这里添加了 iptables -I FORWARD -i wg0 -o wg0 -j ACCEPT,但是实测没有效果。

后来在万能的 stackoverflow 上找到了解决方法:Can I make Wireguard VPN peers to talk to each other?

ping 不通的原因是中心节点的 ip_forward 功能没有开启。

要开启也很简单,输入 nano /etc/sysctl.conf,把 net.ipv4.ip_forward = 0 修改为 net.ipv4.ip_forward = 1,如果被注释了就取消注释。

然后输入 sysctl -p /etc/sysctl.conf,回车。现在从节点之间就可以互相 ping 通了。