Was ist der Unterschied zwischen iptables -X und iptables -F?

7

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?

Stéphane
quelle

Antworten:

9

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.

Zimmi
quelle
5

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.

Cha0s
quelle
1
Ja, ich habe die Manpage gelesen. Ich möchte wissen, ob es einen Unterschied gibt. Denn das Endergebnis scheint genau das gleiche zu sein.
Stéphane
Der Unterschied entspricht dem Löschen aller Dateien in einem Verzeichnis oder des Verzeichnisses selbst.
Ptman
Eine Regel ist nicht dasselbe wie eine Kette. Edit: ptman erklärte es besser :)
Cha0s
Ja. iptables -X löscht benutzerdefinierte Ketten
Cha0s