nft 与 iptables:在多个主机上的链顶部插入规则

nft 与 iptables:在多个主机上的链顶部插入规则

我正在管理一些依赖于 的主机来管理防火墙。我需要在这些主机的链nft顶部插入一条规则。在 下,这就像在每个主机上运行一样简单:INPUTiptables

iptables -I INPUT 1 ...

nft依靠“句柄”来在给定位置插入规则,这在单个主机上工作时没有问题,但在管理多个主机时会使过程复杂化,因为无法保证跨主机的句柄匹配。

例如,现在,在INPUT两个不同主机上的链的开头,我在一台主机上有:

        chain INPUT { # handle 1
                type filter hook input priority 0; policy accept;
                iifname "ovn-k8s-gw0"  counter packets 977422 bytes 167040650 accept # handle 11

另一方面:

        chain INPUT { # handle 1
                type filter hook input priority 0; policy accept;
                iifname "ovn-k8s-gw0"  counter packets 55820 bytes 6735009 accept # handle 12

请注意,一个主机上的第一个规则是 handle 11,而另一个主机上的第一个规则是12

我想我可以用类似这样的方法来获得第一条规则的句柄......

nft list chain filter INPUT -n -a | sed -n 4p | awk '{print $NF}'

...但这不太好。有没有办法指示nft通过绝对位置而不是通过句柄插入规则?

答案1

事实证明这比我想象的要简单。

如果没有参数,该nft insert rule命令将默认在链顶部插入一条规则position

相关内容