In vielen Beispielen sehe ich die folgenden 2 aufeinander folgenden Befehle:
iptables -F
iptables -X
Auf der Manpage kann ich den Unterschied zwischen Löschen und Löschen nicht herausfinden. Gibt es einen Unterschied zwischen diesen beiden?
Für alle Ketten können Sie -F:
+---------------+ +---------------+
| | | |
| Chain MyChain | | Chain MyChain |
| Rule 1 | -F | is |
| Rule 2 | | empty |
| Rule 3 | ==> | |
| | | |
+---------------+ +---------------+
Nur für benutzerdefinierte Ketten (mit iptables -N MyChain erstellte Kette) können Sie -X verwenden, wenn sie leer ist:
+---------------+
| |
| Chain MyChain | Chain MyChain
| is | -X does not exist
| empty |
| | ==>
| |
+---------------+
Beide
iptables -F
iptables -X
werden verwendet, weil man eine benutzerdefinierte Kette nur löschen kann, wenn sie leer ist. Eingebaute Ketten können nicht gelöscht, sondern gespült werden.
iptables -F
spült die Regeln einer Kette.
http://explainshell.com/explain?cmd=iptables+-F
-F, --flush [chain] Spült die ausgewählte Kette (alle Ketten in der Tabelle, falls keine angegeben ist). Dies entspricht dem Löschen aller Regeln nacheinander.
iptables -X
löscht eine Kette.
http://explainshell.com/explain?cmd=iptables+-X
-X, --delete-chain [chain] Löscht die angegebene optionale benutzerdefinierte Kette. Es dürfen keine Verweise auf die Kette vorhanden sein. Wenn dies der Fall ist, müssen Sie die verweisenden Regeln löschen oder ersetzen, bevor die Kette gelöscht werden kann. Die Kette muss leer sein, dh keine Regeln enthalten. Wenn kein Argument angegeben wird, wird versucht, jede nicht integrierte Kette in der Tabelle zu löschen.