Linux——firewalld防火墙(笔记)
目录
一:Firewalld防火墙的概述
(1)firewalld简介
(2)firewalld&iptables的关系
(3)firewalld与iptables service的区别
1. 规则管理方式
2. 默认策略与设计逻辑
3. 配置文件与持久化
4. 适用场景与兼容性
5. 底层实现与扩展性
二:Firewalld网络区域
三:Firewalld防火墙firewall——cmd命令设置
1、获取预定义信息
2、区域管理
3、服务管理
4、端口管理
5、两种配置模式
一:Firewalld防火墙的概述
(1)firewalld简介
它的主要作用为包过滤机制提供匹配规则(或策略),通过各种不同的规则告诉net filter对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式为了更加方便地组织和管理防火墙。
firewalld提供了支持网站区域所定义的网络链接以及接口安全等级的动态防火墙管理工具,其设计以区域(Zone)和服务(Service)为核心,简化了传统防火墙规则的配置流程。并且拥有两种配置模式:短暂性配置与永久性配置,支持服务或应用程序直接添加防火墙规则接口。
(2)firewalld&iptables的关系
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的net filter来实现。他们的作用都是用于维护规则,而真正使用规则干活的是内核的net filter,然而他们的结构以及使用方法并不相同。
系统提供了图形化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:依次用iptables工具与执行数据包筛选的内核中的Netfilter通信。逻辑如下:

