nftables 删除链中的所有规则

nftables 删除链中的所有规则

mytable我在表链中有很多规则mychain

> sudo nft -a list table mytable
table ip mytable { # handle 8
        chain mychain { # handle 1
                type filter hook input priority filter; policy accept;
                tcp dport 5550 accept # handle 18
                tcp dport 5551 accept # handle 19
                tcp dport 5552 accept # handle 20
                tcp dport 5553 accept # handle 21
                tcp dport 5554 accept # handle 22
        }
}

根据nftables 维基应该可以从指定的链中删除所有规则。但是以下命令返回错误:

> sudo nft delete rule mytable mychain
Error: syntax error, unexpected newline, expecting handle
delete rule mytable mychain
                           ^

mychain在不迭代规则句柄的情况下删除所有规则的正确命令是什么?

答案1

nftables wiki 中仍然潜伏着一些错误。实际的语法是非常合乎逻辑的:

  • 删除所有内容

    nft flush ruleset
    
  • 清空表(ip如果未指定,则默认使用 as family)。例如对于my table

    nft flush table mytable
    
  • 删除一个表(这也会先清空它)。例如对于mytable

    nft delete table mytable
    
  • 清空链(同上)。例如对于mytable mychain

    nft flush chain mytable mychain
    
  • 删除链(同上)。例如对于mytable mychain

    nft delete chain mytable mychain
    
  • 删除规则(这仍然只能通过句柄引用来完成)。例如对于tcp dport 5550 accept # handle 18

    nft delete rule mytable mychain handle 18
    

需要记住的是该操作的目的。如果您想在以下位置进行操作级别,那么有关键字就很正常了chain

如有疑问,nft联机帮助页通常更准确,但当然必须提前知道信息在链条部分而不是规则部分:

链条

{添加| create} chain [family] table chain [ { type type hook hook [device 设备] 优先级 ; [政策政策;] } ]
{删除|列表 |冲水}[家庭]桌子
删除链 [family] 表句柄 句柄
重命名链 [family] 表链 newname

[...]
冲水刷新指定链的所有规则。

相关内容