🔥 什么是 firewalld?

  firewalld 是一个动态管理防火墙的守护进程(daemon),它提供了一个 D-Bus 接口来管理系统或用户的防火墙规则。与传统的静态 iptables 不同,firewalld 支持:

  • 区域(Zones)
  • 服务(Services)
  • 端口/协议控制
  • NAT、IP伪装、端口转发等高级功能

        适用于 RHEL/CentOS/Fedora/SUSE/openSUSE 等主流 Linux 发行版。


🧱 firewalld 的核心概念

1. 区域(Zone)

  firewalld 将网络连接划分为不同的“区域”,每个区域有不同的信任级别和默认策略。

Zone Name

Description

drop

最低信任度,丢弃所有未明确允许的包

block

拒绝所有入站连接(带 ICMP 拒绝响应)

public

公共网络,默认配置,用于外部环境

external

外部网络,启用了 NAT

dmz

隔离区,只允许特定服务访问

work

工作网络,信任部分内部设备

home

家庭网络,信任较多内部设备

internal

内部网络,高度信任

trusted

最高信任,允许所有流量

        可以通过命令查看当前默认区域:

sudo firewall-cmd --get-default-zone

2. 服务(Service)

        预定义的服务是一组端口和协议的组合,例如:

  • ssh
  • http
  • https
  • ftp
  • samba
  • 自定义服务(可添加)

        查看所有支持的服务:

sudo firewall-cmd --get-services

3. 端口(Port)

        可以按协议(TCP/UDP)开放指定端口,例如:

sudo firewall-cmd --add-port=8080/tcp

4. 运行时 vs 永久设置

  • 运行时设置:重启后失效。
  • 永久设置:加上 --permanent 参数保存,重启后依然生效。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

🛠️ 常用命令详解

一,基本命令

  firewalld 是一个动态管理 Linux 系统防火墙的工具,它使用 firewall-cmd 命令进行配置。以下是一些常用的 firewall-cmd 命令及其说明:

1. 启动 firewalld 服务

sudo systemctl start firewalld

2. 停止 firewalld 服务

sudo systemctl stop firewalld

3. 重启 firewalld 服务

sudo systemctl restart firewalld

4. 启用 firewalld 服务开机自启动

sudo systemctl enable firewalld

5. 禁用 firewalld 服务开机自启动

sudo systemctl disable firewalld

6. 查看 firewalld 服务状态

sudo systemctl status firewalld

二,基本防火墙操作

1. 查看防火墙状态

sudo firewall-cmd --state

2. 查看当前区域信息

sudo firewall-cmd --get-active-zones

3. 查看接口所属区域

sudo firewall-cmd --get-zone-of-interface=interface_name

示例:查看 eth0 接口所属区域

sudo firewall-cmd --get-zone-of-interface=eth0

4. 列出所有区域

sudo firewall-cmd --list-all-zones

三,配置防火墙规则

