当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/82689.html

相关文章:

  • 上海、北京、深圳跻身全球GDP前十城市;奥动新能源向港交所递交上市申请 | 美通社一周热点简体中文稿
  • 前端工程化实践:打包工具的选择与思考
  • Flutter跨平台打包实战:从配置冲突到一键部署的完整解决方案
  • LangChain表达式语言(LCEL)如何扩展Anything-LLM功能?
  • 33、Unix系统下SMB/CIFS文件共享访问指南
  • GESP认证C++编程真题解析 | B3863 [GESP202309 一级] 买文具
  • 9 个专科生开题报告工具,AI降重查重率推荐
  • 39、Samba故障排除指南
  • 【软考架构】滑动窗口限流算法的原理是什么?
  • FlutterToast跨平台通知组件终极指南:从零到专家级定制
  • CasperJS API测试终极指南:构建高效的数据一致性验证体系
  • uniapp+springboot基于微信小程序的学生宿舍报修系统的设计与实现_a1o96z7c
  • 知识产权企业选择CRM系统时,最应关注的核心功能是什么?
  • HyperDX ClickHouse物化视图:构建实时数据分析的终极加速引擎
  • Windows Server 2022官方镜像完整获取指南:从下载到验证的全流程
  • AndroidGen-GLM-4-9B:开启移动智能体新时代的革命性突破
  • 微服务架构下的分布式数据加密:SQLCipher实战指南
  • 国产开源,含20+视频AI算法模型,兼容GB28181、ONVIF、RTMP协议、私有化部署,10天搞定IoT物联网项目交付
  • 16、搭建 Asterisk VoIP 服务器全攻略
  • Apache Mesos集群运维实战:故障恢复与版本管理完全指南
  • 探索式测试的Session管理法:提升软件测试效率与可追溯性
  • 购物省钱参考:爱创猫电商优惠券领取方式
  • 12、Red Hat Enterprise Linux硬件分析与管理指南
  • 35、Linux 内核监控与调试:NUMA、AltSysRq 及 Kdump 全解析
  • DataEase开源BI工具完整指南:从零开始的数据可视化之旅
  • Gutenberg性能优化终极指南:零成本加速WordPress编辑器
  • ag-ui与LangGraph集成终极指南:构建企业级AI工作流的完整教程
  • 2026毕设ssm+vue基于架构的校园二手物品交易论文+程序
  • 手机强制开启USB调试模式终极指南:轻松解决设备连接难题
  • DataEase开源BI工具完整安装配置指南:从零开始快速部署