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[...]
冲水刷新指定链的所有规则。