iptables: Taxa muito rápida Erro

1

Eu quero definir um limite rígido para os pacotes UDP de entrada na minha máquina Linux que está dentro da LAN 10 Gigabit.

O seguinte comando funciona bem

/sbin/iptables -A UDP-LIMIT -m limit --limit 10000/s --limit-burst 500 -j RETURN

Mas quando tento aumentar o limite como

/sbin/iptables -A UDP-LIMIT -m limit --limit 10001/s --limit-burst 500 -j RETURN

Isso me dá o erro Rate too fast .

Alguma ideia do porquê?

Também vi uma macro #define XT_LIMIT_SCALE 10000 in linux / netfilter / xt_limit.h 'na origem do kernel do Linux.

Alguma idéia de por que esse limite está definido?

    
por techiek7 25.09.2018 / 14:52

1 resposta

2

Se você olhar o arquivo de origem libxt_limit.c , poderá encontrar a resposta. Especificamente, observe estas linhas em parse_rate function:

    *val = XT_LIMIT_SCALE * mult / r;
    if (*val == 0)
            /*
             * The rate maps to infinity. (1/day is the minimum they can
             * specify, so we are ok at that end).
             */
            xtables_error(PARAMETER_PROBLEM, "Rate too fast \"%s\"\n", rate);
    return 1;

A macro XT_LIMIT_SCALE é 10.000 como você disse. O valor de mult começa em 1 por segundos e atinge 24 * 60 * 60 por dias. O maior valor será o caso de dias de curso. Se você fizer as contas, você receberá a seguinte expressão:

10000 * 24 * 60 * 60 / 10000 = 864,000,000 / 10000 = ..

O número a ser dividido pode ser armazenado em um inteiro não assinado de 32 bits (uint32_t). No entanto, esse número será truncado se ficar maior (como no caso de XT_LIMIT_SCALE = 100,0000). O valor 10001 não causará esse problema, mas acho que não é um valor útil.

    
por 25.09.2018 / 16:07