Linux
如何重置 nftable 計數器?
使用 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 的規則集可以這樣寫:
table ip filter { counter mycounterd102 { packets 697173 bytes 850761603 } counter mycounters100 { packets 38 bytes 4096 } chain input { type filter hook input priority 0; policy accept; ip daddr 192.168.0.102 counter name "mycounterd102" ip saddr 192.168.0.100 counter name "mycounters100" } }
使用手動nft命令創建命名計數器,如下所示,可選擇設置非零值:
nft add counter ip filter mycounterd102 packets 697173 bytes 850761603
現在,可以列出或重置這些命名計數器:
# nft list counter ip filter mycounterd102 table ip filter { counter mycounterd102 { packets 697173 bytes 850761603 } } # nft reset counter ip filter mycounterd102 table ip filter { counter mycounterd102 { packets 697173 bytes 850761603 } } # nft list counter ip filter mycounterd102 table ip filter { counter mycounterd102 { packets 0 bytes 0 } }
正如預期的那樣,reset 命令將自動列出並重置給定的計數器。
也可以重置表中的所有計數器(如果沒有給出表,則在所有表中):
# nft reset counters table ip filter table ip filter { counter mycounters100 { packets 38 bytes 4096 } counter mycounterd102 { packets 0 bytes 0 } }
其中談到了櫃檯和配額。有一個與即使重置所有配額也無法重置匿名配額相關的連結錯誤。可以假設計數器的問題完全相同:截至 2019 年 1 月(以及在此答案發布之日)不可用: