Nftables no funciona como se esperaba para bloquear con el medidor

Nftables no funciona como se esperaba para bloquear con el medidor

Objetivo: Contabilizar el exceso de paquetes cuya velocidad IP de origen y puerto de destino sean superiores a 200 paquetes por segundo, ejemplo:

1 a 2: IP 1.1.1.1 a MiServidor: 80
[Esto sucede 201 veces en el segundo 1]

table netdev filter {
    set whitelist {
        type ipv4_addr
        elements = { 186.248.79.100 }
    }

    set blocklist {
        type ipv4_addr
        size 65535
        flags dynamic,timeout
        timeout 30s
    }

    chain ingress {
        type filter hook ingress device "eth0" priority -450; policy accept;
        ip saddr @whitelist accept
        ip daddr 10.0.0.192 jump input
        ip daddr != 10.0.0.192 jump forward
    }

    chain http {
        ip saddr 191.185.17.156 counter
        meter http size 65535 { ip saddr . tcp dport limit rate over 200/second } add @blocklist { ip saddr } counter
    }

    chain forward { }

    chain input {
        tcp dport vmap { 8000 : jump portainer, 9443 : jump portainer }
        tcp dport vmap { 80 : jump http }
    }
}

El problema está dentro de la cadena http, es decir, hice 20 solicitudes http al servidor (mi IP de fuente pública es 191.185.17.156) el contador de aceptación muestra que hay 200 paquetes en total (incluido el protocolo de enlace de forma de árbol tcp, ack, etc.) , hasta entonces es normal, ver:

ip saddr 191.185.17.156 counter packets 100 bytes 4920

meter http size 65535 { ip saddr . tcp dport limit rate over 200/second } add @blocklist { ip saddr } counter packets 73 bytes 3576

Ahora lo que me rompe la cabeza, ¿cómo es posible tener 100 paquetes desde mi IP de origen al puerto 80 del servidor y al mismo tiempo hay 73 paquetes sobrantes? Dado que 100 es menor que 200, el segundo contador debería estar vacío.

Sin mencionar que IPv4 se ha agregado indebidamente a la lista de bloqueo.

información relacionada