戳下方名片,关注并星标!
回复“1024”获取2TB学习资源!
👉体系化学习:运维工程师打怪升级进阶之路 4.0
—特色专栏—
MySQL/PostgreSQL/MongoDB
ElasticSearch/Hadoop/Redis
Kubernetes/Docker/DevOps
Kafka/RabbitMQ/Zookeeper
监控平台/应用与服务/集群管理
Nginx/Git/Tools/OpenStack
大家好,我是民工哥!
firewall-cmd 是 Linux 系统中 firewalld 防火墙管理工具的核心命令行接口,用于动态管理网络流量规则,适用于 RHEL、CentOS、Fedora 等基于 systemd 的发行版。它通过 区域(Zones) 和 服务(Services) 的抽象概念,简化了防火墙配置流程,同时支持实时生效和持久化规则。
核心特性
动态管理
无需重启防火墙即可应用规则(部分操作需重载配置)。
支持运行时(临时)和永久(重启后生效)两种规则模式。
基于区域的策略
预定义区域(如
public、trusted、dmz),每个区域有独立规则集。默认区域为
public,适用于不可信网络环境。
服务抽象
内置常见服务(如
ssh、http、mysql),自动关联端口和协议。支持自定义服务定义。
富规则(Rich Rules)
允许基于源/目标地址、端口、协议等精细控制流量。
支持日志记录、限速、端口转发等高级功能。
IPv4/IPv6 双栈支持
统一管理两种协议的规则。
与 iptables 的关系
底层依赖:firewalld本质是iptables/nftables的前端封装,最终规则会转换为底层规则。
优势对比:
| 特性 | firewall-cmd | iptables |
|---|---|---|
配置方式 | 声明式(区域/服务) | 过程式(逐条规则) |
动态生效 | 支持(无需重启) | 需手动刷新或重启 |
复杂度 | 较低(适合日常使用) | 较高(需熟悉语法) |
适用场景 | 服务器基础防护、快速配置 | 高级网络策略、性能调优 |
操作示例
服务状态管理
systemctl status firewalld # 查看状态 systemctl start firewalld # 启动 systemctl enable firewalld # 开机自启 systemctl stop firewalld # 停止 systemctl restart firewalld # 重启查看默认区域
firewall-cmd --get-default-zone # 默认区域(如public) firewall-cmd --get-active-zones # 查看当前生效区域切换区域
firewall-cmd --set-default-zone=home # 修改默认区域(需重启生效)规则管理
服务管理
开放预定义服务(如HTTP、SSH):
firewall-cmd --add-service=http # 临时开放(重启失效) firewall-cmd --add-service=http --permanent # 永久开放 firewall-cmd --reload # 重载配置使永久规则生效 firewall-cmd --list-services # 查看已开放服务自定义服务(需指定端口/协议):
firewall-cmd --add-service=myapp --permanent \ --set-description="My Custom App" \ --set-short="MyApp" \ --add-port=8080/tcp端口管理
开放端口
firewall-cmd --add-port=8080/tcp # 临时开放 firewall-cmd --add-port=8080/tcp --permanent # 永久开放 firewall-cmd --remove-port=8080/tcp # 移除端口查看开放端口
firewall-cmd --list-ports源地址控制
允许特定IP访问
firewall-cmd --add-source=192.168.1.100/32 --zone=public --permanent firewall-cmd --reload查看源地址规则
firewall-cmd --list-sources高级配置
富规则(Rich Rules)
拒绝特定IP访问SSH
firewall-cmd --add-rich-rule=' rule family="ipv4" source address="192.168.1.200" service name="ssh" reject ' --permanent firewall-cmd --reload允许特定端口范围
firewall-cmd --add-rich-rule=' rule family="ipv4" port port="5000-6000" protocol="tcp" accept查看富规则
firewall-cmd --list-rich-rulesIP伪装(NAT)
启用IP转发(需内核支持):
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p配置端口转发(将外部80端口转发到内部8080):
firewall-cmd --add-masquerade --permanent # 启用伪装 firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080 --permanent区域隔离
将网卡绑定到特定区域
firewall-cmd --zone=internal --add-interface=eth1 --permanent常用场景示例
开放MySQL服务(端口3306)
firewall-cmd --add-service=mysql --permanent firewall-cmd --reload仅允许特定IP访问SSH
firewall-cmd --add-service=ssh --permanent firewall-cmd --add-rich-rule=' rule family="ipv4" source address="192.168.1.100" service name="ssh" accept ' --permanent firewall-cmd --add-rich-rule=' rule family="ipv4" source not address="192.168.1.100" service name="ssh" reject ' --permanent firewall-cmd --reload临时开放所有端口(测试用)
firewall-cmd --set-default-zone=trusted # 切换到信任区域(慎用!)端口转发(将外部80转发到内部8080)
firewall-cmd --add-masquerade --permanent # 启用IP伪装 firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080 --permanent firewall-cmd --reload注意事项
永久规则需重载:添加--permanent后必须执行firewall-cmd --reload生效。
规则优先级:富规则 > 服务 > 端口,冲突时优先匹配富规则。
日志查看:
journalctl -u firewalld -f # 实时日志 tail -f /var/log/firewalld # 日志文件备份规则:
firewall-cmd --list-all > firewall-backup.txt总结
firewall-cmd是 Linux 动态防火墙管理工具,通过区域、服务、端口、富规则四层逻辑实现灵活配置。
掌握基础操作后,可结合富规则和NAT实现复杂场景,建议结合iptables命令(firewall-cmd --direct)进行底层调试。
都看到这里了,觉得不错的话,随手点个赞👍、推荐、转发分享三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
公众号读者专属技术群
构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加微信好友,无备注一律者不通过)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。
扫码加我好友,拉你进群
Arch Linux 2025.12.01 正式发布!内核、安装器、系统工具全面升级,更稳定、更灵活、更高效了
Rust 实习结束,正式转正!Linux 内核生态要变天?
Linux 终端神器 Tmux 3.6 正式发布!原生滚动条、主题、复制模式全面升级,更高效、更直观、易用了
开源虚拟化神器又一里程碑版本QEMU 10.1正式发布!性能飙升、更安全、更稳定了
MinIO 突然官宣不干了!无惧也,高性能、更轻量、更稳定、更适合现代化架构的开源替代利器来了
传统工具ELK、Loki已过时!高性能、更轻量、更适合现代运维架构的替代利器来了
FreeBSD 15.0 正式发布!安全、性能、云原生适配与用户体验全面升级,更强大、更可靠了
AlmaLinux 10.1 正式发布!原生 Btrfs 支持、工具链、容器与虚拟化全面升级,更安全、更稳定、更灵活了
Oracle Linux 9.7 正式发布!内核、虚拟化、工具链全面升级,性能飙升、更安全、更稳定了
Rocky Linux 10.1 来了!软重启,后量子加密,工具链、容器与存储全线升级,打造更安全、稳定的企业级 Linux
再见 Ingress!Kubernetes 又一新流量管理利器来了!
2026 IEEE Fellow 名单出炉,清华国内第一
Let’s Encrypt 突然宣布将其证书有效期从 90 天缩短到 45 天
清华大学宣布成立具身智能与机器人研究院!
Linux Kernel 6.18正式发布!全新一代性能更强、更安全、更稳定的操作系统来了
传统虚拟化工具VirtualBox、Wine已过时!更灵活、易用的开源替代利器来了
Docker ps/logs命令已过时!它才是排查容器问题的必杀器!更快、更精准、更灵活
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!