Назад | Перейти на главную страницу

Как сбросить счетчик 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 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 года (и на дату этого ответа):

Ошибка 1314 - сброс квот nft не сбрасывает анонимные квоты