Як я можу зробити певний набір правил iptables постійним?


42

Чи є "найкраща практика" або стандарт, щоб зробити кілька правил iptables постійними? Я маю на увазі: автоматично застосовується при перезавантаженні системи?

Я використовую VPS з Ubuntu Server 10.04 LTS (Lucid Lynx).

Дякую.

BIG EDIT: Я не хочу, щоб будь-яке правило зберігалося (як iptables-persistentпакет). Я хочу, щоб перезавантажувався лише мій власний набір ... якщо інші правила з часом додаються за допомогою iptables, їх слід відкинути ...

Відповіді:


52

Найпростіший метод - використовувати iptables-save та iptables-Resto, щоб зберегти визначені в даний час правила iptables у файл та (повторно) завантажити їх (наприклад, при перезавантаженні).

Так, наприклад, ви б бігли

sudo iptables-save | sudo tee /etc/iptables.conf

щоб зберегти свої поточні правила iptables, /etc/iptables.confа потім вставити ці рядки у /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf

3
+1 Ваша відповідь ідеально підходить до мого оригінального запитання. Це також змусило мене зрозуміти, що я насправді хочу, тому мені довелося змінити питання з "Як я можу зробити правила iptables постійними?" до "Як я можу зробити певний набір правил iptables постійними?"
Дж. Бруні

Якщо ви можете, будь ласка, трохи відредагуйте свою відповідь, щоб відобразити зміну питання ... Я з радістю прийму це! Мені потрібно користуватися iptables-saveодин раз, і перезавантажувати завжди (iptables-recovery за адресою /etc/rc.local звучить добре).
Дж. Бруні

1
Якщо ви отримуєте, permission deniedколи ви намагаєтесь використовувати, >то ця відповідь на переповнення стека буде корисною.
Девід Туїт

2
Використовуйте sudo sh -c "iptables-save > /etc/iptables.conf"замістьsudo iptables-save > /etc/iptables.conf
Раджат Гупта

31

Швидке оновлення цього питання, як ви, можливо, використовуєте 12.04 зараз, і все краще.

Зараз iptables-persistentпакет вирішує це питання. Щоб встановити,

sudo apt-get install iptables-persistent

Правила, визначені при встановленні пакета, зберігаються та використовуються на кожному наступному завантаженні. Нові завантажені правила відкидаються при перезавантаженні.

Конфігураційний файл, якщо вам потрібно змінити їх (як тільки iptables-persistentвстановлено), це /etc/iptables/rules.v4або /etc/iptables/rules.v6для ipv4 та ipv6 iptables відповідно.


Якщо ви внесете зміни /etc/iptables/rules.v4, як це застосувати [офіційно]? Наразі я роблюsudo iptables-restore < /etc/iptables/rules.v4
Бруно Броноський

24

Краще ніж /etc/rc.localдодати рядок /etc/network/interfacesпісля збереження правил iptable, як це

post-up iptables-restore < /etc/iptables.up.rules

або це те ж саме , щоб помістити файл всередині /etc/network/if-down.d/або /etc/network/if-post-down.d/або /etc/network/if-pre-up.d/або /etc/network/if-up.d/.


1
@Kreker: уточнюйте, будь ласка, чим ваш підхід кращий за виконання сценарію відновлення rc.local? чи не працює інший підхід в деяких випадках?
Раджат Гупта

2
Додавання його до мережевої конфігурації призводить до повторного завантаження після запуску команди "Перезапуск службової мережі". Це не обмежується запуском системи.
K. Darien Freeheart

4
Чому одно відновлення iptables після встановлення, коли інтерфейс не працює?
альфадогг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.