Использовать 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 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
}
}
Как и ожидалось, команда сброса автоматически выведет список и сбросит данный счетчик.
Также возможно сбросить все счетчики в таблице (или во всех таблицах, если таблица не указана):
# nft reset counters table ip filter
table ip filter {
counter mycounters100 {
packets 38 bytes 4096
}
counter mycounterd102 {
packets 0 bytes 0
}
}
Ссылка: Объекты с сохранением состояния - nftables wiki
в котором говорится о счетчиках и квотах. Связанная ошибка связана с невозможностью сбросить анонимную квоту даже при сбросе всех квот. Можно предположить, что это точно такая же проблема со счетчиками: недоступна с января 2019 года (и на дату этого ответа):