iptables服务和firewalld都是通过iptables命令与内核netfilter进行交互的。在Euler系统中,我们仍然可以使用iptables命令来管理我们的防火墙。唯一不同的是当我们重启服务器或重启firewalld时,iptables命令管理的规则不会自动加载,反而会被firewalld的规则代替。
(3)firewalld与iptables service的区别
1. 规则管理方式
- Firewalld
- 采用动态规则管理,支持运行时修改单条规则,无需重启服务即可生效(临时规则),永久规则需配合
--permanent参数保存。 - 规则更新时不会中断现有网络连接。
- 采用动态规则管理,支持运行时修改单条规则,无需重启服务即可生效(临时规则),永久规则需配合
- iptables
- 规则修改后需全量刷新(
iptables-restore或service iptables restart),导致现有连接可能中断。 - 所有规则通过链式结构(INPUT/OUTPUT/FORWARD 等)管理,需手动维护规则顺序。
- 规则修改后需全量刷新(
2. 默认策略与设计逻辑
- Firewalld
- 默认拒绝所有流量,需显式开放服务或端口(如 HTTP、SSH)。
- 以区域(Zone)为核心,根据网络接口或源 IP 自动匹配规则(如
public、trusted),适用于多网络环境切换。
- iptables
- 默认允许所有流量,需显式拒绝不需要的访问。
- 基于接口和链式规则,直接控制具体端口或协议,适合精细化但复杂度高的场景。
3. 配置文件与持久化
- Firewalld
- 配置文件以 XML 格式存储于
/etc/firewalld/,支持自定义服务模板和区域规则68。 - 临时规则与永久规则分离,需通过
--reload同步配置。
- 配置文件以 XML 格式存储于
- iptables
- 规则保存于文本文件
/etc/sysconfig/iptables,直接编辑后需手动加载。 - 所有规则修改需显式保存(
service iptables save)才能持久化。
- 规则保存于文本文件
4. 适用场景与兼容性
- Firewalld
- 适合动态网络环境(如频繁切换信任区域)及追求配置便捷性的场景。
- 默认集成于 CentOS/RHEL 7+ 等现代 Linux 发行版。
- iptables
- 兼容老旧系统(如 CentOS 6 及更早版本),适合需要复杂规则(如深度包检测、自定义链)的场景。
- 与 Firewalld 冲突,二者不可同时启用。
5. 底层实现与扩展性
- 共同点
- 均依赖内核的 Netfilter 框架,实际流量控制由内核模块完成。
- 差异点
- Firewalld 可通过直接接口(Direct Interface)调用 iptables 语法添加自定义规则。
- iptables 提供更底层的控制,支持 NAT、流量整形等高级功能。
二:Firewalld网络区域
firewalld将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量传入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。逻辑如下:
- 若源地址关联到特定的区域,则执行该区域所制定的规则。
- 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则。
- 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则。
默认区域不是单独的区域,而是指向系统上定义的某个其他区域。默认情况下,默认区域是public,但是系统管理员可以更改默认区域。以上匹配规则,按照先后顺序,第一个匹配的规则胜出。
在每个区域中都可以配置其要打开或者关闭的一系列服务或端口,firewalld的每个预定义的区域都设置了默认打开的服务。预定义区域说明如下:
| 区域 | 默认策略规则 |
|---|---|
| trusted | 允许所有的数据包 |
| home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-clent与dhcpv6-client服务相关,则允许流量 |
| internal | 拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
| work | 拒绝流入的流量。除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
| public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
| external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
| dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
| block | 拒绝流入的流量,除非与流出的流量相关 |
| drop | 拒绝流入的流量,除非与流出的流量相关 |
三:Firewalld防火墙firewall——cmd命令设置
1、获取预定义信息
firewal1-cmd 预定义信息主要包括三种:可用的区域、可用的服务以及可用的 ICMP 阻塞类型,具体的查看命令如下所示。
[root@localhost ~]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block
[root@localhost ~]# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client baculabacula-client cephceph-mondhcp
dhcpv6 dhcpv6-client dnsdocker-registry dropbox-lansyncfreeipa-ldap
... ... //省略部分内容
transmission-clientvdsmvnc-serverwbem-https xmpp-bosh xmpp-client xmpp-local
xmpp-server
[root@localhost ~]# firewall-cmd --get-icmptypes
... ... //省略部分内容
timestamp-request
firewall-cmd --get-icmptypes 命令的执行结果中各种阻塞类型的含义分别如下:
阻塞类型 含义 destination-unreachable 目的地址不可达 echo-reply 应答回应(pong) parameter-problem 参数问题 redirect 重新定向 router-advertisement 路由器通告 router-solicitation 路由器征寻 source-quench 源端抑制 time-exceeded 超时 timestamp-reply 时间戳应答回应 timestamp-request 时间戳请求
2、区域管理
使用firewall-cmd命令可以实现获取和管理区域,为指定区域绑定网络接口等功能。区域管理选项说明如下:
| 选项 | 说明 |
|---|---|
| --get-default-zone | 显示网络连接或接口的默认区域 |
| --set-default-zone=<zone> | 设置网络连接或接口的默认区域 |
| --get-active-zones | 显示已激活的所有区域 |
| --get-zone-of-interface=<interface> | 显示指定接口绑定的区域 |
| --zone=<zone> --add-interface=<interface> | 为指定接口绑定区域 |
| --zone=<zone> --change-interface=<interface> | 为指定的区域更改绑定的网络接口 |
| --zone=<zone> --remove-interface=<interface> | 为指定的区域删除绑定的网络接口 |
| --list-all-zones | 显示所有区域及其规则 |
| [--zone=<zone>] --list-all | 显示所有指定区域的所有规则 |
具体操作如下:
(1)显示当前系统中的默认区域.
[root@localhost ~]# firewall-cmd --get-default-zone
public
(2)显示默认区域的所有规则。
[root@localhost ]# firewall-cmd -list-all
public(active)target: default
icmp-block-inversion:no
interfaces:ens160
sources:
services:dhcpv6-client ssh
ports:
protocols:
masquerade:no
forward-ports:
sourceports:
icmp-blocks:rich rules:
(3)显示网络接口 ens160 对应区域。
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens160
public
(4)将网络接口 ens160 对应区域更改为 internal 区域,
[root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens160
The interface is under control of NetworkManager, setting zone to 'internal'. success
[root@localhost ~]# firewall-cmd --zone=internal --list-interfaces
ens160
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens160
internal
(5)显示所有激活区域.
[root@localhost ~]# firewall-cmd--get-active-zones
internal
interfaces:ens160
3、服务管理
为了方便管理,firewalld 预先定义了很多服务,存放在 /usr/lib/firewalld/services/ 目录中,服务通过单个的 XML配置文件来指定。这些配置文件则按以下格式命名:service-name.xml,每个文件对应一项具体的网络服务,如 ssh 服务等。service 配置具有以下优点:
- 通过服务名字来管理规则更加人性化;
- 通过服务来组织端口分组的模式更加高效。如果一个服务使用了若干个网络端口,则服务的配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式。
下列为firewall-cmd命令区域中服务管理的常用选项:
| 参数 | 作用 |
|---|---|
| --get-default-zone | 查访默认的区域名称 |
| --set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
| --get-zones | 显示可以的区域 |
| --get-services | 显示预定义的服务 |
| --get-active-zones | 显示当前正在使用的区域、来源地址和网卡名称 |
| --add-source= | 将源自此IP或子网的流量导向指定的区域 |
| --remove-source= | 不再将源自此IP或子网的流量导向这个区域 |
| --add-interface=<网络名称> | 将源自该网卡的所有流量都导向某个指定区域 |
| --change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
| --list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
| --list-all-zones | 显示所有区域的网卡配置参数、资源】端口以及服务等信息 |
| --add-service=<服务名> | 设置默认区域允许该服务的流量 |
| --add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
| --remove-service=<服务号> | 设置默认区域不再允许该服务的流量 |
| --remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
| --reload | 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 |
| --panic-on | 开启应急状态模式 |
| --panic-off | 关闭应急状态模式 |
(1)为默认区域设置允许访问的服务。
[root@localhost ~]# firewall-cmd --list-services //显示默认区域内允许访问的所有服务
dhcpv6-clientssh
[root@localhost ~]# firewall-cmd --add-service=http //设置默认区域允许访问 http 服务
success
[root@localhost ~]# firewall-cmd --add-service=https //设置默认区域允许访间 https 服务
success
[root@localhost ~]# firewall-cmd --list-services
dhcpv6-client ssh http https
(2)为 internal 区域设置允许访问的服务,
[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql //设置 internal 区域允许访问 mysq1 服务
success
[root@localhost~]# firewall-cmd --zone=internal--remove-service=samba-client //设置 internal 区域不允许访问 samba-client 服务
success
[root@localhost ~]# firewall-cmd --zone=internal --list-services //显示 internal 区域内允许访问的所有服务
ssh mdns dhcpv6-client mysql
4、端口管理
在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作即可实现在 internal 区域打开 443/TCP 端口。
[root@localhost ~]# firewall-cmd --zone=internal--add-port=443/tcp
success
若想实现在 internal 区域禁止 443/TCP 端口访问,可执行以下命令。
root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success
5、两种配置模式
前面提到 firewall-cmd 命令工具有两种配置模式:运行时模式表示当前内存中运行的防火墙配置,在系统或 firewalld 服务重启、停止时配置将失效;永久模式表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。
firewa11-cmd 命令工具与配置模式相关的选项有三个:
- --reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
- --permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动 firewalld 或重新加载防火墙规则时才会生效:若不带有此选项,表示用于设置运行时规则。
- --runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性配置。
相关文章:
Linux——firewalld防火墙(笔记)
目录 一:Firewalld防火墙的概述 (1)firewalld简介 (2)firewalld&iptables的关系 (3)firewalld与iptables service的区别 1. 规则管理方式 2. 默认策略与设计逻辑 3. 配置文…...
《分布式软总线赋能老旧设备高效通信》
在数字化转型的浪潮中,分布式软总线技术成为实现设备互联互通的关键力量。然而,当面对大量老旧设备时,其性能受限的现状对分布式软总线提出了严峻挑战。如何在这些性能瓶颈下,让老旧设备实现高效连接与通信,是亟待解决…...
YOLO拓展-锚框(anchor box)详解
一.锚框(anchor box)概述 1.1什么是锚框 锚框就是一种进行预测的像素框,通过遍历输入图像上所有可能的像素框,然后选出正确的目标框,并对位置和大小进行调整就可以完成目标检测任务。 对于yolo锚框的建设须基于实际…...
GPU渲染阶段介绍+Shader基础结构实现
GPU是什么 (CPU)Center Processing Unit:逻辑编程 (GPU)Graphics Processing Unit:图形处理(矩阵运算,数据公式运算,光栅化) 渲染管线 渲染管线也称为渲染流水线&#x…...
第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言
目录 🔍 一、讲讲“遥感+深度学习”到底是干啥的? ✅ 能解决什么问题? 🧠 二、基础原理串讲:深度学习如何“看懂”遥感图? 🛰 遥感图像数据类型: 🧠 CNN的基本思路: 🧪 三、实战案例:用CNN对遥感图像做地类分类 📦 所需R包: 🗂️ 步骤一:构建训…...
kubernetes》》k8s》》Service
Kubernetes 中的 Service 是用于暴露应用服务的核心抽象,为 Pod 提供稳定的访问入口、负载均衡和服务发现机制。Service在Kubernetes中代表了一组Pod的逻辑集合,通过创建一个Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址…...
多道程序和多任务操作系统区别
多道程序 vs. 多道任务:对比分析 ✅ 共同点 方面共同特征核心机制都依赖于进程/任务切换执行需求实现多个程序或任务"并发"执行系统支持都需要操作系统的支持(如调度算法、内存管理)本质目标提高资源利用率(CPU不空转…...
CMFA在自动驾驶中的应用案例
CMFA在自动驾驶中的典型应用案例 CMFA(Cross-Modal Feature Alignment)方法在自动驾驶领域有多个成功的应用场景,以下是几个典型案例: 1. 多模态3D目标检测 应用场景:车辆、行人、骑行者等交通参与者的精确检测 …...
已注册商标如何防止被不使用撤销!
近年来已注册商标被撤销越来越多,不乏著名企业或机构,普推知产商标老杨看到前一阵看到央视和百度等申请的商标也被申请撤销,连续三年不使用撤销也是正常的商标流程。 已注册商标被撤销普推老杨看到案例主要是集中在一些早期申请注册的好记的商…...
android 打包内容 安卓打包工具有哪些
Android ROM打包工具与技巧分享 eMMC存储与Android文件系统 eMMC作为手机和平板电脑的内嵌式存储器,因其集成了控制器并提供标准接口等优势,受到Android厂商青睐。采用eMMC存储的Android手机,其文件系统(system、data分区)通常采用ext4格式…...
管理与维护samba服务器
允许 Linux、Unix 系统与 Windows 系统之间进行文件和打印机共享,使得不同操作系统的用户能够方便地访问和共享资源,就像在同一局域网中的 Windows 计算机之间共享资源一样。 server01安装Samba服务器 [rootserver ~]# rpm -qa | grep samba [rootserver…...
EAGLE代码研读+模型复现
要对代码下手了,加油(ง •_•)ง 作者在他们自己的设备上展现了推理的评估结果,受第三方评估认证,EAGLE为目前最快的投机方法(虽然加速度是评估投机解码方法的主要指标,但其他点也值得关注。比如PLD和Lookahead无需额…...
2024期刊综述论文 Knowledge Graphs and Semantic Web Tools in Cyber Threat Intelligence
发表在期刊Journal of Cybersecurity and Privacy上,专门讲知识图谱技术和语义Web工具在网络威胁情报领域的作用,还把本体和知识图谱放在相同的地位上讨论。 此处可以明确一点:本体和知识图谱都可以用于网络威胁情报的应用,当然也…...
vue3+vite 多个环境配置
同一套代码 再也不用在不同的环境里来回切换请求地址了 然后踩了一个坑 就是env的文件路径是在当前项目下 不是在views内 因为公司项目需求只有dev和pro两个环境 虽然我新增了3个 但是只在这两个里面配置了 .env是可以配置一些公共配置的 目前需求来说不需要 所以我也懒得配了。…...
秒杀系统解决两个核心问题的思路方法总结:1.库存超卖问题;2.用户重复抢购问题。
秒杀系统解决两个核心问题 秒杀系统解决两个核心问题:一、解决库存超卖的核心逻辑:解释:原子性保证: 二、如何避免重复抢购:使用 Redis 做唯一标识判断优点: 三、流程完整梳理:四、通过数据库建…...
linux socket编程之udp(实现客户端和服务端消息的发送和接收)
目录 一.创建socket套接字(服务器端) 二.bind将prot与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.直接通信(服务器端) 3.1接收客户端发送的消息 3.2给客户端发送消息 四.客户端通信 4.1创建socket套接字 4.2客户端bind问题 4.3直接通信即可…...
SAP HANA使用命令行快速导出导入
楔子 今天折腾了接近一下午,就为了使用SAP HANA自带的命令行工具来导出数据备份。 SAP HANA(后续简称Hana)是内存数据库,性能这一方面上还真没怕过谁。 由于SAP HANA提供了Hana Studio这个桌面工具来方便运维和DBA使用…...
goland做验证码识别时报“undefined: gosseract.NewClient”
gosseract 应该有 和 c 相关的配置库因此需要安装 cgo 并且启用 CGO_ENABLED 在cmd下面输入这个 go env -w CGO_ENABLED1 接着输入 go env 验证是否设置成功 解决了这个问题后 “undefined: gosseract.NewClient” 又出现了 # runtime/cgo …...
计算机网络 实验四 静态路由的配置与应用
一、实验目的 掌握路由器基础工作原理及静态路由协议机制熟练使用华为ENSP网络模拟器进行拓扑设计与设备配置建立系统化的网络故障排除思维通过实践验证静态路由在中小型网络中的部署优势 二、实验环境 硬件配置:标准PC终端软件工具:华为企业网络模拟…...
Vue自定义指令-防抖节流
Vue2版本 // 防抖 // <el-button v-debounce"[reset,click,300]" ></el-button> // <el-button v-debounce"[reset]" ></el-button> Vue.directive(debounce, { inserted: function (el, binding) { let [fn, event "cl…...
[每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器
文章目录 一、什么是 sync.Pool?二、sync.Pool 的基本作用三、sync.Pool 的主要方法四、sync.Pool 的内部工作原理五、sync.Pool 适用场景六、使用示例示例 1:基本使用输出示例:示例 2:并发使用 七、一个基于 sync.Pool 的 **Benc…...
3.QT-信号和槽|自定义槽函数|自定义信号}自定义的语法}带参数的信号和槽(C++)
信号和槽 Linux信号 Signal 系统内部的通知机制. 进程间通信的方式. 信号源:谁发的信号.信号的类型:哪种类别的信号信号的处理方式:注册信号处理函数,在信号被触发的时候自动调用执行. Qt中的信号和Linux中的信号,虽…...
健康养生之道
在快节奏的现代生活中,健康养生不再是中老年人的专属话题,越来越多的人开始意识到,合理的养生方式是保持良好身体状态和生活质量的关键。 饮食养生是健康的基石。遵循 “食物多样、谷类为主” 的原则,保证每天摄入足够的蔬菜、…...
Spark-SQL核心编程3
数据加载与保存 通用方式: SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的API,根据不同的参数读取和保存不同格式的数据,SparkSQL 默认读取和保存的文件格式为parquet 数据加载方法: spark.read.lo…...
TVM计算图分割--Collage
1 背景 为满足高效部署的需要,整合大量优化的tensor代数库和运行时做为后端成为必要之举。现在的深度学习后端可以分为两类:1)算子库(operator kernel libraries),为每个DL算子单独提供高效地低阶kernel实现。这些库一般也支持算…...
elementUI中MessageBox.confirm()默认不聚焦问题处理
在项目中使用elementUI的MessageBox.confirm()出现了默认不聚焦的问题,默认确认按钮是浅色的,需要点击一下才会变成正常。面对这种问题,创建新组件,实现聚焦。替换默认的MessageBox.confirm() 解决 创建components/MessageBoxCo…...
【刷题Day20】TCP和UDP(浅)
TCP 和 UDP 有什么区别? TCP提供了可靠、面向连接的传输,适用于需要数据完整性和顺序的场景。 UDP提供了更轻量、面向报文的传输,适用于实时性要求高的场景。 特性TCPUDP连接方式面向连接无连接可靠性提供可靠性,保证数据按顺序…...
sql server 预估索引大小
使用deepseek工具预估如下: 问题: 如果建立一个数据类型是datetime的索引,需要多大的空间? 回答: 如果建立一个数据类型是 datetime 的索引,索引的大小取决于以下因素: 索引键的大小&#…...
利用 i2c 快速从 Interface 生成 Class
利用 i2c 快速从 Interface 生成 Class(支持 TS & ArkTS) 在日常 TypeScript 或 ArkTS 开发中,需要根据 interface 定义手动实现对应的 class,这既重复又容易出错。分享一个命令行工具 —— interface2class,简称…...
MCGS昆仑通太屏笔记
4.3寸:4013ef/e1 7寸:7032kw 特点: 如果是使用组态屏进行调试使用,选择com1如果是实际项目使用,选择com2 操作步骤: 先创建设备窗口,再创建用户界面 在设备窗口界面,依次设置如下…...
