iptables -X 和 iptables -F 有什么区别?

Sté*_*ane 9 iptables

在许多示例中,我看到以下 2 个连续命令:

iptables -F
iptables -X
Run Code Online (Sandbox Code Playgroud)

从手册页中,我无法弄清楚刷新和删除之间的区别。这两者有区别吗?

Zim*_*mmi 11

对于所有链,您可以 -F :

+---------------+       +---------------+
|               |       |               |
| Chain MyChain |       | Chain MyChain |
|     Rule 1    |  -F   |      is       |
|     Rule 2    |       |     empty     |
|     Rule 3    |  ==>  |               |
|               |       |               |
+---------------+       +---------------+
Run Code Online (Sandbox Code Playgroud)

对于用户定义的链(使用 iptables -N MyChain 创建的链),如果它为空,您可以 -X :

+---------------+
|               |
| Chain MyChain |         Chain MyChain
|      is       |  -X      does not exist
|     empty     |
|               |  ==>
|               |
+---------------+
Run Code Online (Sandbox Code Playgroud)

两个都

iptables -F
iptables -X
Run Code Online (Sandbox Code Playgroud)

之所以使用,是因为只有在用户定义的链为空时才能删除它。内置链无法删除,但可以刷新。


Cha*_*a0s 5

iptables -F 刷新链的规则。

http://explainshell.com/explain?cmd=iptables+-F

-F, --flush [chain] 刷新选定的链(如果没有给出表中的所有链)。这相当于将所有规则一一删除。

iptables -X 删除一个链。

http://explainshell.com/explain?cmd=iptables+-X

-X, --delete-chain [chain] 删除指定的可选用户定义链。必须没有对链的引用。如果有,您必须先删除或替换引用规则,然后才能删除链。该链必须为空,即不包含任何规则。如果没有给出参数,它将尝试删除表中的每个非内置链。