Debian „ignoruje” /etc/network/if-pre-up.d/iptables


12

Chcę, aby moje reguły iptables były automatycznie ładowane podczas uruchamiania. Według wiki na Debianie można to zrobić, umieszczając skrypt o nazwie iptables w /etc/network/if-pre-up.d/ Tak zrobiłem, tak to wygląda:

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

Ten skrypt działa: jeśli uruchomię go jako root, moje reguły zapory sieciowej zostaną zastosowane. Ale przy ponownym uruchomieniu nie ma reguł zapory. Co ja robię źle?

Na życzenie: / etc / network / interfaces (nie dotknąłem tego pliku)

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

Jak konfigurujesz swoje interfejsy? Czy możesz dodać plik / etc / network / interfaces?
bayindirh

Należy pamiętać, że /etc/network/if-pre-up.d/nie działa już w Ubuntu 18.04, patrz serverfault.com/questions/914493/…
BurninLeo

Odpowiedzi:


6

Użyj iptables-persistentpakietu do tego zadania.

Definiować reguły w /etc/iptables/rules.4a /etc/iptables/rules.6i nie zapomnij, aby aktywować usługę (z użyciem update-rc.d, chkconfigalbo ulubionym narzędziem.


Podczas instalacji pakietu debconf pyta, czy chcesz zapisać bieżące reguły. Jeśli więc masz już zdefiniowane reguły, możesz po prostu zainstalować pakiet. Jeśli chcesz je później zmienić, po prostu dpkg-reconfigure iptables-persistent.
Braiam

10

Ten problem może być związany z bitami uprawnień skryptu. Jaka jest wydajność tego polecenia? Czy zawiera twój plik?

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

run-parts --test /etc/network/if-pre-up.d daje /etc/network/if-pre-up.d/iptables, co wydaje mi się poprawnym wyjściem?
Cheiron

1
ok, więc prawdopodobnie powinieneś sprawdzić, kiedy twój skrypt jest uruchomiony. Dodaj pierwszą taką linię (date; set; echo) >> /tmp/iptables-cmd.log, aby zobaczyć, kiedy zostanie wywołana. Zawsze również drukuję środowisko, aby sprawdzić, czy przesłano tam argument. Możesz zdecydować się na uruchomienie iptables dopiero po uruchomieniu ostatniego interfejsu eth *, zamiast uruchamiać go za każdym razem, gdy dodawany jest interfejs.
eppesuig

3
Po opublikowaniu wiadomości interfaceswidzę, że nie używasz ifupdown, ale menedżera sieci. Dlatego twój skrypt nie jest wywoływany. Sprawdź ten dokument: ubuntuforums.org/showthread.php?t=1084308
eppesuig

Cóż, to wiele wyjaśnia. Myślę, że teraz wybieram odpowiedź dawud, która wydaje się działać w obie strony.
Cheiron

3
run-parts jest nieco wybredny co do nazwy skryptów, a kropka w nazwie pliku spowodowała, że ​​skrypt został zignorowany podczas uruchamiania w moim przypadku.
alexm

0

Dlaczego nie zrobić tego w prosty sposób?

1 - utwórz reguły iptables

2 - uruchom „sudo apt-get install iptables-persistent”, zapyta cię, czy chcesz zapisać reguły i przywrócić je po uruchomieniu.

3- Jesteś GOTOWANY


1
Duplikat przyjętej odpowiedzi
Cheiron
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.