1. 添加服务到区域(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --add-service=service_name

示例:在 public 区域添加 HTTP 服务

sudo firewall-cmd --zone=public --add-service=http

2. 添加服务到区域(持久化)

sudo firewall-cmd --zone=zone_name --add-service=service_name --permanent

示例:在 public 区域持久化添加 HTTP 服务

sudo firewall-cmd --zone=public --add-service=http --permanent

3. 移除服务(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --remove-service=service_name

示例:在 public 区域移除 HTTP 服务

sudo firewall-cmd --zone=public --remove-service=http

4. 移除服务(持久化)

sudo firewall-cmd --zone=zone_name --remove-service=service_name --permanent

示例:在 public 区域持久化移除 HTTP 服务

sudo firewall-cmd --zone=public --remove-service=http --permanent

四,端口管理

1. 添加端口(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --add-port=port/protocol

示例:在 public 区域添加 TCP 端口 8080

sudo firewall-cmd --zone=public --add-port=8080/tcp

2. 添加端口(持久化)

sudo firewall-cmd --zone=zone_name --add-port=port/protocol --permanent

示例:在 public 区域持久化添加 TCP 端口 8080

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

3. 移除端口(立即生效,不持久化)

sudo firewall-cmd --zone=zone_name --remove-port=port/protocol

示例:在 public 区域移除 TCP 端口 8080

sudo firewall-cmd --zone=public --remove-port=8080/tcp

4. 移除端口(持久化)

sudo firewall-cmd --zone=zone_name --remove-port=port/protocol --permanent

示例:在 public 区域持久化移除 TCP 端口 8080

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

五,其他常用命令

1. 重新加载防火墙配置

sudo firewall-cmd --reload

2. 列出当前区域所有规则

sudo firewall-cmd --zone=zone_name --list-all

示例:列出 public 区域的所有规则

sudo firewall-cmd --zone=public --list-all

3. 查看所有可用服务

sudo firewall-cmd --get-services

4. 添加 IP 地址到信任区域

sudo firewall-cmd --zone=trusted --add-source=ip_address

示例:信任 192.168.1.100 IP 地址

sudo firewall-cmd --zone=trusted --add-source=192.168.1.100

5. 移除 IP 地址从信任区域

sudo firewall-cmd --zone=trusted --remove-source=ip_address

示例:移除 192.168.1.100 IP 地址

sudo firewall-cmd --zone=trusted --remove-source=192.168.1.100

这些命令可以帮助您管理和配置 firewalld 防火墙,确保系统的网络安全。

六 查看状态和基本信息

# 查看是否运行
sudo firewall-cmd --state# 查看当前默认区域
sudo firewall-cmd --get-default-zone# 查看当前活动的区域及其接口
sudo firewall-cmd --get-active-zones# 查看当前区域的所有规则
sudo firewall-cmd --list-all

✅ 添加规则(服务 / 端口 / 协议)

开放服务
# 添加 SSH 服务(临时)
sudo firewall-cmd --add-service=ssh# 永久添加 HTTP 服务
sudo firewall-cmd --permanent --add-service=http# 重新加载配置
sudo firewall-cmd --reload
开放端口
# 开放单个端口
sudo firewall-cmd --permanent --add-port=8080/tcp# 开放端口范围
sudo firewall-cmd --permanent --add-port=5000-6000/udp# 删除端口
sudo firewall-cmd --permanent --remove-port=8080/tcp

🔄 修改默认区域

# 设置默认区域为 public
sudo firewall-cmd --set-default-zone=public

🌐 IP 地址过滤(黑白名单)

白名单(允许某个 IP)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
黑名单(拒绝某个 IP)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'

📦 NAT 和端口转发

启用 masquerade(IP伪装):

sudo firewall-cmd --permanent --add-masquerade

将 80 端口转发到 8080:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080

将 80 端口转发到另一台主机:

sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100

📄 富规则(Rich Rules)

富规则提供了更细粒度的控制方式,例如:

# 允许来自 192.168.1.0/24 的 SSH 访问
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'# 拒绝特定 MAC 地址访问
sudo firewall-cmd --permanent --add-rich-rule='rule source mac="aa:bb:cc:dd:ee:ff" drop'

📋 日志记录

开启日志记录:

sudo firewall-cmd --permanent --add-log-denied=all

选项包括:

  • all:所有被拒绝的数据包
  • unicast:单播数据包
  • broadcast:广播数据包
  • multicast:多播数据包

📂 配置文件路径

  • 服务定义文件:/usr/lib/firewalld/services/
  • 区域定义文件:/usr/lib/firewalld/zones/
  • 用户自定义配置:/etc/firewalld/

🧪 示例:配置 Web 服务器防火墙

# 启用 firewalld
sudo systemctl enable firewalld --now# 设置默认区域为 public
sudo firewall-cmd --set-default-zone=public# 永久开放 HTTP 和 HTTPS 服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https# 开放 8080 端口用于测试应用
sudo firewall-cmd --permanent --add-port=8080/tcp# 添加 IP 白名单
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'# 限制 SSH 到特定 IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'# 拒绝其他所有 SSH 请求
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" reject'# 重载配置
sudo firewall-cmd --reload

📚 总结:firewalld 优势

优点

描述

动态更新

不需要重启服务即可修改规则

区域划分

更灵活地适应不同网络环境

易于维护

提供了服务抽象,简化配置

支持 Rich Rules

细粒度控制访问权限

图形界面支持

GNOME/KDE 下有图形化工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90529.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90529.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/90529.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GESP】C++二级真题 luogu-B4356 [GESP202506 二级] 数三角形

GESP C二级,2025年6月真题,多重循环,难度★✮☆☆☆。 题目题解详见:【GESP】C二级真题 luogu-B4356 [GESP202506 二级] 数三角形 | OneCoder 【GESP】C二级真题 luogu-B4356 [GESP202506 二级] 数三角形 | OneCoderGESP C二级&…

遥感影像岩性分类:基于CNN与CNN-EL集成学习的深度学习方法

遥感影像岩性分类:基于CNN与CNN-EL集成学习的深度学习方法 大家好,我是微学AI,今天给大家介绍一下遥感影像岩性分类:基于CNN与CNN-EL集成学习的深度学习方法。该方法充分利用了多源遥感数据的光谱和空间信息,同时结合…

【STM32 学习笔记】SPI通信协议

SPI通信协议 SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口, 是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。   学习本章时,可与I2C…

Kafka如何做到消息不丢失

一、三种消息传递语义(Message Delivery Semantics):核心是“消息被消费处理的次数” Kafka的三种传递语义本质上描述的是“一条消息从生产到最终被消费者处理完成,可能出现的次数”,这由生产者的消息写入可靠性和消费者的offset提交策略共同决定。 1. At most once(最…

HEVC/H.265 码流分析工具 HEVCESBrowser 使用教程

引言 研究视频编解码的都知道,少不了各类的分析工具助力标准研究和算法开发,目前最出名的流媒体分析工具就是elecard系列,但基于一些原因可能大家用的都比较少。因此,找到合适的码流分析工具才是编解码研究的便捷途径&#xff0c…

量子计算+AI芯片:光子计算如何重构神经网络硬件生态

前言 前些天发现了一个巨牛的人工智能免费学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 量子计算AI芯片:光子计算如何重构神经网络硬件生态 ——2025年超异构计算架构下的万亿参数模型训练革命 产业拐点&a…

linux 4.14 kernel屏蔽arm arch timer的方法

在 ARMv7 架构的单核 CPU 系统中,完全禁用 coretime 时钟中断(通常是 ARM 私有定时器中断)需要谨慎操作,因为这会导致调度器无法工作,系统可能失去响应。以下是实现方法及注意事项:方法 1:通过 …

[实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)

调频(FM)和调幅(AM)信号生成 文章目录调频(FM)和调幅(AM)信号生成1. 调频(FM)和调幅(AM)信号原理与信号生成调幅(AM&#…

【LeetCode 热题 100】21. 合并两个有序链表——(解法一)迭代法

Problem: 21. 合并两个有序链表 题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 文章目录整体思路完整代码时空复杂度时间复杂度:O(M N)空间复杂度:O(1)整体思路 这段代码旨在解决…

力扣 hot100 Day40

23. 合并 K 个升序链表 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 //自己写的垃圾 class Solution { public:ListNode* mergeKLists(vector<ListNode*>& lists) {vector<int…

validate CRI v1 image API for endpoint “unix:///run/containerd/containerd.sock“

1.现象pull image failed: Failed to exec command: sudo -E /bin/bash -c "env PATH$PATH crictl pull 172.23.123.117:8443/kubesphereio/pause:3.9"FATA[0000] validate service connection: validate CRI v1 image API for endpoint "unix:///run/container…

【会员专享数据】2013-2024年我国省市县三级逐月SO₂数值数据(Shp/Excel格式)

之前我们分享过2013-2024年全国范围逐月SO₂栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;!该数据来源于韦晶博士、李占清教授团队发布在国家青藏高原科学数据中心网站上的中国高分辨率高质量近地表空气污染物数据集。很多小伙伴拿到数据后反馈栅格数据不太方便使…

锐捷网络重磅发布RG-UNC CS网络数字化平台:四大核心能力重塑企业网络管理新范式

近期&#xff0c;锐捷重磅发布RG-UNC网络数字化平台CS系列产品&#xff0c;通过全网统一融合管理、组网编排及自动化部署、便捷准入与访问控制、全链业务保障与可视四大核心能力&#xff0c;重新定义企业网络管理标准。置身于数字化转型的进程中&#xff0c;您的网络是否还在面…

使用虚拟机远程登陆ensp模拟器交换机

本文使用软件&#xff1a;VMware&#xff0c;eNSP&#xff0c;mobaxterm要登陆ensp里面的设备&#xff0c;需要使用到cloud下面我们先搭建如下拓扑&#xff1a;首先点击cloud&#xff0c;端口一绑定UDP信息&#xff0c;添加&#xff1b;端口2绑定VMnet8网卡&#xff08;注意网段…

显卡GPU的架构和工作原理

显卡GPU&#xff08;图形处理单元&#xff09;是专为并行计算和图形处理设计的芯片&#xff0c;广泛应用于游戏、科学计算、人工智能和数据中心等领域。以下详细介绍GPU的架构和工作原理&#xff0c;涵盖核心组件、计算流程和关键技术&#xff0c;尽量简洁清晰。 一、GPU架构概…

AndFix、Robust 与 Tinker 热修复框架深度对比

AndFix、Robust 与 Tinker 热修复框架深度对比 在 Android 热修复领域&#xff0c;AndFix、Robust 和 Tinker 是三种主流的解决方案&#xff0c;它们在实现原理、使用场景和限制条件上有显著差异。以下是三者的详细对比分析&#xff1a; 一、核心原理对比特性AndFixRobustTinke…

FlashAttention 快速安装指南(避免长时间编译)

简介&#xff1a;FlashAttention 编译太慢&#xff1f;本篇提供无需编译的预编译 wheel 快速安装方案&#xff0c;适配多版本 Python、PyTorch 和 CUDA&#xff0c;极大节省部署时间&#xff01; &#x1f4a1; 背景介绍 FlashAttention 是由 DAO Labs 提出的一种高性能 atten…

openresty增加tcp端口转发

openresty增加tcp端口转发 1.配置文件nginx.conf 增加stream模块 stream {include /etc/nginx/conf.d/stream/*.conf; }2.在nginx/conf/目录下创建个stream文件夹 新增个10000.conf配置文件server {listen 10000;proxy_pass data_tcp; upstream data_tcp {server 10.10.10.2:10…

动态物体滤除算法

图像层面&#xff1a;2D图像分割反投影到3D点云滤除 基于分割 原理&#xff1a;通过2D语义分割&#xff08;如DeepLab、Mask R-CNN&#xff09;识别动态物体&#xff08;车辆、行人&#xff09;&#xff0c;将分割结果反投影至3D点云中滤除。优化方向&#xff1a; 结合时序一致…

Redisson是如何实现分布式锁的?

Redisson 如何实现分布式锁&#xff1f;&#xff08;核心原理与思考&#xff09; Redisson 是一个功能强大的 Redis 客户端&#xff0c;它提供了许多分布式对象和服务&#xff0c;其中就包括分布式锁。Redisson 的分布式锁是基于 Redis 的 Lua 脚本实现的&#xff0c;这保证了操…