将 WireGuard 配置从 iptables 转换为 nft

将 WireGuard 配置从 iptables 转换为 nft

我正在一个全新的 Raspberry Pi OS 映像上安装 WireGuard,并想将服务器配置从另一台设备移到这台设备上。但打开界面时显示找不到命令iptables。这时我才想起 iptables 已经过时了。所以是时候再次尝试一些新技术了。;-)

问题是,我无法使用它。我的 WireGuard 服务器配置中有这些行,我猜是为了让客户端连接到我的整个家庭网络。

[Interface]
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

这些网络工具的变化速度比我使用它们的速度要快,所以学习一个工具真的没意义,因为我所学到的知识下次就没用了。

因此我安装了 iptables 包来获取iptables-translate我读到的新命令。它将第一行转换为:

PostUp   = nft add rule ip filter FORWARD iifname "%i" counter accept; nft add rule ip filter FORWARD oifname "%i" counter accept; nft add rule ip nat POSTROUTING oifname "eth0" counter masquerade

现在长多了。其他人可能会觉得它更易读。测试将显示它是否等效。但第二行无法翻译。所以我被困在这里。我应该把第二行写成什么才能再次关闭界面?

或者是否有一个更好更简单的替代方案?

(我知道现在该系统上已经有 iptables 了。但是谁知道它会在存储库中保留多久,所以我想现在就做好准备,将我的东西转换为更面向未来的东西。)

答案1

或者是否有一个更好更简单的替代方案?

是的,将相同的规则添加到您的静态规则集中。

Netfilter 实际上并不要求在使用-i或时接口存在iifname。无论您使用的是 iptables 还是 nft,您都可以始终保持规则处于活动状态 - 当接口存在时它会起作用;当接口不存在时它什么也不做。

这些网络工具的变化速度比我使用的速度要快,所以学习其中一种工具真的毫无意义

Linux 防火墙工具的最后一次变化(ipchains 到 iptables)发生在大约 20 年前。

当前版本的命令iptables已被重写以使用 nft 后端。(大多数发行版都提供这两种版本的软件包,但如果您有 iptables-translate,则很可能您也有基于 nft 的 iptables 版本。)这意味着您可以在接下来 $planned_lifetime_of_nftables 年内继续使用 iptables。

相关内容