Цепочки (Chains) и таблицы в iptables

Nov, 1, 2025

🔥 Цепочки (Chains) в iptables

iptables — это система фильтрации пакетов в Linux, основанная на подсистеме netfilter ядра.
Она состоит из таблиц (tables), каждая из которых содержит цепочки (chains).
Цепочки представляют собой упорядоченные списки правил, применяемых к сетевым пакетам в зависимости от их направления и стадии обработки.


🧩 Основные таблицы и цепочки

ТаблицаНазначениеОсновные цепочки
filterФильтрация пакетов (принимать/отклонять)INPUT, OUTPUT, FORWARD
natТрансляция адресов (маскарадинг, переадресация портов)PREROUTING, POSTROUTING, OUTPUT
mangleИзменение (модификация) пакетовPREROUTING, POSTROUTING, INPUT, OUTPUT, FORWARD
rawИсключение пакетов из отслеживания соединений (conntrack)PREROUTING, OUTPUT
securityДополнительные политики безопасности (SELinux, AppArmor)INPUT, OUTPUT, FORWARD

🧱 1. Таблица filter — основная для firewall

Это основная таблица, отвечающая за приём и блокировку пакетов.
Если таблица не указана явно (iptables -A INPUT ...), используется именно filter.

ЦепочкаНазначение
INPUTОбрабатывает пакеты, направленные *в сервер*
OUTPUTОбрабатывает пакеты, исходящие *из сервера*
FORWARDОбрабатывает пакеты, проходящие *через сервер* (маршрутизируемые)

📘 Пример:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

🌐 2. Таблица nat — трансляция адресов

Таблица nat (Network Address Translation) отвечает за изменение адресов в пакетах:

  • подмена исходного адреса при выходе в интернет (MASQUERADE, SNAT);
  • перенаправление портов (DNAT, портфорвардинг).
ЦепочкаНазначение
PREROUTINGИзменяет адрес назначения до маршрутизации
POSTROUTINGМеняет адрес источника после маршрутизации
OUTPUTПрименяется к локально исходящим пакетам

🔹 Примеры:

  1. Маскарадинг (исходящий NAT):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  1. Проброс порта (DNAT):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80

🧬 3. Таблица mangle — «тюнинг» пакетов

Таблица mangle используется для изменения полей заголовков пакетов — например:

  • установка TOS/DSCP (приоритет трафика),
  • изменение TTL (time-to-live),
  • маркировка пакетов (для QoS или маршрутизации).
ЦепочкаНазначение
PREROUTINGИзменяет пакеты до маршрутизации
POSTROUTINGИзменяет пакеты после маршрутизации
INPUTДля пакетов, адресованных серверу
OUTPUTДля пакетов, отправляемых сервером
FORWARDДля пакетов, проходящих через сервер

🔹 Пример — маркировка пакетов:

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1

4. Таблица raw — обход conntrack

Таблица raw используется до системы отслеживания соединений (conntrack).
Позволяет исключать пакеты из state tracking — это снижает нагрузку, но требует осторожности.

ЦепочкаНазначение
PREROUTINGДля входящих пакетов (до conntrack)
OUTPUTДля исходящих пакетов (до conntrack)

🔹 Пример:

iptables -t raw -A PREROUTING -p tcp --dport 22 -j NOTRACK

🛡️ 5. Таблица security — политика SELinux / AppArmor

Таблица security применяется для реализации MAC-политик (Mandatory Access Control), таких как SELinux или AppArmor.
Используется в основном в корпоративных и критически безопасных системах.

ЦепочкаНазначение
INPUTБезопасность входящих пакетов
OUTPUTБезопасность исходящих пакетов
FORWARDКонтроль пересылаемых пакетов

🔹 Пример:

iptables -t security -A INPUT -p tcp --dport 22 -j SECMARK --selctx system_u:object_r:ssh_port_t:s0

🧠 Общая схема прохождения пакета

Входящий пакет:
  PREROUTING (raw  mangle  nat)
      
  Маршрутизация (решаем: в сервер или через сервер)
      
      если в сервер  INPUT  локальный процесс
      если через сервер  FORWARD  POSTROUTING (mangle  nat)

Исходящий пакет:
  Локальный процесс  OUTPUT (raw  mangle  nat  filter)
      
  POSTROUTING (mangle  nat)

📘 Итоговая таблица всех цепочек

ТаблицаЦепочкиНазначение
filterINPUT, OUTPUT, FORWARDОсновная фильтрация пакетов
natPREROUTING, POSTROUTING, OUTPUTТрансляция IP (NAT, DNAT, SNAT)
manglePREROUTING, POSTROUTING, INPUT, OUTPUT, FORWARDМодификация заголовков, маркировка
rawPREROUTING, OUTPUTУправление conntrack (NOTRACK)
securityINPUT, OUTPUT, FORWARDМетки SELinux / MAC-политика

🔗 Полезные ссылки:

Цепочки (Chains) и таблицы в iptables | Aleksandr Suprun