web-dev-qa-db-fra.com

Quels sont les chiffres en entrée, vers l'avant, les chaînes de sortie signifient dans le fichier de configuration iptables?

Je suis tombé sur le fichier de configuration suivant:

# 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 

Est-ce que quelqu'un sait quoi [368:102354], [0:0] et [92952:20764374] moyenne?

34
Mikhail Morfikov

Les deux valeurs correspondent au nombre de paquets et le nombre d'octets que la politique par défaut de la chaîne a été appliquée jusqu'à présent (voir ceci autre réponse pour plus de détails).

Selon le code source de iptables-save.c lui-même:

/* 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");
    }
}

Et la structure xt_counters est défini comme suit dans include/linux/netfilter/x_tables.h:

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

Notez également que les chaînes qui ne sont pas intégrées sont marquées de [0:0] De toute façon (c'est une bizarrerie dans le code).

35
perror

Les deux numéros sont respectivement le nombre de paquets et d'octets que la stratégie par défaut a été appliquée à (pas le nombre total de paquets/octets observés par la chaîne). Ils sont spécifiés avec la politique par défaut de la chaîne - c'est parce qu'ils appartiennent logiquement là-bas, pas parce qu'il n'y avait pas de meilleur endroit.

La stratégie par défaut est l'action effectuée sur le paquet lorsqu'aucune règle avec une cible de terminaison est assortie. Une cible de terminaison est une cible qui arrête de traiter davantage les règles de la chaîne de niveau supérieur actuel. Par exemple, des objectifs tels que accepter ou tomber sont terminés, tandis que le journal n'est pas.

Dans l'exemple de configuration dans cette question, la dernière règle de la chaîne d'entrée consiste à tout supprimer, la stratégie par défaut ne sera jamais appliquée et les compteurs doivent normalement rester à 0. Valeurs non nulles (368 paquets, 102354 octets) peuvent être expliqués. par le trafic qui a eu lieu avant que la règle "goutte" "ait été ajoutée à la chaîne.

Les chaînes non intégrées ne peuvent pas avoir de stratégie par défaut par définition, car l'action par défaut est toujours de retourner à la chaîne qu'elles ont été appelées, c'est pourquoi elles ont toujours des contre-valeurs de 0.

9
user56143