Я пользуюсь Debian-like системами уже более 10 лет и на протяжении всего этого времени передо мной стоял вопрос, как же правильно сохранять правила iptables во время перезагрузки. Если в Centos уже давно прямо из коробки есть обвязка для работы с набором правил, то в Debian долгое время всё ограничивалось лишь статьей на их Wiki. И, хотя мои ортодоксальные коллеги всё еще пишут iptables-restore < /etc/iptables
в /etc/rc.local
, относительно недавно эта статья всё-таки обновилась и в ней появилось упоминание о пакете iptables-persistent
, который включает в себя init-скрипт, который как раз и занимается тем, что сохраняет и восстанавливает наборы правил.
Однако у этого скрипта есть одна серьезная проблема: он не работает, если в правилах iptables используются наборы ipset — ведь эти наборы должны быть загружены раньше, чем правила. И тут три пути. Или возвращаться к варианту:
..., или исправлять непосредственно /etc/init.d/iptables-persistent
и готовиться к тому, что он будет ломаться при каждом обновлении, или написать дополнительный скрипт. Предлагаю третий вариант.
В ближайших планах собрать deb-пакет, однако пока устанавливается вручную:
# Clone repository to some directory:
git clone https://github.com/soar/ipset-persistent.git
# Copy files to system:
sudo cp --parent etc/ipset/README /
sudo cp --parent etc/default/ipset-persistent /
sudo cp --parent etc/init.d/ipset-persistent /
# Add to autostart:
sudo update-rc.d ipset-persistent defaults