Как работает iptables в НАЙС.ОС¶
В НАЙС.ОС CLOUD штатный firewall реализован через iptables и системный сервис пакета. Главное отличие от многих готовых примеров для других дистрибутивов — строгая исходящая политика в базовом профиле и возможное наличие цепочек Docker уже после установки.
Архитектура¶
Сетевой стек доставляет пакеты ядру. Маршрутизация определяет интерфейс и адрес назначения. Netfilter проверяет пакеты по цепочкам фильтрации и трансляции адресов, а iptables управляет правилами. systemd-networkd не заменяет iptables: он задаёт адреса/маршруты, а не политики доступа.
Базовые таблицы¶
| Таблица | Назначение | Что проверить |
|---|---|---|
filter |
разрешение/отклонение трафика | iptables -S |
nat |
DNAT/SNAT/MASQUERADE | iptables -t nat -S |
mangle |
специальные изменения сетевых пакетов | iptables -t mangle -S |
raw |
ранняя обработка пакетов | iptables -t raw -S |
Не предполагайте, что во всех таблицах есть пользовательские правила. В контейнерных конфигурациях Docker может создавать собственные цепочки и MASQUERADE.
Понимание порядка правил¶
Внутри цепочки правила применяются последовательно. Если политика по умолчанию DROP, соединение пройдёт только когда трафик разрешает более раннее подходящее правило либо специализированная цепочка. Типичный допустимый трафик — loopback, ESTABLISHED,RELATED, ограниченный SSH и необходимые исходящие подключения. Набор зависит от базовой конфигурации образа.
Проверьте реальные политики:
Если используется iptables 1.8.x, iptables -V может показывать legacy либо nf_tables. Это два backend одного инструмента. Самовольное переключение alternatives может скрыть ранее созданные правила из активного набора; не меняйте backend ради эксперимента на рабочем сервере.
Почему после добавления INPUT-правила связь всё равно не работает¶
- Сервис не слушает интерфейс:
ss -lntp. - Трафик блокируется выше по сети или на облачном firewall.
- IP/порт/протокол не совпадают с разрешающим правилом.
- Исходящая политика OUTPUT не позволяет отправить ответ (либо отсутствует корректное правило ESTABLISHED).
- Для контейнера используется FORWARD и отдельные цепочки Docker — простое разрешение
INPUTможет быть не тем местом. - Сервер использует IPv6, но открыто только IPv4-правило.
Для каждого случая собирайте iptables -L ... -n -v до и после тестового подключения, чтобы увидеть, какие счётчики растут.
Чего избегать¶
- Не исполняйте чужие файлы правил без проверки.
- Не меняйте
iptables-legacyнаiptables-nftи наоборот без плана миграции. - Не копируйте цепочки Docker вручную и не очищайте их.
- Не считайте
iptables -Sэквивалентом резервной копии всех таблиц: для экспорта предусмотренiptables-save. - Не считайте временное правило постоянным: его сохранение зависит от механизма запуска на вашем образе.