news 2025/12/28 7:09:46

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 11:11:49

40、Samba使用指南:额外资源、守护进程及客户端程序详解

Samba使用指南:额外资源、守护进程及客户端程序详解 在使用Samba的过程中,我们可能会遇到各种问题,也需要不断获取最新的信息和帮助。下面将详细介绍Samba的额外资源、守护进程以及客户端程序等方面的内容。 1. 额外资源 在使用Samba时,我们可以通过多种在线资源获取新闻…

作者头像 李华
网站建设 2025/12/26 22:18:03

械字号膏药代加工优选伙伴:天津市晨洁华美科技发展有限公司

大健康产业规范化发展进程中,械字号膏药凭借合规性强、消费者接受度高的特点,成为不少健康品牌、医药企业布局的重要方向。而械字号膏药代加工服务,也为这类企业降低研发与生产门槛、快速切入市场提供了便捷路径。在筛选合作厂家时&#xff0…

作者头像 李华
网站建设 2025/12/16 11:10:54

7、Unix系统上Samba安装与配置全攻略

Unix系统上Samba安装与配置全攻略 1. 基本Samba配置文件 在启动Samba之前,需要为其创建一个配置文件。Samba配置的关键在于其配置文件 smb.conf ,该文件可简单可复杂。为了测试服务器软件,可使用以下文件,在所选文本编辑器中创建,命名为 smb.conf ,并放置在 /usr/…

作者头像 李华
网站建设 2025/12/16 11:10:36

Dify平台支持Prompt工程的调试技巧与最佳实践

Dify平台支持Prompt工程的调试技巧与最佳实践 在企业加速拥抱生成式AI的今天,如何高效构建稳定、可控且可维护的AI应用,已成为技术团队的核心挑战。尤其是在处理复杂任务如智能客服、知识问答或自动化流程时,仅靠调用大模型API远远不够——提…

作者头像 李华
网站建设 2025/12/16 11:10:20

第七章:Makefile多目录项目 - 组织大型项目结构

第七章:Makefile多目录项目 - 组织大型项目结构 7.1 为什么需要多目录? 小项目 vs 大项目 小项目(单目录) 大项目(多目录) ├── main.c ├── src/ ├── utils.c │…

作者头像 李华