← Назад к вопросам
Как сохранить правила в iptables, чтобы они не затерлись при перезагрузке
2.0 Middle🔥 101 комментариев
#Linux и администрирование#Сети и протоколы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Сохранение iptables правил при перезагрузке
Это важный вопрос, так как iptables правила по умолчанию хранятся в памяти и теряются при перезагрузке системы. Есть несколько проверенных способов их сохранить.
Способ 1: iptables-persistent (рекомендуемый)
На современных Debian/Ubuntu системах лучший способ — использовать пакет iptables-persistent:
# Установка пакета
sudo apt-get update
sudo apt-get install iptables-persistent
# Во время установки система спросит, хотите ли вы сохранить текущие правила
# После этого правила будут сохраняться автоматически в:
# /etc/iptables/rules.v4 (для IPv4)
# /etc/iptables/rules.v6 (для IPv6)
# После добавления новых правил сохраняем их:
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6
# При перезагрузке systemd автоматически загрузит эти правила
Способ 2: iptables-restore при загрузке
Если iptables-persistent не установлен, можно настроить загрузку правил через rc.local:
# Сохраняем текущие правила:
sudo iptables-save > /etc/iptables/rules.v4
# Редактируем /etc/rc.local
sudo nano /etc/rc.local
# Добавляем строку перед "exit 0":
/sbin/iptables-restore < /etc/iptables/rules.v4
# Даём права на выполнение:
sudo chmod +x /etc/rc.local
Способ 3: systemd unit file
Создаём собственный systemd сервис для загрузки iptables:
# Создаём файл сервиса:
sudo nano /etc/systemd/system/iptables-restore.service
[Unit]
Description=Restore iptables firewall rules
Before=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 daemon-reload
sudo systemctl enable iptables-restore.service
sudo systemctl start iptables-restore.service
Способ 4: firewalld (альтернатива на RHEL/CentOS)
На более современных системах вместо iptables лучше использовать firewalld, который автоматически сохраняет правила:
# Установка
sudo yum install firewalld
# Добавление правила (сохраняется автоматически)
sudo firewall-cmd --add-port=8080/tcp --permanent
# Перезагрузка firewall
sudo firewall-cmd --reload
Лучшие практики
- Всегда тестируйте правила перед сохранением, чтобы не заблокировать себе доступ
- Используйте firewalld на новых системах вместо iptables — это проще и безопаснее
- Версионируйте файлы правил в Git для отслеживания изменений
- Документируйте назначение каждого правила в коментариях
Лично я предпочитаю iptables-persistent как наиболее надежное и простое решение.