解决两个Wireguard客户端之间无法Ping通

为了更深刻的学习WireGuard,我开始自己搭建服务端和客户端进行测试。WireGuard本身是不区分服务端和客户端的,但是在我的拓补结构中是可以区分出服务端和客户端的:

2022-02-15-15-26-35

目前遇到的问题就是Windows1和Windows2之间无法ping通。

解决该问题的方案是,在ECS中开启IP地址转发:

1
2
3
4
5
6

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# 这一行配置可以不用(很多教程都没有这个配置)
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf

需要注意的是执行完上面的指令后需要将wg0网口重启一下,即执行:

1
2
3
4

wg-quick down wg0
wg-quick up wg0

开启IP转发还有别的方法,比如如下指令:


sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1

如果上面配置需要重启后生效,需要将配置保存在/etc/sysctl.conf中。

参考资料

  1. 轻松几步搭建 WireGuard (快速安全的下一代 VPN)

    学习另一种ip转发的配置方式。