Debian 'ігнорує' /etc/network/if-pre-up.d/iptables


12

Я хочу, щоб мої правила iptables автоматично завантажувалися під час запуску. Згідно з вікі на Debian, це можна зробити, розмістивши скрипт з назвою iptables в /etc/network/if-pre-up.d/ Так я зробив, ось як це виглядає:

cat /etc/network/if-pre-up.d/iptables 
#!/bin/sh
/sbin/iptables-restore < /etc/firewall/iptables.rules
/sbin/ip6tables-restore < /etc/firewall/ip6tables.rules

Цей сценарій працює: якщо я запускаю його як root, мої правила брандмауера застосовуються Але при перезавантаженні немає правил брандмауера. Що я роблю неправильно?

На запит: / etc / network / interface (я не торкався цього файлу)

user@DebianVPS:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

Як налаштувати інтерфейси? Чи можете ви додати / etc / network / файл інтерфейсів?
байндірх

Зверніть увагу, що /etc/network/if-pre-up.d/більше не працює в Ubuntu 18.04, див. Serverfault.com/questions/914493/…
BurninLeo

Відповіді:


6

Використовуйте iptables-persistentпакет для цього завдання.

Визначте свої правила /etc/iptables/rules.4і /etc/iptables/rules.6та не забудьте активувати послугу (використовуючи update-rc.d, chkconfigабо улюблений інструмент.


Під час встановлення пакету debconf запитує, чи бажаєте ви зберегти поточні правила. Отже, якщо у вас вже визначені правила, ви можете просто встановити пакет. Якщо ви хочете змінити їх пізніше, просто dpkg-reconfigure iptables-persistent.
Брайам

10

Ця проблема може бути пов’язана з бітами дозволу вашого сценарію. Який вихід цієї команди? Чи включає він ваш файл?

run-parts --test /etc/network/if-pre-up.d

run-parts --test /etc/network/if-pre-up.d дає /etc/network/if-pre-up.d/iptables, що здається мені правильним результатом?
Чейрон

1
Ок, значить, ви, ймовірно, повинні перевірити, коли виконується ваш сценарій. Додайте перший рядок, як цей (date; set; echo) >> /tmp/iptables-cmd.log, так що ви побачите, коли він називається. Я завжди також друкую середовище, щоб перевірити наявність будь-яких аргументів, переданих там. Ви можете вирішити запустити iptables лише після того, як буде запущено останній інтерфейс eth *, замість того, щоб запускати його щоразу, коли додається інтерфейс.
eppesuig

3
Тепер, коли ви опублікували своє повідомлення, interfacesя бачу, що ви використовуєте не ifupdown, а мережевий менеджер. Ось чому ваш сценарій не називається. Перевірте цей документ: ubuntuforums.org/showthread.php?t=1084308
eppesuig

Добре, що багато що пояснює. Я думаю, зараз я просто йду з відповіддю Dawud, що, здається, працює в будь-якому випадку.
Чейрон

3
run-parts трохи прискіпливі до назви сценаріїв, а крапка в імені файлу спричинила ігнорування сценарію при запуску в моєму випадку.
alexm

0

Чому б не зробити це простим способом?

1 - створити свої правила iptables

2 - запустіть "sudo apt-get install iptables-persistent", він запитає, чи хочете ви зберегти правила та відновити їх після завантаження.

3- Ви ЗРОБАНІ


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