Перейти к содержанию

Как работает 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 и необходимые исходящие подключения. Набор зависит от базовой конфигурации образа.

Проверьте реальные политики:

sudo iptables -S INPUT
sudo iptables -S OUTPUT
sudo iptables -S FORWARD
sudo ip6tables -S

Если используется iptables 1.8.x, iptables -V может показывать legacy либо nf_tables. Это два backend одного инструмента. Самовольное переключение alternatives может скрыть ранее созданные правила из активного набора; не меняйте backend ради эксперимента на рабочем сервере.

Почему после добавления INPUT-правила связь всё равно не работает

  1. Сервис не слушает интерфейс: ss -lntp.
  2. Трафик блокируется выше по сети или на облачном firewall.
  3. IP/порт/протокол не совпадают с разрешающим правилом.
  4. Исходящая политика OUTPUT не позволяет отправить ответ (либо отсутствует корректное правило ESTABLISHED).
  5. Для контейнера используется FORWARD и отдельные цепочки Docker — простое разрешение INPUT может быть не тем местом.
  6. Сервер использует IPv6, но открыто только IPv4-правило.

Для каждого случая собирайте iptables -L ... -n -v до и после тестового подключения, чтобы увидеть, какие счётчики растут.

Чего избегать

  • Не исполняйте чужие файлы правил без проверки.
  • Не меняйте iptables-legacy на iptables-nft и наоборот без плана миграции.
  • Не копируйте цепочки Docker вручную и не очищайте их.
  • Не считайте iptables -S эквивалентом резервной копии всех таблиц: для экспорта предусмотрен iptables-save.
  • Не считайте временное правило постоянным: его сохранение зависит от механизма запуска на вашем образе.

См. открытие порта и сохранение конфигурации.