ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Linux 交换空间管理与防火墙基础配置

2026/8/4 5:40:57 拓冰建站 浏览量
Linux 交换空间管理与防火墙基础配置

Linux 交换空间管理与 Firewalld 防火墙基础配置

引言

Linux 系统管理中,内存资源的高效利用与网络安全是两个至关重要的方面。当物理内存不足时,交换空间(Swap)可以作为临时的“虚拟内存”缓解压力;而防火墙则负责控制进出主机的网络流量,保障系统安全。本文将基于课堂笔记,系统介绍 Linux 交换空间的原理与配置方法,以及 Firewalld 防火墙的基本概念和常用操作,帮助读者构建稳固的存储与安全防线。


第一部分:Linux 交换空间管理

1.1 计算机存储器的层次结构

计算机存储器按速度与成本呈金字塔式结构:

  • CPU 寄存器:速度最快,容量极小,用于暂存运算数据。
  • CPU 高速缓存(Cache):由 SRAM 组成,集成在 CPU 内,速度接近 CPU。
  • 主存储器(内存):容量较大,速度较 Cache 慢,是程序运行的主要场所。
  • 辅助存储器(磁盘、光盘等):容量最大,速度最慢,但可持久化存储数据。

当 CPU 需要数据时,会依次从寄存器、Cache、内存、辅助存储器逐级查找,将数据逐级缓存,提高访问效率。

1.2 物理内存与虚拟内存

内存被划分为固定大小的页(Page),标准大小为4 KiB。进程使用虚拟地址空间,由MMU(内存管理单元)将虚拟地址映射到物理地址。这样做的好处是:

  • 虚拟内存容量 = 物理内存 + 交换空间,突破了物理内存限制。
  • 虚拟地址空间连续,解决了物理内存碎片化问题。

1.3 Swap 交换空间

Swap 是磁盘上的一块区域,当物理内存不足时,内核将暂时不用的内存页写入 Swap,释放物理内存供其他进程使用。Swap 虽然能缓解内存压力,但由于磁盘速度远慢于内存,它只是临时解决方案,长期性能瓶颈仍需增加物理内存。

查看内存与 Swap 状态
[root@centos7 ~]# free -mtotal usedfreeshared buff/cache available Mem:39313223446111623403Swap:396703967

输出字段说明:

  • Mem.total:物理内存总量。
  • Mem.used:已使用的物理内存。
  • Mem.free:完全空闲的内存。
  • Mem.buff/cache:用于缓冲和缓存的内存。
  • Swap.total:交换空间总量。
  • Swap.used:已使用的交换空间。
  • Swap.free:剩余交换空间。
创建交换空间

首先使用parted创建分区,并将文件系统类型设置为linux-swap

[root@centos7 ~]# parted /dev/sdb mklabel gpt[root@centos7 ~]# parted /dev/sdb unit MiB mkpart swap01 linux-swap 1 2049

然后使用mkswap格式化分区:

[root@centos7 ~]# mkswap /dev/sdb1Setting up swapspace version1, size=2097148KiB

激活交换空间:

[root@centos7 ~]# swapon /dev/sdb1

查看已激活的 Swap 设备:

[root@centos7 ~]# swapon -sFilename Type Size Used Priority /dev/dm-1 partition40632280-2/dev/sdb1 partition20971480-3

多个 Swap 空间可以使用-p选项指定优先级(值越大优先级越高),内核会按优先级顺序使用。

取消 Swap 激活
[root@centos7 ~]# swapoff /dev/sdb1
持久化激活 Swap

修改/etc/fstab文件,添加如下行(推荐使用 UUID):

UUID=2bf4e179-3648-4412-9495-3b278df4acd6 swap swap pri=4 0 0

之后可使用swapon -a激活所有 /etc/fstab 中定义的 Swap 设备,swapoff -a取消激活。


第二部分:Linux 防火墙基础

2.1 防火墙概述

防火墙工作在网络或主机边缘,依据规则检查进出数据包,决定允许、拒绝或丢弃。按保护范围分为主机防火墙(保护单台主机)和网络防火墙(保护局域网);按实现方式分为硬件防火墙软件防火墙;按协议层次分为网络层防火墙(包过滤,基于 ACL)和应用层防火墙(代理,可检测应用层数据)。

2.2 Netfilter 子系统

