nftables 和 iptables/ip6tables 规则可以同时应用吗?如果是这样:优先顺序是什么?

0xC*_*22L 4 ubuntu iptables nftables

这个问题几乎已经在标题中了:

nftables 和 iptables/ip6tables 规则可以同时应用吗?如果是这样:优先顺序是什么?

我问的原因是:大量工具——尤其是来自容器化领域的工具——仍然依赖iptablesip6tables添加规则,并使容器化服务对网络上的其他实体可用或不可用。因此,如果我想表达我的标准防火墙规则,nft它必须与iptables/并行工作ip6tables

或者这是通过使用iptables-legacy/ ip6tables-legacywithupdate-alternatives或类似来满足的?即所有这些容器化工具继续使用他们假设的iptables/ ip6tables,但实际上它是 nftables 提供的兼容性“层”?

至于优先顺序,如果可以显示规则的优先级,我会很欣赏排序图。

Ste*_*itt 7

除了 NAT 之外,还可以同时使用内核的iptablesnftables,但这需要一些注意。应用规则的顺序由钩子优先级决定;遗留iptables默认值为 0,因此如果nft钩子应该在之前应用iptables,则可以将其设置为优先级 -1,如果应该在之后应用,则可以设置为1。

iptables-nft旨在促进迁移到nft. 将它安装在一起nft将允许期望iptables/ip6tables接口的程序继续工作,nftables在内核中使用。

这是当前容器化环境(例如 Kubernetes)中使用的方法:容器应该检测主机使用了哪些表集,并使用相应的iptables接口(馈送旧表或nftables)。有关详细信息,请参阅Kubernetes 问题 #71305

主要的痛点来自组合iptables-nftand iptables-legacy:它们使用相同的优先级,因此数据包通过两条链而最终无处可去。

有关优先级的详细信息,请参阅何时以及如何在 nftables 中使用链优先nftables级。