首页/系统/信创系统运维速查/firewalld 基础与区域概念
安全加固65 条

firewalld 基础与区域概念

firewalld 是 RHEL 系与信创发行版默认的动态防火墙管理工具,按 zone(区域)组织规则,支持运行时与永久两套配置;systemd 管服务进程,firewall-cmd 管规则。

信创系统运维速查系统更新于 2026-10-13

firewalld 与区域概念

firewalld 是 RHEL 系与信创发行版默认的防火墙管理工具,它按「区域」组织规则:每个网络接口或来源网段归入某个区域,区域里定义放行哪些服务与端口,规则集随接口归属自动生效。它的另一个特点是有运行时与永久两套配置——运行时改动立即生效但重启丢失,永久配置写入文件但需要重新加载才生效,两套并存导致「明明加了规则却不生效」是最高频的问题。麒麟 V10、UOS 服务器版、openEuler 都默认提供它。

基本信息

服务管理用 systemd 启用并启动防火墙服务
状态查看查询运行状态与当前区域规则
常用区域public、trusted、home、work、drop、block
配置目录/etc/firewalld/ 下的区域与服务定义
配置层次运行时配置随即时生效,永久配置需重新加载
排查要点环境中只保留一层防火墙管理

典型使用场景

  • 交付基线:确认防火墙在运行,并只放行必要端口
  • 上线新服务:按服务名或端口放行,同时写入永久配置
  • 限定来源:只允许管理网段访问管理端口,其余直接丢弃
  • 快速排障:临时放行某个端口验证是否为防火墙拦截
  • 区域划分:把面向公网的接口与内网接口分属不同区域
  • 规则审计:导出当前生效规则,核对是否存在过宽放行

基础操作

基础操作
systemctl enable --now firewalld        # 启用并启动防火墙服务
firewall-cmd --state                    # 输出运行中即在工作
firewall-cmd --get-default-zone         # 查看默认区域
firewall-cmd --get-active-zones         # 查看生效中的区域与接口归属
firewall-cmd --list-all                 # 查看当前区域完整规则
firewall-cmd --permanent --add-service=http   # 永久放行某个服务
firewall-cmd --permanent --add-port=8080/tcp  # 永久放行指定端口
firewall-cmd --reload                   # 重新加载,永久配置才开始生效

常用操作与语义

操作作用生效方式
--list-all查看当前区域规则即时反映运行时状态
--add-service按服务名放行不确定端口时优先用它
--add-port按端口与协议放行适合自研服务
--add-source按来源网段限定常用于管理口收紧
--permanent写入永久配置必须重新加载才生效
--reload重新加载配置会短暂影响已建立连接
--runtime-to-permanent运行时规则转永久调试完成后固化时使用
麒麟 V10、UOS 服务器版与 openEuler 都默认提供 firewalld。要特别注意与手工维护的包过滤规则混用的场景:两层管理并存时规则会互相覆盖,表现出「加了规则没效果、删了规则还拦着」,排查前先确认环境里只启用一层管理方式。

易错点

  • 服务没在运行就执行管理命令,命令直接报错退出,却去怀疑规则写法有问题
  • 只加永久配置不重新加载,规则看着加上了实际没生效,浪费大量排查时间
  • 放行范围写成全网段又长期不清理,暴露面远超业务需要
  • 与手工维护的包过滤规则并存,两层规则互相覆盖,问题现象不可复现

数据来源与参考

  • Red Hat 官方文档 firewalld 章节
  • man 1 firewall-cmd
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