CentOS 中 iptables 被“禁用”或不再使用,通常是系统默认改用 firewalld / nftables 导致的,而不是 iptables 模块被删除。下面按常见情况解释。
结果:
iptables -L
可能看到规则为空,或提示:
iptables: command not found
✅ 这是设计行为,不是故障
在 CentOS 8 / Stream 中:
iptables 命令是 nftables 的兼容前端iptables -L
# 可能看不到任何规则
| 原因 | 说明 |
|---|---|
| firewalld 启用 | 接管了 netfilter |
| nftables 替代 | iptables 只是兼容层 |
| 服务未启动 | iptables-service 未安装 |
| 命令不存在 | 只装了最小化系统 |
| 规则被清空 | firewalld 重启后生效 |
systemctl status firewalld
systemctl status nftables
iptables -V
输出类似:
iptables v1.8.4 (nf_tables)
说明是 nftables 后端
systemctl stop firewalld
systemctl disable firewalld
yum install -y iptables-services
systemctl enable iptables
systemctl start iptables
然后:
iptables -L -n
官方已不推荐继续使用 iptables
如果一定要用:
dnf install iptables-services
systemctl disable firewalld
systemctl enable iptables
⚠️ 但 可能与 nftables 冲突
| 系统 | 建议 |
|---|---|
| CentOS 7 | 使用 firewalld |
| CentOS 8 / Stream | 使用 firewalld 或 nftables |
| 老脚本 | 逐步迁移到 firewalld / nftables |
CentOS 中 iptables 并不是被“禁用”,而是被 firewalld / nftables 取代,直接操作 iptables 已不再推荐。
如果你愿意,可以告诉我:
我可以帮你给出等价且推荐的 firewalld / nftables 配置方案。