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のカウンターをリセットできますか?
私の知る限り、anonymousカウンターをリセットすることはできません(anonymousをリセットできないのと同じ問題ですクォータ、最後を参照)。
Nftables 0.9.0でテスト済み。必須:nftables> = 0.8およびカーネル> = 4.10。
代わりにできることは、namedカウンターを使用することです。これは、(現在)3つの可能な ステートフルオブジェクト :counter、(conntrack)helperおよびquota。これらの名前付きカウンターは、ルールから参照できます。指定された名前付きカウンターがテーブルにアタッチされます。 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
}
}
参照: ステートフルオブジェクト-nftables wiki
カウンターと割り当てについて話します。すべてのクォータをリセットしても匿名クォータをリセットできないことに関連するリンクされたバグがあります。カウンターでもまったく同じ問題であると考えることができます。2019年1月の時点(およびこの回答の日付)では利用できません。