Що означають числа в ланцюгах INPUT, FORWARD, OUTPUT у конфігураційному файлі iptables?


34

Я натрапив на такий конфігураційний файл:

# 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 

Хтось знає що [368:102354], [0:0]і [92952:20764374]означає?


1
Ви можете змінити їх, 0якщо хочете зберегти конфігурацію у файлі. Це не зашкодить, окрім того, що воно, звичайно, скине значення при відновленні.
Тотор

@Тотор чи має це значення, якщо ви повністю видалите номери з конфігураційного файлу? це здається, що це звіт, а не конфігурація, тому чому вони знаходяться у файлі конфігурації?
барлоп

Відповіді:


34

Два значення відповідають кількості пакетів та кількості байтів , до яких застосовувалася політика за замовчуванням ланцюга до цього часу ( детальну інформацію див. У цій іншій відповіді ).

Відповідно до самого вихідного коду iptables-save.c:

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

А структура xt_countersвизначається так include/linux/netfilter/x_tables.h:

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

Зауважте також, що ланцюги, які не вбудовані, [0:0]все одно позначені символом (це примха в коді).


1
Мені подобається ваша відповідь на інформацію з вихідного коду проекту. Велике спасибі.
Бодо Гюго Барвіч

9

Два числа - це кількість пакетів і байтів, до яких було застосовано політику за замовчуванням (а не загальну кількість пакетів / байтів, які бачив ланцюжок). Вони визначаються разом із політикою за замовчуванням для ланцюга - це тому, що вони логічно належать там, а не тому, що не було кращого місця.

Політика за замовчуванням - це дія, яка виконується на пакеті, коли жодне правило з кінцевою ціллю не відповідає. Кінцева ціль - це та, яка зупиняє подальшу обробку правил у поточному ланцюжку верхнього рівня. Наприклад, такі цілі, як ACCEPT або DROP, припиняються, тоді як LOG - ні.

У прикладі конфігурації в цьому питанні останнє правило ланцюга INPUT полягає у знищенні всього, тому політика за замовчуванням ніколи не застосовуватиметься, а лічильники зазвичай залишаються на 0. Ненульові значення (368 пакетів, 102354 байт) можна пояснити. від трафіку, який відбувся до того, як до ланцюга було додано правило "скидання всіх".

Невбудовані ланцюги не можуть мати політику за замовчуванням за визначенням, тому що дія за замовчуванням завжди полягає у поверненні до ланцюга, з якого вони були викликані, тому вони завжди мають значення лічильника 0.


Ви можете розглянути можливість додавання цього до документації iptables-save (manpage) ... Не думаєте? :-)
переслідування

Я зберегла правила в своїх iptables за допомогою iptables-saveі отримала: :INPUT DROP [0:0]і :OUTPUT ACCEPT [249529:173953830]. Отже, я думаю, що людина, яка створила конфігураційний файл, не звернула уваги на ці цифри. Але зараз все досить зрозуміло.
Михайло Морфіков
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.