firewalld:作为 wireguard VPN 网关转发流量

firewalld:作为 wireguard VPN 网关转发流量

我已经使用 Wireguard 和 Nftables 设置了一个运行 Pi OS 11 的 pi 作为我的本地网络的 VPN 网关,一切运行正常。

但是,我希望切换到firewalld以便与docker兼容,而不使用iptables。

到目前为止我所拥有的是:

  • 内部区域:eth0
  • 外部区域:wg0

我不知道如何让防火墙转发 eth0 和 wg0 之间的流量。使用原始 nftables,我只有以下内容,我的前向链默认丢弃:

nft insert rule inet firewall forward iifname "eth0" oifname "wg0" accept
nft insert rule inet firewall forward iifname "wg0" oifname "eth0" ct state related,established accept

但我无法找到如何按照上述规则在接口之间有条件地转发。

我不希望 eth0 与 wg0 一起位于外部区域,因为如果 VPN 出现故障,我希望互联网访问被终止,而且这有点违背区域的整体理念,不是吗?eth0 仅用于 LAN,而 wg0 用于外部连接。

答案1

使用 0.9 及更新版本的防火墙,您可以使用Firewalld 策略对象控制跨区域转发(在firewalld 0.9 之前,没有办法做到这一点)。

如果您已经eth0绑定到您的internal区域,并且wg0绑定到您的external区域,则可以使用以下一系列命令来创建一个新的自定义策略,internal2external并使用该策略接受从转发到eth0的所有新连接wg0

firewall-cmd --runtime-to-permanent
firewall-cmd --permanent --new-policy=internal2external
firewall-cmd --permanent --policy=internal2external --set-target=ACCEPT
firewall-cmd --reload
firewall-cmd --policy=internal2external --add-ingress-zone=internal
firewall-cmd --policy=internal2external --add-egress-zone=external

(Firewalld 会自动添加综合规则来接受所有已建立/相关的转发连接,因此如果只需要转发已建立的连接,则无需为反向路径单独设置任何内容。)

相关内容