Как сохранить правила в iptables, чтобы они не сбросились при перезагрузке?

«Как сохранить правила в iptables, чтобы они не сбросились при перезагрузке?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Чтобы правила iptables сохранялись после перезагрузки, я использую один из следующих подходов, в зависимости от дистрибутива и предпочтений.

1. Использование пакета iptables-persistent (Debian/Ubuntu) Это самый простой способ. Пакет автоматически загружает сохранённые правила при старте системы.

sudo apt-get install iptables-persistent
# Во время установки вам предложат сохранить текущие правила IPv4 и IPv6.
# Для ручного сохранения после внесения изменений:
sudo netfilter-persistent save

2. Ручное сохранение и восстановление правил (Универсальный метод) Я сохраняю текущие правила в файл и настраиваю их загрузку при загрузке системы.

# Сохраняем текущие правила в файл
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6

Затем нужно обеспечить загрузку этих правил. В системах с systemd я создаю и включаю простой сервис:

# /etc/systemd/system/iptables-restore.service
[Unit]
Description=Restore iptables rules
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables/rules.v4
ExecStart=/sbin/ip6tables-restore /etc/iptables/rules.v6
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

# Включаем сервис
sudo systemctl enable iptables-restore.service

3. Использование встроенных средств дистрибутива В некоторых дистрибутивах (например, CentOS/RHEL) можно использовать службу iptables:

# Сохраняем правила в конфигурационный файл службы
sudo service iptables save
# Правила сохранятся в /etc/sysconfig/iptables

Ключевой момент: Всегда проверяю, что правила корректно применяются после перезагрузки, выполняя sudo iptables -L -n.