Linux firewalld 与 iptables 的使用取舍
发布时间 - 2026-01-28 00:00:00 点击率:次优先选firewalld:Red Hat系默认且支持热更新、多网卡zone管理;iptables适用于Debian/Ubuntu、老旧系统或需raw/mangle表、限速等精细控制场景;二者共存易冲突,应二选一并确保配置持久化。
该用 firewalld 还是 iptables?看系统默认和运维习惯
Red Hat 系列(CentOS 7+/RHEL 8+/AlmaLinux 9)默认启用 firewalld,且其服务与 iptables 服务互斥——两者同时运行会导致规则覆盖、策略失效甚至 SSH 断连。Debian/Ubuntu 默认不装 firewalld,更倾向 ufw 或直接操作 iptables。所以第一步不是选功能,而是看系统底子:已启用 firewalld 就别硬切 iptables;老旧系统(如 CentOS 6)或容器宿主机无 firewalld 时,iptables 是唯一可行选项。
需要热更新、多网卡或快速上线?选 firewalld
当你执行 firewall-cmd --add-port=8080/tcp,规则立刻生效,不影响现有 TCP 连接;而 iptables -A INPUT ... 后必须 service iptables save && systemctl restart iptables,这个 reload 过程会清空连接跟踪表,导致所有 ESTABLISHED 连接中断(比如正在传大文件的 rsync、长连接 WebSocket)。另外,firewalld 的 zone 模型天然适配多网卡场景:外网走 public 区域(只开 SSH),内网走 internal(放行 NFS、MySQL),不用手写一堆 -i eth0/-i eth1 判断逻辑。
- 适用场景:云服务器日常运维、CI/CD 自动部署防火墙、混合网络环境(如物理机+Docker bridge)
- 坑点:默认策略是 全拒,不开服务/端口就什么都连不上;
--permanent必须配--reload才落地,漏掉 reload 就白配 - 命令示例:
firewall-cmd --permanent --zone=public --add-source=192.168.10.0/24→ 只对这个网段应用 public 规则
要精细控制包头、绕过 conntrack 或写自动化脚本?回退 iptables
firewalld 底层仍调用 iptables,但它屏蔽了 raw/mangle 表、跳转链(-j REDIRECT)、限速模块(-m limit)等能力。比如你想让某 IP 的 HTTP 请求每秒最多 5 次,iptables 一行搞定:iptables -A INPUT -s 20;而 
firewalld 不支持 limit 模块,得额外套一层 rich rule(语法复杂且难调试)。
- 适用场景:NAT 网关、透明代理、DDoS 初级防护、嵌入式设备轻量部署
- 坑点:
iptables-save输出的是完整规则集,手动编辑/etc/sysconfig/iptables时缩进/空行错一个字符就会加载失败;-A和-I顺序极易搞混,导致 DROP 规则插在 ACCEPT 前面 - 关键动作:改完务必验证:
iptables -L INPUT -v -n | head -10看计数器是否增长,再ss -tlnp | grep :22确认端口监听没被封死
二者共存?可以但强烈不建议
技术上 firewalld 启动后会接管 iptables 规则链(把 INPUT/FORWARD 设为 firewalld 的自定义链),此时直接用 iptables 命令加规则,大概率被 firewalld 下次 reload 清掉。反过来,若你停了 firewalld 却忘了关它自动生成的 iptables 规则,那些残留规则还会继续生效——查 iptables -L -t filter 能看到一堆 firewalld 留下的链,但 firewall-cmd 已经管不了它们。
- 真实风险:运维交接时,有人用
firewall-cmd开了端口,有人用iptables -D删了某条规则,结果发现“明明开了 80 端口却打不开”,因为删的是另一条关联链 - 底线做法:二选一,并在
/etc/firewalld/firewalld.conf中确认FirewallBackend=iptables(默认值),避免误切到 nftables 后端引发兼容问题
真正容易被忽略的,是状态同步——firewalld 的 --permanent 配置不会自动同步到运行时,iptables 的临时规则重启即丢。别信“我配好了”,一定要 firewall-cmd --runtime-to-permanent 或 iptables-save > /etc/sysconfig/iptables 落盘,再 reboot 测试一次。
# mysql
# linux
# centos
# docker
# 防火墙
# 云服务
# 端口
# ubuntu
# websocket
# 后端
# Filter
# 堆
# public
# internal
# input
# http
# ssh
# debian
# 自动化
# ddos
# 云服务器
# 的是
# 开了
# 有人用
# 老旧
# 就会
# 好了
# 最多
# 还会
# 当你
# 设为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
html5的keygen标签为什么废弃_替代方案说明【解答】
如何在云主机快速搭建网站站点?
微信小程序 HTTPS报错整理常见问题及解决方案
如何用JavaScript实现文本编辑器_光标和选区怎么处理
如何在阿里云通过域名搭建网站?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Python正则表达式进阶教程_复杂匹配与分组替换解析
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
深入理解Android中的xmlns:tools属性
Laravel如何处理和验证JSON类型的数据库字段
Laravel如何自定义错误页面(404, 500)?(代码示例)
Android利用动画实现背景逐渐变暗
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
微信小程序 require机制详解及实例代码
js实现获取鼠标当前的位置
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
电商网站制作价格怎么算,网上拍卖流程以及规则?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何在VPS电脑上快速搭建网站?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
java获取注册ip实例
Linux网络带宽限制_tc配置实践解析【教程】
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
EditPlus中的正则表达式 实战(2)
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel怎么实现验证码(Captcha)功能
Laravel如何使用withoutEvents方法临时禁用模型事件
Swift中循环语句中的转移语句 break 和 continue
北京专业网站制作设计师招聘,北京白云观官方网站?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Laravel如何配置任务调度?(Cron Job示例)
html如何与html链接_实现多个HTML页面互相链接【互相】
如何快速搭建FTP站点实现文件共享?
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何快速重置建站主机并恢复默认配置?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
JS实现鼠标移上去显示图片或微信二维码
jquery插件bootstrapValidator表单验证详解
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何在万网自助建站平台快速创建网站?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
如何做网站制作流程,*游戏网站怎么搭建?
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何在云服务器上快速搭建个人网站?

