← Back to blog

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

⚙️ Теория

🔥 Цепочки (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Дополнительные политики MAC (например, SELinux)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, портфорвардинг). Важно: таблица nat применяется при создании нового соединения; последующие пакеты обычно обрабатываются через состояние conntrack.
ЦепочкаНазначение
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 — политика MAC (SELinux и др.)

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

ЦепочкаНазначение
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-политика

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


🧪 Практика

  • Используйте команды и примеры из разделов выше как рабочий чеклист.
  • Перед применением в production валидируйте изменения на test/stage и сверяйте с официальной документацией.

🧾 Вывод

iptables организует обработку трафика через таблицы и цепочки netfilter, где каждая стадия отвечает за конкретный класс задач: фильтрацию, NAT, модификацию пакетов и MAC-политику.
Практически важно не только знать команды, но и понимать порядок прохождения пакетов, чтобы правила не конфликтовали между собой.


📚 Ссылки

  • См. ссылки в секции Проверка источников ниже.

Проверка источников

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