Debian 'ignoriert' /etc/network/if-pre-up.d/iptables

12

Ich möchte, dass meine iptables-Regeln beim Start automatisch geladen werden. Laut dem Wiki auf Debian kann dies durch Platzieren eines Skripts mit dem Namen iptables in /etc/network/if-pre-up.d/ geschehen. Also habe ich Folgendes getan:

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

Dieses Skript funktioniert: Wenn ich es als Root ausführe, werden meine Firewall-Regeln angewendet. Beim Neustart gibt es jedoch keine Firewall-Regeln. Was mache ich falsch?

Auf Anfrage: die / etc / network / interfaces (ich habe diese Datei nicht berührt)

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
Cheiron
quelle
Wie konfigurieren Sie Ihre Schnittstellen? Können Sie die Datei / etc / network / interfaces hinzufügen?
Bayindirh
Bitte beachten Sie, dass /etc/network/if-pre-up.d/dies in Ubuntu 18.04 nicht mehr funktioniert, siehe serverfault.com/questions/914493/…
BurninLeo

Antworten:

6

Verwenden Sie das iptables-persistentPaket für diese Aufgabe.

Definieren Sie Ihre Regeln /etc/iptables/rules.4und /etc/iptables/rules.6und vergessen Sie nicht , den Dienst zu aktivieren (mit update-rc.d, chkconfigoder Sie Lieblingswerkzeug.

dawud
quelle
Bei der Installation des Pakets werden Sie von debconf gefragt, ob Sie die aktuellen Regeln speichern möchten. Wenn Sie die Regeln bereits definiert haben, können Sie das Paket einfach installieren. Wenn Sie sie später ändern möchten, einfach dpkg-reconfigure iptables-persistent.
Braiam
10

Dieses Problem hängt möglicherweise mit den Berechtigungsbits Ihres Skripts zusammen. Was ist die Ausgabe dieses Befehls? Enthält es Ihre Datei?

run-parts --test /etc/network/if-pre-up.d
eppesuig
quelle
run-parts --test /etc/network/if-pre-up.d gibt /etc/network/if-pre-up.d/iptables an, was scheint mir die richtige Ausgabe zu sein?
Cheiron
1
ok, also sollten Sie wahrscheinlich überprüfen, wann Ihr Skript ausgeführt wird. Fügen Sie eine erste Zeile wie diese hinzu (date; set; echo) >> /tmp/iptables-cmd.log, damit Sie sehen, wann sie aufgerufen wird. Ich drucke immer auch die Umgebung aus, um nach Argumenten zu suchen, die dort übergeben wurden. Sie können Ihre iptables erst ausführen, nachdem die letzte eth * -Schnittstelle aktiv ist, anstatt sie jedes Mal auszuführen, wenn eine Schnittstelle hinzugefügt wird.
Eppesuig
3
interfacesNachdem Sie Ihre gepostet haben, sehe ich, dass Sie nicht ifupdown, sondern den Netzwerkmanager verwenden. Aus diesem Grund wird Ihr Skript nicht aufgerufen. Bitte überprüfen Sie dieses Dokument: ubuntuforums.org/showthread.php?t=1084308
eppesuig
Nun, das erklärt viel. Ich denke jetzt gehe ich nur mit der Antwort von dawud, das scheint so oder so zu funktionieren.
Cheiron
3
run-parts ist etwas wählerisch in Bezug auf den Namen von Skripten, und ein Punkt im Dateinamen hat dazu geführt, dass das Skript in meinem Fall beim Start ignoriert wurde.
Alexm
0

Warum nicht einfach?

1 - Erstellen Sie Ihre iptables-Regeln

2 - Führen Sie "sudo apt-get install iptables-persistent" aus. Sie werden gefragt, ob Sie die Regeln speichern und nach dem Start wiederherstellen möchten.

3- Sie sind fertig

Alex
quelle
1
Duplikat der akzeptierten Antwort
Cheiron