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

После перезагрузки Ubuntu 12.10 правила iptables «слетают». Знаю, что можно победить прописыванием правил в rc.local. Как альтернативу посоветовали юзать ferm. Что думает на эту тему опытный хабровчанин? Какой вариант предпочтительнее и где могут быть «подводные камни»?
  • Вопрос задан
  • 181361 просмотр
Решения вопроса 1
Infra_HDC
@Infra_HDC
R2AMO
Вот решение, работающее на данный момент для Debian 6.0 и Debian 7.0, должно работать и в Ubuntu.
Под суперпользователем:
  1. Делаем скрипт, выполняемый при поднятии интерфейса
    nano -w /etc/network/if-up.d/00-iptables
    
    #!/bin/sh
    iptables-restore < /etc/firewall.conf
    ip6tables-restore < /etc/firewall6.conf
  2. Даём право запуска этого скрипта
    chmod +x nano -w /etc/network/if-up.d/00-iptables
    
  3. Сохраняем в конфиг правила для IPv4
    iptables-save >/etc/firewall.conf
    
  4. Сохраняем в конфиг правила для IPv6
    ip6tables-save >/etc/firewall6.conf
    

Извиняюсь, что не могу найти ссылку на первоисточник, но решение до того классическое, что вы его найдёте в гугле по слову 00-iptables со множеством примеров и модификаций. Насколько помню, вот так загружаю конфигурацию netfilter еще со времён Debian 5.0.
Ответ написан
Пригласить эксперта
Ответы на вопрос 11
EKrava
@EKrava
в debian и ubuntu добавили пакет iptables-persistent
который использует iptables-save/iptables-restore

#service iptables-persistent
Usage: /etc/init.d/iptables-persistent {start|restart|reload|force-reload|save|flush}

после настройки правил как нужно, сделать service iptables-persistent save и при следующей загрузке они будут применены
Ответ написан
blo
@blo
инженер-программист
Ответ написан
Комментировать
printf
@printf
Ем детей.
Можно установить iptables-persistent.
Ответ написан
Комментировать
beho1der
@beho1der
Если у вас не используется нетворк менеджер для поднятия сети, то можно прописать в конец /etc/network/interfaces
post-up iptables-restore < /etc/iptables.rules
Предварительно применив правила и сохранив их в этот самый файл iptables.rules коммандой $ iptables-save > /etc/iptables.rules
Ответ написан
Комментировать
vsespb
@vsespb
Имхо гораздо лучше иметь bash/sh файл, создающий правила в автозагрузке, чем пользоваться iptables-save и iptables-restore.
Ведь в bash файле не можно заменить одни и те же адреса/порты/интерфейсы/протоколы/диапазоны в разных строчках на переменные, можно будет при желании селать какой-нибудь цикл или включить роутинг в /proc/sys/net/ipv4/ip_forward (его логиченее объединить с правилами, ведь они без него могут не иметь смысла)
Ответ написан
Так же, как в Debian. Имеется ввиду, что они одинаковы по умолчанию в этом плане.
Победить — путём создания файла с правилами и добавления его для исполнения в rc.local, или лучше — в автозагрузку, положив файл в init.d.
Ответ написан
Комментировать
@bondbig
IlyaEvseev
@IlyaEvseev
Opensource geek
Однократно в командной строке:
iptables-save > /etc/network/iptables.save

В /etc/rc.local:
F="/etc/network/iptables.save"
test -f "$F" && /sbin/iptables-restore < $F

Неэлегантно, но работоспособно.
Ответ написан
Комментировать
@lubezniy
В Alt и ASP используется запись в /etc/sysconfig/iptables; восстановление по дефолту прописано при подъёме службы network.
Ответ написан
Комментировать
@tgz
Лучше всего управление правилами iptables доверить какого-нибудь firewall builder'у. Он сам все и восстановит.
Ответ написан
Комментировать
3vi1_0n3
@3vi1_0n3
Или вот еще вариант - скрипт для автозагрузки iptables в debian'е - mnorin.com/nastrojka-avtozagruzki-pravil-iptables-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы