iptables -F 与 iptables -X
一、前言
iptables 作为 Linux 上最常用的防火墙工具,其命令行参数繁多,初学者最容易混淆的莫过于 iptables -F
和 iptables -X
。本文用最简明的语言、清晰的示例,带你彻底搞懂这两个命令的区别和使用场景。
二、一句话区分
iptables -F
:Flush —— 清空链内规则,链本身保留。iptables -X
:Delete-chain —— 删除空的、未被引用的用户自定义链。
三、原理解析
3.1 iptables -F(–flush)
- 作用:把指定链里的所有规则统统删除,链名依旧存在。
- 语法:
若省略iptables -F [CHAIN_NAME]
CHAIN_NAME
,则清空当前表(默认 filter 表)里的所有链。 - 示例:
# 清空 filter 表 INPUT 链里的所有规则 iptables -F INPUT
3.2 iptables -X(–delete-chain)
- 作用:删除用户自己创建的链(非内置链)。
- 前提:
- 链内没有任何规则;
- 链未被其他链
-j
引用。
- 语法:
若省略iptables -X [CHAIN_NAME]
CHAIN_NAME
,则尝试删除所有满足条件的用户链。 - 示例:
# 假设自定义链叫 MY_CHAIN iptables -F MY_CHAIN # 先清空规则 iptables -X MY_CHAIN # 再删除链本身
四、对比小结
维度 | iptables -F | iptables -X |
---|---|---|
中文含义 | 清空(Flush) | 删除链(Delete-chain) |
操作对象 | 链内的规则 | 整个用户自定义链 |
链是否保留 | 保留 | 不保留(链被移除) |
适用链类型 | 内置链 & 用户链皆可 | 仅用户自定义链 |
前提条件 | 无 | 链必须为空且未被引用 |