我正在管理一些依赖于 的主机来管理防火墙。我需要在这些主机的链nft
顶部插入一条规则。在 下,这就像在每个主机上运行一样简单:INPUT
iptables
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
。