VPN/WIreguard 在内部和外部转发流量

VPN/WIreguard 在内部和外部转发流量

这可能更像是一个 Linux 防火墙问题,但上下文是 Ubuntu 上的 Wireguard VPN 设置。请注意,我对其中很多东西都不太熟悉。

我在 Digital Ocean Ubuntu 上安装并运行了 Wireguard,Windows 和 Android 客户端都在使用它。一切看起来都很好。

出现此问题时我使用的基本防火墙命令如下:因此,第 3 行似乎将所有进入wg0(私有 VPN)的流量通过公共eth0接口路由出去。应该如此(几乎如此?),并且运行正常。Wgo/Private 网络是10.8.0.1/24,服务器是10.8.0.1。当客户端流量进入下面的服务器并发往10.8.0.x(私有网络内的另一个地址)时,它会超时。

我“认为”这是因为它试图通过 进行路由eth0?如果是这样,我如何确保发往私有子网的流量仍然使用wg0接口?如果没有,还有其他建议吗?

PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = sysctl -w net.ipv6.conf.all.forwarding=1
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PostDown = sysctl -w net.ipv4.ip_forward=0
PostDown = sysctl -w net.ipv6.conf.all.forwarding=0

答案1

如果您的默认策略是在 iptables/ufw 中删除或拒绝转发。那么您很可能缺少防火墙/ufw 条目,以允许流量在不同的 wireguard 接口之间流动或在同一接口上进出。

您可以检查 dmesg 中是否[UFW BLOCK]有消息。

允许在同一个 wg 接口上不受限制地进出 PostUp = ufw route allow in on wg0 out on wg0

我更喜欢直接修改配置文件sudo vim /etc/ufw/before.rules 进入过滤器,在所需的行结束后,你可以添加你需要的转发规则。例如:

-A ufw-before-forward -i wg0 -s 10.8.0.1/24 -o wg0 -d 10.8.0.1/24 -j ACCEPT

这将允许来自(-s 标志)接口 wg0 上的 10.8.0.1/24 的流量到接口 wg0 上的(-d 标志)10.8.0.1/24。-i 是输入接口,-o 是输出接口。

如果您更喜欢使用 up\down 方式,您可以在命令前面添加 iptables。

iptables -A ufw-before-forward -i wg0 -s 10.8.0.1/24 -o wg0 -d 10.8.0.1/24 -j ACCEPT

祝你好运 :)

相关内容