Warum verschwinden iptables-Regeln, wenn ich mein Debian-System neu starte?

48

Ich füge diese Regel hinzu:

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. Beim Neustart werden Computerregeln gelöscht. Warum?
  2. Was kann ich tun, um die Regeln beizubehalten?
Jhonathan
quelle

Antworten:

45

In iptables gibt es keine Option, die Ihre Regeln dauerhaft macht. Aber Sie können iptables-saveund verwenden iptables-restore, um Ihre Aufgabe zu erfüllen.

Fügen Sie zuerst die iptable-Regel mit dem von Ihnen angegebenen Befehl hinzu.

Speichern Sie dann die iptables-Regeln in einer Datei, beispielsweise /etc/iptables.confmit dem folgenden Befehl:

$  iptables-save > /etc/iptables.conf

Fügen Sie den folgenden Befehl hinzu /etc/rc.local, um die Regeln bei jedem Neustart neu zu laden.

$  iptables-restore < /etc/iptables.conf
pradeepchhetri
quelle
15
Unter Debian gibt es das iptables-persistentPaket, das dies erledigt.
Bahamat
7
Es ist eine ziemlich schlechte Idee, sie zu platzieren, rc.localda zwischen dem Start der Dienste und der Anwendung der Firewall-Richtlinie eine Lücke besteht. Ich lieber mit pre-up für Loopback - Schnittstelle Haken in /etc/network/interfacesdiese zu überwinden.
Poige
@poige: Ich stimme zu 100% zu, rc.localkönnte den beabsichtigten Effekt haben, aber es ist ein Trick in dieser Situation.
JM Becker
3
@ Bahamat: Die Installation dieses Pakets ist die beste Lösung. Es verdient seine eigene Antwort.
JM Becker
1
@ TechZilla: Fertig.
Bahamat
53

(Weil vorgeschlagen wurde, dies zu einer eigenen Antwort zu machen ...)

Bei der Debian-Installation iptables-persistent.

Das Paket wird /etc/iptables/rulesbeim Booten automatisch für Sie geladen .

Wenn Sie Ihre Regeln ändern, führen Sie sie aus /sbin/iptables-save > /etc/iptables/rules, um sie zu speichern. Sie können dies auch zur Sequenz zum Herunterfahren hinzufügen, wenn Sie möchten.

Bahamat
quelle
12
Es gibt zwei verschiedene Regeldateien: /etc/iptables/rules.v4und /etc/iptables/rules.v6für IPv4 bzw. IPv6. Wenn eine Tabelle auf beide Arten von Verbindungen angewendet werden soll, müssen Sie sie in beiden Regeldateien speichern.
PetaspeedBeaver
11
Fügen Sie es nicht zu Ihrer Abschaltsequenz hinzu! Wenn Sie Ihre Regeln während Änderungen / Setups verpfuschen, wird zumindest ein guter alter Neustart die Dinge wieder in den zuvor funktionierenden Zustand versetzen.
VertigoRay
1

Nach der iptables-persistentobigen Installation können Sie Regeln auch mit dem folgenden kürzeren Befehl unter Ubuntu 16.04+ speichern: sudo netfilter-persistent save

Sie können auch so wiederhergestellt werden, wie Sie sie zuletzt gespeichert haben: sudo netfilter-persistent reload

Robin Wilson
quelle