Чому правила iptables зникають при перезапуску системи Debian?


48

Я додаю це правило:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. При перезапуску комп'ютерні правила видаляються. Чому?
  2. Що я можу зробити, щоб правила зберігалися?

Відповіді:


45

Немає можливості в iptables, яка зробить ваші правила постійними. Але ви можете використовувати iptables-saveі iptables-restoreдля виконання свого завдання.

Спочатку додайте правило iptable за допомогою команди, яку ви дали.

Потім збережіть правила iptables у якийсь файл, наприклад, /etc/iptables.confвикористовуючи таку команду:

$  iptables-save > /etc/iptables.conf

Додайте наступну команду, /etc/rc.localщоб перезавантажити правила при кожному перезавантаженні.

$  iptables-restore < /etc/iptables.conf

15
У Debian є iptables-persistentпакет, який це зробить.
Багамат

7
Це досить погана ідея розміщувати це, rc.localоскільки виникне розрив у відкритому вікні між запуском сервісів та застосованою політикою брандмауера. Я вважаю за краще використовувати pre-up гак для петлевого інтерфейсу в , /etc/network/interfacesщоб подолати це.
poige

@poige: Я погоджуюсь на 100%, це rc.localможе мати запланований ефект, але це неприємність у цій ситуації.
Дж. М. Бекер

3
@bahamat: Встановлення цього пакету - найкраще рішення, воно заслуговує на його власну відповідь.
Дж. М. Бекер

1
@TechZilla: Готово.
Багам

53

(Тому що пропонувалося зробити це відповіддю самостійно ...)

На установці debian iptables-persistent.

Пакет автоматично завантажується /etc/iptables/rulesдля вас під час завантаження.

Кожен раз, коли ви змінюєте свої правила, запустіть /sbin/iptables-save > /etc/iptables/rulesїх збереження. Ви також можете додати це до послідовності відключення, якщо хочете.


12
Є два різні правила правил: /etc/iptables/rules.v4і /etc/iptables/rules.v6для IPv4, і для IPv6 відповідно. Якщо ви хочете, щоб таблиця застосовувалася до обох типів з'єднань, потрібно зберегти її в обох файлах правил.
PetaspeedBeaver

11
Не додайте його до послідовності відключення! Якщо під час змін / налаштувань виконувати правила, принаймні хороша стара перезавантаження поверне речі до попереднього робочого стану.
VertigoRay

1

Після встановлення iptables-persistentвище ви можете також зберегти правила за допомогою наступної коротшої команди на Ubuntu 16.04+: sudo netfilter-persistent save

І вони також можуть бути відновлені до того, як ви востаннє зберігали їх: sudo netfilter-persistent reload

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