这个问题几乎已经在标题中了:
nftables 和 iptables/ip6tables 规则可以同时应用吗?如果是这样:优先顺序是什么?
我问的原因是:大量工具(尤其是来自容器化领域的工具)仍然依赖iptables
并ip6tables
添加规则,并使容器化服务对网络上的其他实体可用或不可用。因此,如果我想用nft
它来表达我的标准防火墙规则,则必须与iptables
/并行工作ip6tables
。
或者这是通过使用iptables-legacy
/ ip6tables-legacy
withupdate-alternatives
或类似的方式来满足的?即所有这些容器化工具继续使用他们假设的iptables
/ ip6tables
,但实际上它是 nftables 提供的兼容性“层”?
至于优先顺序,如果可以显示规则具有哪些优先级,我希望有某种图表。
答案1
可以同时使用内核的iptables
和nftables
,但是需要一些注意。规则的应用顺序由钩子优先级决定;旧版iptables
默认值为 0,因此nft
如果钩子应在 之前应用,则可以将其优先级设置为 -1 iptables
;如果应在之后应用,则可以将其设置为 1。
iptables-nft
旨在促进迁移到nft
.与它一起安装将允许期望/接口的nft
程序继续工作,在内核中使用。iptables
ip6tables
nftables
这是当前容器化环境(例如 Kubernetes)中使用的方法:容器应该检测主机使用哪组表,并使用相应的iptables
接口(提供旧表或nftables
)。看Kubernetes 问题 #71305了解详情。
主要的痛点来自于组合iptables-nft
和iptables-legacy
:它们使用相同的优先级,因此数据包会穿过两条链,最终无处可去。
看何时以及如何在 nftables 中使用链优先级了解nftables
优先事项的详细信息。