发布时间:2026-09-08 16:34 更新时间:2026-09-08 17:04 阅读量:3
在 RHEL、CentOS 7 及后续版本中,firewalld 已经取代了传统 iptables 服务,成为系统自带的防火墙管理工具。不少从老教程学过来的运维还习惯性去改 iptables 文件,其实 firewalld 提供了更符合直觉的管理模型:规则可以运行时动态增删,不必每次修改都重启守护进程,配合"区域"概念,一台主机连接不同网络时可以自动套用不同策略。理解它的设计思路,日常放行端口就会变得非常轻松。
firewalld 最核心的概念是 zone(区域),可以理解为按信任程度划分的规则集合。系统预置了多个区域:默认的 public 表示"公共网络下,不信任其他主机",适合绝大多数服务器场景;trusted 则信任区域内所有流量,一般只用于内网;internal、dmz 等各有适用场合。每个网络接口或来源地址都可以绑定到某个区域,未明确放行的入站流量默认全部丢弃——这正是防火墙该有的姿态。平时用 firewall-cmd 操作时若不带 --zone 参数,改的就是默认区域,可用 --get-default-zone 查看当前默认值。
另一个必须吃透的要点是"运行时配置"与"永久配置"的分离。不带 --permanent 的改动立即生效,但重启 firewalld 或系统后就会丢失;加上 --permanent 的改动写入磁盘,但要重载才生效。所以稳妥的套路是:先用运行时命令快速验证规则是否符合预期,确认无误后再用 --permanent 固化,最后 reload。firewall-cmd 也贴心地提供了 --runtime-to-permanent,一键把当前生效的运行时配置固化为永久配置,避免手工重复敲命令。
服务启动和基本状态管理用 systemctl 即可,例如 systemctl enable --now firewalld 设置开机自启并立即运行,firewall-cmd --state 查看运行状态。放行某个服务时,firewalld 允许直接用服务名而非裸端口,比如 Web 服务器只需放行 http 和 https 两个服务,内部会自动展开成 80/tcp 与 443/tcp:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
不是预定义服务的场景则直接操作端口,语法是"端口号/协议",注意协议不能省略。假设要给一个跑在 8080 的 Java 应用放行,或者临时开个端口调试,命令如下:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
最后一条 --list-all 会列出当前区域放行的服务、端口、转发规则等全部内容,是排查问题最常用的"看板"。临时放行可以加 --timeout=30m 这类参数,到期自动移除,适合做短时调试而不污染永久规则。
当需要"只允许特定来源 IP 访问某端口"这种精细化控制时,就要用到富规则(rich rule)。例如只允许办公网段 192.0.2.0/24 访问 22 端口的 SSH,可以这样写:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.0.2.0/24 port port=22 protocol=tcp accept'
firewall-cmd --reload
富规则的语法稍微绕一点,但表达力很强,来源、目标、服务、端口、动作都能自由组合,是代替早年 iptables 长命令的优雅方案。firewalld 同样支持端口转发和 IP 伪装:比如把本机 8080 端口的入站流量转发到内网另一台主机的 80 端口,可用 --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=10.0.0.5 实现,这对"一台公网入口 + 内网多台应用"的典型架构非常实用;启用 --add-masquerade 则让主机充当网关,内网机器可以共享公网出口。需要说明的是,这些都属于正向的网络架构能力,配置前请确认符合你的网络规划与合规要求。
最后是两个非常实在的提醒。第一,云服务器普遍是"双层防火墙":除了系统内的 firewalld,云控制台的安全组也在独立过滤流量,两层都要放行才能真正访问,反之排查不通时也要记得检查安全组。第二,修改防火墙规则前一定先把 SSH(22 端口)的放行规则确认好,并尽量用"先运行时测试、再永久固化"的节奏操作,避免一个 reload 把自己和服务器隔绝在两个世界。把 firewalld 的区域思维和永久/运行时机制吃透,再复杂的端口需求也只是几条命令的事。
| 📑 | 📅 |
|---|---|
| Linux 服务器 SSH 安全加固实战:密钥认证、禁用 Root 与防暴力破解 | 2026-09-08 |
| Redis 数据持久化实战:RDB 与 AOF 的取舍、配置与灾备方案 | 2026-09-08 |
| Linux 服务器高负载排查实战:CPU、内存与磁盘监控命令详解 | 2026-09-07 |
| MySQL 数据库备份与恢复实战:mysqldump 定时备份方案全解析 | 2026-09-07 |
| Nginx 配置 HTTPS 全攻略:从免费证书申请到安全性能调优 | 2026-09-07 |
| Nginx反向代理配置详解:多站点代理与负载均衡实战 | 2026-09-09 |
| 服务器日志分析:grep、awk 与 GoAccess 快速排障指南 | 2026-09-09 |
| 网站服务器迁移完整流程:数据同步、解析切换与验证 | 2026-09-09 |
| systemd服务管理实战:从Unit编写到开机自启与自动重启 | 2026-09-10 |
| Linux用户与权限管理实战:sudoers、SUID/SGID与最小权限 | 2026-09-10 |