运行 firewall-cmd --zone=区域名 --list-all 可查看指定区域当前生效的完整配置,包括 interfaces、ports、services、masquerade 和 icmp-block-inversion 等;需确保区域存在且已激活,否则输出为空或报错。

直接运行 firewall-cmd --zone=区域名 --list-all 就能查看指定区域的完整配置明细,包括端口、服务、接口绑定、ICMP 设置等关键信息。
确认目标区域是否已激活或存在
firewalld 只对已启用(绑定了接口或源地址)或设为默认的 zone 才会返回有效配置。若命令输出为空或提示“no such zone”,先检查:
- 用
firewall-cmd --get-zones确认该区域名拼写正确(如public、internal、dmz) - 用
firewall-cmd --get-active-zones查看哪些 zone 当前正在使用 - 若只是想查预定义策略而非运行时配置,该区域未被激活也无妨,但
--list-all仍需它存在且名称准确
区分运行时与永久配置
默认命令查的是当前生效的运行时规则。要对比持久化设置,加 --permanent 参数:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
firewall-cmd --zone=public --list-all→ 查 public 区域当前实际生效的规则 -
firewall-cmd --permanent --zone=public --list-all→ 查 public 区域重启后仍保留的规则 - 两者内容可能不一致:比如刚执行
--add-port但没加--permanent,永久配置里就不会出现该端口
输出内容解读要点
执行成功后,输出结构清晰,重点关注以下几项:
-
interfaces: 显示绑定到该 zone 的网卡(如
eth0),这是判断规则是否应用到实际网络的关键 -
ports: 列出显式开放的端口/协议组合,例如
8080/tcp、53/udp -
services: 显示启用的服务名(如
ssh、http),背后对应一组预定义端口和协议 -
masquerade: 若为
yes,表示启用了地址伪装(常用于 NAT 网关场景) -
icmp-block-inversion: 若为
no,说明默认放行 ICMP;若为yes,则只放行明确允许的 ICMP 类型
快速定位常用区域配置
多数系统默认使用 public 区域,但生产环境常需检查其他 zone:
- 查内网管理区:
firewall-cmd --zone=internal --list-all - 查对外服务区:
firewall-cmd --zone=dmz --list-all - 查高信任局域网:
firewall-cmd --zone=home --list-all - 查所有活跃 zone 的配置概览:
firewall-cmd --get-active-zones后逐个执行--list-all

















