Cosa significano i numeri nelle catene INPUT, FORWARD, OUTPUT nel file di configurazione di iptables?


34

Mi sono imbattuto nel seguente file di configurazione:

# Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006
*filter
:INPUT ACCEPT [368:102354]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92952:20764374]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# Completed on Sun Apr 23 06:19:53 2006 

Qualcuno sa cosa [368:102354], [0:0]e [92952:20764374]media?


1
Puoi cambiarli in 0se vuoi salvare la tua configurazione in un file. Ciò non farà male, tranne che ovviamente ripristinerà i valori quando lo ripristini.
Totor

@Totor fa differenza se rimuovi completamente i numeri dal file di configurazione? sembra che siano un report piuttosto che una configurazione, quindi perché si trovano in un file di configurazione?
barlop,

Risposte:


34

I due valori corrispondono al numero di pacchetti e al numero di byte a cui finora è stata applicata la politica predefinita della catena (vedere questa altra risposta per i dettagli).

Secondo il codice sorgente in iptables-save.csé:

/* Dump out chain names first,
 * thereby preventing dependency conflicts */
for (chain = iptc_first_chain(h);
     chain;
     chain = iptc_next_chain(h)) {

    printf(":%s ", chain);
    if (iptc_builtin(chain, h)) {
        struct xt_counters count;
        printf("%s ", iptc_get_policy(chain, &count, h));
        printf("[%llu:%llu]\n", 
               (unsigned long long)count.pcnt, 
               (unsigned long long)count.bcnt);
    } else {
        printf("- [0:0]\n");
    }
}

E, la struttura xt_countersè definita come segue in include/linux/netfilter/x_tables.h:

struct xt_counters {
    __u64 pcnt, bcnt; /* Packet and byte counters */
};

Nota anche che le catene che non sono integrate sono [0:0]comunque contrassegnate con (è una stranezza nel codice).


1
Mi piace la tua risposta con Insight del codice sorgente del progetto. Grazie mille.
Bodo Hugo Barwich,

9

I due numeri sono rispettivamente il numero di pacchetti e byte a cui è stata applicata la politica predefinita (non il numero totale di pacchetti / byte visti dalla catena). Sono specificati insieme alla politica di default per la catena - questo perché logicamente appartengono lì, non perché non c'era posto migliore.

La politica predefinita è l'azione che viene eseguita sul pacchetto quando nessuna regola con una destinazione finale è stata abbinata. Un obiettivo di terminazione è quello che interrompe l'ulteriore elaborazione delle regole nell'attuale catena di livello superiore. Ad esempio, target come ACCEPT o DROP stanno terminando, mentre LOG non lo è.

Nella configurazione di esempio in questa domanda, l'ultima regola nella catena INPUT è DROP tutto, quindi la politica di default non verrà mai applicata e i contatori dovrebbero normalmente rimanere a 0. Valori diversi da zero (368 pacchetti, 102354 byte) dal traffico che ha avuto luogo prima che la regola "drop-all" fosse aggiunta alla catena.

Le catene non incorporate non possono avere criteri predefiniti per definizione, poiché l'azione predefinita è sempre quella di tornare alla catena da cui sono stati chiamati, ecco perché hanno sempre valori di contatore pari a 0.


Puoi considerare di aggiungere questo alla documentazione di iptables-save (manpage) ... Non pensi? :-)
perror

Ho salvato le regole nel mio iptables usando iptables-savee ho ottenuto: :INPUT DROP [0:0]e :OUTPUT ACCEPT [249529:173953830]. Quindi, penso che la persona che ha creato il file di configurazione non abbia prestato attenzione a quei numeri. Ma ora è tutto abbastanza chiaro.
Mikhail Morfikov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.