Risposte:
Il modulo limit imposta un timer sulla frequenza con cui la regola iptables allegata può corrispondere a un pacchetto.
Il parametro limit-burst imposta il numero di pacchetti che possono corrispondere. Il tempo limite imposta la frequenza con cui il limite-burst si ripristina da solo.
Per ridurlo, supponiamo prima che il bit di scoppio non esista (o sia impostato su 1, equivale alla stessa cosa). Il parametro limite effettivo specificato imposta semplicemente il timer, sia per la regola che per il limite-burst. Quindi impostandolo su 5 / secondo si renderebbe il timer 1/5 di secondo, e impostandolo su 4 / ora si renderebbe il timer 15 minuti. Nessun pacchetto corrisponderà alla regola mentre il timer è in esecuzione (quindi se si tratta di una regola target ACCETTA, nessun pacchetto verrà accettato per 1/5 di secondo o 15 minuti, a seconda).
Quindi per complicare questo ... Il parametro limit-burst si comporta come un contatore di pacchetti. Per ogni pacchetto corrispondente, il conteggio diminuisce di uno e il timer si avvia (o si riavvia se è già in esecuzione). La regola corrisponde ancora a tutto ciò che entra. Al termine del timer, il conteggio aumenta di uno. Se il contatore colpisce 0, la regola smette di corrispondere , fino a quando il timer non termina e il conteggio torna di nuovo a 1, e continua a contare dal timer fino a quando non torna allo scoppio impostato.
Quindi impostare burst su 1 significa che stai letteralmente abbinando 1 e solo 1 pacchetto per intervallo di timer, e impostandolo su più alto significa che stai creando un buffer su quel timer prima che sia strettamente impegnato.
A titolo di esempio, supponiamo di avere una raffica di 10 e un timer di 1 / secondo, su una regola ACCEPT. Supponiamo che tu ottenga 20 pacchetti corrispondenti tutti in un secondo. Le prime dieci partite sono accettate, il resto no. Dieci secondi dopo, il contatore del burst è tornato al massimo di 10. Ora arrivano 5 partite (entro un secondo), tutte non corrispondono nessun problema, il contatore ora sarebbe a 5. Passano 2 secondi senza partite, mettendo il contatore a 7. Altre 20 partite arrivano; il primo 7 corrisponderebbe e accetterebbe, il resto no.
Parafrasando ampiamente da questo documento , che contiene ulteriori esempi nella sezione che documenta il modulo limite.
--limit
: Specifica la velocità con cui i token vengono ricaricati nel bucket. 4/hour
significa 4 token all'ora (1 token ogni 15 minuti).
--limit-burst
: Specifica la quantità massima di token che possono essere riempiti nel bucket. (Questa è anche la quantità di token con cui inizia il bucket).