news 2026/9/22 5:33:01

Linux 防火墙管理工具 firewall-cmd 完全教程!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 防火墙管理工具 firewall-cmd 完全教程!

戳下方名片,关注并星标

回复“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) 的抽象概念,简化了防火墙配置流程,同时支持实时生效和持久化规则。

核心特性

动态管理

  • 无需重启防火墙即可应用规则(部分操作需重载配置)。

  • 支持运行时(临时)和永久(重启后生效)两种规则模式。

基于区域的策略

  • 预定义区域(如publictrusteddmz),每个区域有独立规则集。

  • 默认区域为public,适用于不可信网络环境。

服务抽象

  • 内置常见服务(如sshhttpmysql),自动关联端口和协议。

  • 支持自定义服务定义。

富规则(Rich Rules)

  • 允许基于源/目标地址、端口、协议等精细控制流量。

  • 支持日志记录、限速、端口转发等高级功能。

IPv4/IPv6 双栈支持

  • 统一管理两种协议的规则。

与 iptables 的关系

底层依赖firewalld本质是iptables/nftables的前端封装,最终规则会转换为底层规则。

优势对比

特性firewall-cmdiptables

配置方式

声明式(区域/服务)

过程式(逐条规则)

动态生效

支持(无需重启)

需手动刷新或重启

复杂度

较低(适合日常使用)

较高(需熟悉语法)

适用场景

服务器基础防护、快速配置

高级网络策略、性能调优

操作示例

服务状态管理
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-rules
IP伪装(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:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。点在看支持我们吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 12:19:36

上海、北京、深圳跻身全球GDP前十城市;奥动新能源向港交所递交上市申请 | 美通社一周热点简体中文稿

美通社每周发布数百上千篇中文企业资讯,想看完所有稿件可能很困难。以下是我们对过去一周不容错过的主要企业稿件进行的归纳,帮助记者和读者们及时了解一周发布的热门企业资讯。纽约、伦敦和新加坡位列全球前三大金融中心纽约大学阿布扎比分校斯特恩商学…

作者头像 李华
网站建设 2026/9/21 6:02:23

前端工程化实践:打包工具的选择与思考

从静态页面到模块化开发,前端工程化经历了怎样的演进?Webpack、Vite、Rspack 这些打包工具各自解决了什么问题,在实际项目中又该如何选择?一、前端工程化的出现与发展前端工程化的发展经历了几个重要阶段。在 1990 年代到 2000 年…

作者头像 李华
网站建设 2026/9/20 16:50:04

Flutter跨平台打包实战:从配置冲突到一键部署的完整解决方案

Flutter跨平台打包实战:从配置冲突到一键部署的完整解决方案 【免费下载链接】gsy_github_app_flutter Flutter 超完整的开源项目,功能丰富,适合学习和日常使用。GSYGithubApp系列的优势:我们目前已经拥有Flutter、Weex、ReactNat…

作者头像 李华
网站建设 2026/9/21 12:30:08

LangChain表达式语言(LCEL)如何扩展Anything-LLM功能?

LCEL 如何让 Anything-LLM 从“工具”进化为“平台”? 在企业知识管理的日常中,一个常见的痛点是:员工反复询问同样的制度问题——“年假怎么算?”、“报销流程是什么?”——而HR却要一遍遍复制粘贴文档。更糟的是&…

作者头像 李华
网站建设 2026/9/21 10:55:30

33、Unix系统下SMB/CIFS文件共享访问指南

Unix系统下SMB/CIFS文件共享访问指南 1. SMB/CIFS的跨平台应用 SMB/CIFS协议不仅在微软Windows系统中广泛使用,还支持多种其他操作系统,包括Linux、Mac OS X等。通过在不同系统上提供SMB/CIFS支持,可以实现局域网的标准化,方便用户使用跨平台的办公软件,如OpenOffice.or…

作者头像 李华
网站建设 2026/9/21 19:24:44

GESP认证C++编程真题解析 | B3863 [GESP202309 一级] 买文具

​欢迎大家订阅我的专栏:算法题解:C与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选…

作者头像 李华