Цепочки в iptables
Создана 10.04.2026
Отредактирована 10.04.2026
Отредактирована 10.04.2026
Отличная идея — разобрать цепочки iptables графически. Представьте, что iptables — это система пропускных пунктов (КПП) внутри ядра Linux, через которые проходят все сетевые пакеты.
Вот схема того, как пакет движется через основные цепочки в зависимости от его направления.
1. 🟢 Цепочка PREROUTING (До маршрутизации)
Где находится: Сразу как пакет зашел на сетевой интерфейс.
Задача: Изменить пакет ДО ТОГО, как система решит, куда его отправлять.
Типичный пример: Перенаправление порта (DNAT). Например, вы летите в Москву, но в аэропорту вас сажают на рейс до Сочи.
Используется в таблице: nat (и mangle).
2. 🟡 Цепочка INPUT (Вход)
Где находится: После маршрутизации, если пакет адресован самому серверу.
Задача: ФИЛЬТРАЦИЯ. Решить: пустить пакет к локальной программе (SSH, Web-сервер) или заблокировать.
Типичный пример: Запретить всем (кроме 1.2.3.4) стучаться на порт 22.
Используется в таблице: filter (главная таблица)
3. 🟡 Цепочка FORWARD (Транзит)
Где находится: После маршрутизации, если пакет НЕ для сервера, а для другого компьютера в сети.
Задача: ФИЛЬТРАЦИЯ ТРАНЗИТА. Сервер работает как маршрутизатор.
Типичный пример: Домашний роутер: пакет идет от ноутбука в интернет. Сервер (роутер) просто передает его дальше, но проверяет — не вредоносный ли он.
Используется в таблице: filter.
4. 🔴 Цепочка OUTPUT (Исход)
Где находится: Когда пакет САМ сервер создал и отправляет наружу.
Задача: Фильтрация или изменение исходящих пакетов.
Типичный пример: Запретить самому серверу ходить на сайты с порно или изменить его внешний IP-адрес (SNAT).
Используется в таблицах: filter, nat (редко), mangle.
5. 🔵 Цепочка POSTROUTING (После маршрутизации)
Где находится: Самый последний этап, перед уходом пакета с сетевой карты.
Задача: Изменить пакет (обычно обратный адрес отправителя).
Типичный пример: Маскарадинг (SNAT). Сервер подменяет частный IP (192.168.1.2) на свой публичный IP, чтобы пакет вышел в интернет.
Используется в таблице: nat
🧩 Таблицы и их связь с цепочками (Важное уточнение)
Цепочки — это места. Таблицы — это типы действий.
Правило выглядит как
Правило выглядит как
iptables -t nat -A PREROUTING ... (В месте PREROUTING, в таблице NAT, сделать действие). Как это выглядит в матрице (куда можно добавлять правила):
| Таблица / Действие | PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING |
|---|---|---|---|---|---|
| raw (отладка) | ✅ | ✅ | ❌ | ✅ | ❌ |
| mangle (изменение TTL и пр.) | ✅ | ✅ | ✅ | ✅ | ✅ |
| nat (DNAT/SNAT) | ✅ (DNAT) | ❌ | ❌ | ✅ (редко) | ✅ (SNAT) |
| filter (Брандмауэр) | ❌ | ✅ | ✅ | ✅ | ❌ |
🎯 Жизненный пример (Графическая история)
Допустим, вы настроили NAT-сервер для офиса.
- Компьютер Алекса (IP 192.168.1.10) хочет открыть сайт nocip.ru
- Пакет идет на сервер (внутренняя сеть eth1, внешняя eth0).
- Цепочка
PREROUTING: "Ага, пакет пришел. Менять адрес назначения? Нет, это не перенаправление порта. Ок, иди дальше." - Маршрутизация: "Пакет не мне (192.168.1.10 != IP сервера), а наружу. Отправляю в
FORWARD." - Цепочка
FORWARD(filter): "Алекс, ты можешь выходить в интернет? Проверяю правила... Да, можно. Пускаю." - Цепочка
POSTROUTING(nat): "Пакет уходит наружу. Но у Алекса частный адрес! Меняю 192.168.1.10 на Мой_Внешний_IP (1.2.3.4)." - nocip.ru получает пакет ОТ СЕРВЕРА (1.2.3.4), не от Алекса.
- nocip.ru отвечает серверу (1.2.3.4).
- Сервер получает ответ.
- Цепочка
PREROUTING: "А, это ответ от nocip.ru . По таблице соединений вспоминаю, что это для Алекса." - Цепочка
FORWARD: "Пропускаю ответ к Алексу." - Цепочка
POSTROUTING: (Не трогает обратный путь, или меняет обратно).
💡 Простое запоминалка (Шпаргалка)
INPUT= "Пускать ли ко мне?" (Защита сервера)
FORWARD= "Пускать ли через меня?" (Маршрутизация)OUTPUT= "Пускать ли от меня?" (Ограничение сервера)PREROUTING= "Перенаправить входящий" (DNAT)POSTROUTING= "Спрятать исходящий" (SNAT, Маскарадинг)