Netfilter 是 Linux 内核中的网络过滤子系统,工作在内核态,对数据包进行检查。用户通过以下命令配置规则:

  • iptables:过滤 IPv4 数据包。
  • ip6tables:过滤 IPv6 数据包。
  • arptables:过滤 ARP 数据包。
  • ebtables:过滤数据链路层数据包。

2.3 Nftables 子系统

Nftables 是 Netfilter 的增强版,保留了 Netfilter 架构,但提供了更快的数据包处理和规则集更新,使用统一的nft命令行工具管理所有协议。

2.4 静态防火墙与动态防火墙

  • 静态防火墙(如 iptables):修改规则后需重新加载所有规则,可能导致网络连接中断。
  • 动态防火墙(如 firewalld):仅更新变更部分,无需重新加载全部规则,保持连接不中断。

第三部分:Firewalld 防火墙配置

3.1 Firewalld 简介

Firewalld 是 Red Hat 开发的动态防火墙软件,默认后端为 nftables。CentOS 7 及以后版本将其作为默认防火墙。它通过区域(zone)将网络流量分类,每个区域是一套规则集合。

3.2 Firewalld 区域

Firewalld 预定义多个区域,常见的有:

  • trusted:允许所有流量。
  • public:允许 SSH、dhcpv6-client 等服务,其余拒绝(默认区域)。
  • home:允许 SSH、mdns、samba-client 等。
  • block:拒绝所有传入流量。
  • drop:丢弃所有传入流量,不产生错误响应。

数据包与区域匹配规则:

  1. 若源地址被分配给某区域,则应用该区域规则。
  2. 否则匹配传入网络接口关联的区域。
  3. 若仍未匹配,则使用默认区域(public)。

3.3 防火墙配置状态

Firewalld 有**运行时(runtime)永久(permanent)**两种配置状态。运行时配置立即生效,但重启后丢失;永久配置需--permanent指定,并执行firewall-cmd --reload生效。建议同时配置运行时和永久规则(先永久的,再运行时)。

3.4 firewall-cmd 常用命令

查看区域与默认区域
# 查看所有区域firewall-cmd --get-zones# 查看激活的区域(已分配接口或源)firewall-cmd --get-active-zones# 查看默认区域firewall-cmd --get-default-zone# 设置默认区域firewall-cmd --set-default-zone=trusted
区域规则管理
# 查看默认区域的完整规则firewall-cmd --list-all# 查看特定区域的规则firewall-cmd --list-all--zone=home
Source 管理

将特定来源地址绑定到某区域:

# 添加源到 home 区域firewall-cmd --add-source=10.1.1.0/24--zone=home# 查看区域内的源firewall-cmd --list-sources--zone=home# 查询源是否绑定firewall-cmd --query-source=10.1.1.0/24--zone=home# 删除源firewall-cmd --remove-source=10.1.1.0/24--zone=public
Service 管理

服务是预定义的端口/协议集合,如 http(tcp/80):

# 查看所有预定义服务firewall-cmd --get-services# 添加放行 http 服务(运行时)firewall-cmd --add-service=http# 添加放行 http 服务(永久)firewall-cmd--permanent--add-service=http# 查看已放行的服务firewall-cmd --list-services# 查询服务是否放行firewall-cmd --query-service=http# 删除服务firewall-cmd --remove-service=http
Port 管理

若服务未在预定义列表中,可直接放行端口:

# 放行 TCP 5900 端口firewall-cmd --add-port=5900/tcp# 永久放行firewall-cmd--permanent--add-port=5900/tcp# 查看已放行的端口firewall-cmd --list-ports# 删除端口firewall-cmd --remove-port=5900/tcp
富规则(Rich Rules)

富规则提供更灵活的自定义能力,可结合源地址、协议、日志、限速等。
示例:禁止所有主机 ping 本机

firewall-cmd --add-rich-rule='rule protocol value=icmp drop'

示例:允许 10.1.8.10 主机 ping 本机

firewall-cmd --add-rich-rule='rule family=ipv4 source address="10.1.8.10" icmp-type name="echo-request" accept'

查看富规则清单

firewall-cmd --list-rich-rules

3.5 配置持久化

将当前运行时配置保存为永久配置:

firewall-cmd --runtime-to-permanent

3.6 其他常用选项

  • panic 模式--panic-on丢弃所有进出流量,用于紧急断网;--panic-off恢复。
  • 规则超时--timeout=秒设定规则临时生效时间,用于测试。
  • 重新加载规则--reload不中断连接重载永久配置;--complete-reload完全重载(可能中断连接)。