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。要特别注意与手工维护的包过滤规则混用的场景:两层管理并存时规则会互相覆盖,表现出「加了规则没效果、删了规则还拦着」,排查前先确认环境里只启用一层管理方式。