Ich habe dieses Tutorial befolgt , um IP-Regeln für Ubuntu 12.04 einzurichten. Beim Setup hat alles einwandfrei funktioniert - aber jetzt habe ich Änderungen an der Firewall vorgenommen, die beim Neustart nicht bestehen bleiben. Ich verstehe nicht, warum das so ist. Hier ist eine Demonstration, wie ich iptables-persistent verwende. Was mache ich falsch?
$ sudo service iptables-persistent start
* Loading iptables rules... * IPv4... * IPv6...
$ sudo iptables -L //shows a certain rule
$ iptables -D INPUT ... //command successfully drops the rule
$ sudo iptables -L //shows rule has been deleted
$ sudo service iptables-persistent restart
* Loading iptables rules... * IPv4... * IPv6... [ OK ]
$ sudo iptables -L //rule is back
iptables
iptables-persistent
bernie2436
quelle
quelle
iptables -D INPUT
Regel nicht erfüllt ist. Sindsudo
Sie sicher, dass sie tatsächlich einen Erfolg meldet? Ändert sich das Verhalten, wenn Sie es in ausführensudo
?Antworten:
iptables-persistent
funktioniert nicht so. Durch einen Neustart desiptables-persistent
"Dienstes" wird nicht der aktuelle Status der iptables erfasst und gespeichert . Es werden lediglich die Iptables-Regeln wiederhergestellt, die beim letzten Konfigurieren des Pakets gespeichert wurden.Zum Konfigurieren
iptables-persistent
müssen Sie ihn über Ihren aktuellen iptables-Regelsatz informieren.Ein Weg, dies zu erreichen, ist wie folgt:
Oder gleichermaßen bietet das
iptables-persistent
Paket Folgendes:(Sie müssen die Fragen zum Speichern der Regeln mit Ja beantworten.)
Danach werden beim nächsten
iptables-persistent
Start / Neustart die erwarteten iptables-Regelsätze geladen.quelle
Mit dem folgenden Befehl können Sie die aktuellen iptables-Regeln ganz einfach speichern:
sudo service netfilter-persistent save
Unter Verwendung des oben genannten Befehls, der zumindest in Ubuntu nach der Installation des Pakets
netfilter-persistent
(undiptables-persistent
) funktioniert , ist es nicht erforderlich, die iptables-Befehle manuell auszuführen oder das Paket neu zu konfigurieren (wie dies selbst in der oben akzeptierten Antwort vorgeschlagen wird).quelle
sudo service netfilter-persistent save
odersudo service netfilter-persistent save .
? (Punkt am Ende.)Das ist nicht was
DROP
bedeutet oder tut. Vonman iptables
:Sie haben also eine neue Regel hinzugefügt. Es kann effektiv eine beliebige Anzahl anderer Regeln ersetzen, aber diese Regeln existieren immer noch.
Wenn
iptables -L
ich so etwas überprüfe (deine Ausgabe), würde ich es trotzdem füttern,grep "string unique to this rule"
anstatt deine Augen zu benutzen. Das geht einfacher und schneller und ist weniger fehleranfällig.Wenn Sie eine Regel löschen möchten, verwenden Sie den
-D
Schalter. Die Manpage beschreibt zwei Formen davon:quelle
-D
steht für "Löschen", nicht für "TROPFEN". Der Begriff "TROPFEN" bedeutet etwas anderes als ein Sprungzieliptables
.Wie von @ steven-monday erklärt , können Sie Ihren Regelsatz selbst im richtigen Verzeichnis (nämlich :) speichern
/etc/iptables/rules.v{4,6}
.Allerdings @OpenITeX hat Recht: Aufruf der
save
Aktion istservice netfilter-persistent
besser.Ab heute (in 18,10), iptables-save wird builtin, aber
iptables-persistent
ist nicht installiert. Daher ist das von aufgerufene Plugin-Verzeichnisservice netfilter-persistent
leer, und der Dienst gibt aus, dass der Regelsatz gespeichert wurde, während dies nicht der Fall war.TLDR: Installieren
iptables-persistent
und überprüfen Sie, ob das Plugin-Verzeichnis/usr/share/netfilter-persistent/plugins.d
Plugins enthält.So habe ich das herausgefunden:
Überprüfen Sie dann das
/usr/sbin/netfilter-persistent
Skript und stellen Sie fest, dass es externe Skripte aufruft:Dann bemerkte ich, dass
/usr/share/netfilter-persistent/plugins.d
das leer war.quelle
Installieren Sie iptables-persistent:
Speichern Sie die Regeln, nachdem Sie die gewünschten Änderungen vorgenommen haben:
quelle