![iptables -X 和 iptables -F 有什么区别?](https://linux22.com/image/648961/iptables%20-X%20%E5%92%8C%20iptables%20-F%20%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
在许多示例中,我看到以下两个连续的命令:
iptables -F
iptables -X
从手册页中,我无法弄清楚刷新和删除之间的区别。这两者之间有区别吗?
答案1
对于所有链,你可以使用 -F :
+---------------+ +---------------+
| | | |
| Chain MyChain | | Chain MyChain |
| Rule 1 | -F | is |
| Rule 2 | | empty |
| Rule 3 | ==> | |
| | | |
+---------------+ +---------------+
为了仅限用户定义链(使用 iptables -N MyChain 创建的链)如果它为空,你可以使用 -X :
+---------------+
| |
| Chain MyChain | Chain MyChain
| is | -X does not exist
| empty |
| | ==>
| |
+---------------+
两个都
iptables -F
iptables -X
之所以使用,是因为只有当用户定义链为空时才可以删除它。内置链无法删除,但可以刷新。
答案2
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] 删除指定的可选用户定义链。必须没有对该链的引用。如果有,则必须先删除或替换引用规则,然后才能删除该链。该链必须为空,即不包含任何规则。如果没有给出参数,它将尝试删除表中的每个非内置链。