使用 nftable 真的很痛苦。我有一个 ipv4 表和一个输入链。
table ip filter { # handle 7
chain input { # handle 1
type filter hook input priority 0; policy accept;
ip daddr 192.168.0.102 counter packets 697173 bytes 850761603 # handle 5
ip saddr 192.168.0.100 counter packets 38 bytes 4096 # handle 6
}
}
但是如何重置句柄 5 的计数器?
据我所知,无法重置匿名计数器(与无法重置匿名配额相同的问题,见最后)。
命名计数器
使用 nftables 0.9.0 测试。必需:nftables >= 0.8 和内核 >= 4.10。
可以做的是使用命名计数器,它是(当前)三种可能的有状态对象之一:计数器、(conntrack)助手和配额。然后可以从规则中引用这些命名的计数器。给定的命名计数器附加到表。OP 的规则集可以这样写:
使用手动nft命令创建命名计数器,如下所示,可选择设置非零值:
现在,可以列出或重置这些命名计数器:
正如预期的那样,reset 命令将自动列出并重置给定的计数器。
也可以重置表中的所有计数器(如果没有给出表,则在所有表中):
参考:有状态的对象 - nftables wiki
其中谈到了柜台和配额。有一个与即使重置所有配额也无法重置匿名配额相关的链接错误。可以假设计数器的问题完全相同:截至 2019 年 1 月(以及在此答案发布之日)不可用:
错误 1314 - nft 重置配额不会重置匿名配额