Linux 运维学习笔记:交换空间 Swap 管理与 Firewalld 防火墙完整实操教程
Linux 运维学习笔记交换空间 Swap 管理与 Firewalld 防火墙完整实操教程前言本篇笔记记录 Linux 两大核心运维知识点内存交换空间 Swap、CentOS7 默认防火墙 Firewalld包含底层原理、完整实操命令、生产配置规范与实战案例所有命令均可直接复制到服务器执行适合 Linux 初学者与运维人员复习使用。一、Linux 交换空间 Swap 管理1.1 计算机存储器层级原理计算机存储设备按照速度由快到慢、容量由小到大分层设计相互配合平衡性能与成本CPU 寄存器CPU 内置极小存储运算数据临时存放速度最快CPU 高速缓存 CacheCPU 芯片内置容量小、速度接近 CPU缓存常用数据减少内存读取物理内存 RAM程序运行的核心空间速度远低于缓存、远高于磁盘辅助存储器硬盘 / U 盘容量超大、断电数据不丢失但读写速度最慢。数据读取逻辑CPU 先读寄存器→无数据则读缓存→无数据读内存→内存无数据才读取硬盘全程逐层缓存数据提升效率。1.2 物理内存与虚拟内存基础概念系统将物理内存划分为固定 4KiB 大小的内存页page进程不会直接操作物理地址依靠 MMU 内存管理单元实现虚拟地址→物理地址映射。虚拟内存总容量 物理内存容量 Swap 交换空间容量虚拟地址保证进程使用连续内存规避物理内存碎片化问题。1.3 Swap 交换空间是什么Swap 是内核管控的磁盘分区 / 文件等同于 Windows 虚拟内存 pagefile.sys核心 3 个作用物理内存占满时把进程闲置内存页写入磁盘 Swap腾出物理内存给新程序程序需要 Swap 内数据时内核置换内存页把磁盘数据加载回内存休眠功能依赖 Swap关机休眠时完整保存全部内存数据到 Swap开机直接恢复。⚠️ 重要提醒Swap 基于磁盘读写速度远低于内存只能作为内存不足的临时应急方案服务器性能最优解仍是扩容物理内存。1.4 查看内存与 Swap 状态使用free命令查看内存、交换空间使用情况-m参数以 MB 为单位展示更易阅读。# 默认单位KiB查看内存 [rootcentos7 ~]# free # 以MB为单位查看 [rootcentos7 ~]# free -m输出字段说明Mem 物理内存total总物理内存used已占用内存free完全空闲内存shared多进程共享内存buff/cache磁盘读写缓存占用内存available系统可用内存Swap 交换空间total总交换空间used已使用 Swapfree空闲 Swap。1.5 Swap 空间大小规范生产推荐标准表格物理内存大小常规 Swap 大小支持休眠功能 Swap 大小≤2GiB2 倍物理内存3 倍物理内存2GiB~8GiB和内存同等大小2 倍物理内存8GiB~64GiB最小 4GiB1.5 倍内存64GiB最小 4GiB不建议开启休眠笔记本 / 桌面系统若需要休眠Swap 容量必须大于等于物理内存生产服务器一般关闭休眠仅配置 4G 及以上 Swap 防止 OOM 内存溢出宕机。1.6 实操创建 Swap 交换分区parted 磁盘分区方式给磁盘新建 GPT 分区表划分 Swap 专用分区# 对磁盘/dev/sdb创建gpt分区表 [rootcentos7 ~]# parted /dev/sdb mklabel gpt # 划分2G Swap分区单位MiB分区类型linux-swap [rootcentos7 ~]# parted /dev/sdb unit MiB mkpart swap01 linux-swap 1 2049 # 打印分区表确认分区创建成功 [rootcentos7 ~]# parted /dev/sdb unit MiB print格式化 Swap 分区[rootcentos7 ~]# mkswap /dev/sdb1 # 输出UUID后续永久挂载需要使用 Setting up swapspace version 1, size 2097148 KiB no label, UUID2bf4e179-3648-4412-9495-3b278df4acd6临时激活 Swap 分区重启失效# 基础激活 [rootcentos7 ~]# swapon /dev/sdb1 # 指定优先级激活数字越大优先级越高-1~32767 [rootcentos7 ~]# swapon -p 4 /dev/sdb1 # 查看当前所有激活的Swap设备 [rootcentos7 ~]# swapon -s临时关闭 Swap 分区# 关闭单个Swap分区 [rootcentos7 ~]# swapoff /dev/sdb1 # 关闭系统全部Swap [rootcentos7 ~]# swapoff -a永久挂载 Swap开机自动激活编辑/etc/fstab写入 Swap 配置使用 UUID 保证磁盘顺序变动不失效[rootcentos7 ~]# vim /etc/fstab # 添加配置行替换为自己分区的UUID UUID2bf4e179-3648-4412-9495-3b278df4acd6 swap swap pri4 0 0配置生效命令# 加载fstab内所有Swap设备 [rootcentos7 ~]# swapon -a # 验证Swap挂载列表 [rootcentos7 ~]# swapon -s二、Linux 防火墙管理 Firewalld 完整教程2.1 防火墙基础分类按保护范围主机防火墙仅防护当前单台服务器firewalld、iptables网络防火墙防护整个局域网硬件防火墙华为、华三。按实现方式硬件防火墙专用安全硬件性能高、成本高软件防火墙系统内工具免费、配置灵活。按 OSI 层级网络层包过滤防火墙工作四层检测 IP、端口、协议速度快firewalld 底层应用层 WAF 防火墙工作七层检测 HTTP/HTTPS 请求防御网页攻击处理速度慢。2.2 Linux 内核 Netfilter 与 Nftables 底层框架NetfilterLinux 原生内核网络过滤子系统所有 Linux 防火墙底层依赖它用户层配套工具iptablesIPv4 数据包过滤ip6tablesIPv6arptablesARP 防护ebtables二层桥接过滤。NftablesNetfilter 升级增强版本CentOS8firewalld 默认后端优势规则加载更快、单工具统一管理所有协议替代多套 tables 工具。2.3 静态防火墙 vs 动态防火墙静态防火墙iptables service修改规则后需要全量重载所有规则临时连接会中断动态防火墙firewalld仅更新修改的规则片段不中断现有业务连接生产环境更友好。2.4 Firewalld 核心Zone 区域机制firewalld 把网络流量按区域 zone分组管理每个 zone 独立一套过滤规则数据包匹配 zone 优先级源 IP 绑定 zone 网卡绑定 zone 默认 zone。系统内置 9 个区域trusted全部流量放行完全信任public默认仅放行 ssh、dhcpv6-client其余全部拒绝external仅放行 ssh开启 IPv4 地址伪装 SNAT适合外网网卡home/internal/work家庭 / 内网 / 办公区域放行 ssh、samba 等内网服务dmz隔离区仅开放 ssh放置对外业务服务block拒绝所有入站流量返回不可达提示drop直接丢弃入站数据包无任何响应隐蔽性最强。2.5 firewalld 两种配置模式核心重点runtime 运行时模式不加--permanent规则立即生效重启防火墙 / 服务器全部丢失permanent 永久模式加--permanent参数写入配置文件不会立刻生效执行firewall-cmd --reload后生效实操规范同时执行永久 临时两条命令既即时生效又持久保存避免重载断开连接。2.6 firewall-cmd 完整命令实操2.6.1 防火墙服务启停管理# 查看firewalld运行状态 [rootcentos7 ~]# systemctl status firewalld # 启动防火墙 [rootcentos7 ~]# systemctl start firewalld # 停止防火墙临时关闭 [rootcentos7 ~]# systemctl stop firewalld # 设置开机自启 [rootcentos7 ~]# systemctl enable firewalld # 取消开机自启 [rootcentos7 ~]# systemctl disable firewalld2.6.2 Zone 区域管理命令# 查看所有可用zone [rootcentos7 ~]# firewall-cmd --get-zones # 查看当前激活zone绑定网卡/源IP [rootcentos7 ~]# firewall-cmd --get-active-zones # 查看系统默认zone默认public [rootcentos7 ~]# firewall-cmd --get-default-zone # 修改全局默认zone [rootcentos7 ~]# firewall-cmd --set-default-zonepublic # 查看指定zone全部规则 [rootcentos7 ~]# firewall-cmd --list-all --zonehome # 查看默认zone完整规则 [rootcentos7 ~]# firewall-cmd --list-all2.6.3 网卡 / 源 IP 绑定 Zone# 将10.1.1.0/24网段流量划分到home区域临时 [rootcentos7 ~]# firewall-cmd --add-source10.1.1.0/24 --zonehome # 将网卡ens32绑定到public区域 [rootcentos7 ~]# firewall-cmd --add-interfaceens32 --zonepublic # 删除zone内绑定的源网段/网卡 [rootcentos7 ~]# firewall-cmd --remove-source10.1.1.0/24 --zonehome2.6.4 放行系统预设服务ssh/http/https无需记忆端口号直接使用服务名配置系统内置服务存放于/usr/lib/firewalld/services/# 查看系统全部预设服务 [rootcentos7 ~]# firewall-cmd --get-services # 临时放行http网页服务80端口 [rootcentos7 ~]# firewall-cmd --add-servicehttp # 永久放行https同时临时生效 [rootcentos7 ~]# firewall-cmd --permanent --add-servicehttps [rootcentos7 ~]# firewall-cmd --add-servicehttps # 移除放行服务 [rootcentos7 ~]# firewall-cmd --remove-servicehttp [rootcentos7 ~]# firewall-cmd --permanent --remove-servicehttp # 重载永久规则 [rootcentos7 ~]# firewall-cmd --reload2.6.5 手动放行端口自定义业务端口支持单个端口、连续端口范围指定 TCP/UDP 协议# 临时放行3306/tcp数据库端口 [rootcentos7 ~]# firewall-cmd --add-port3306/tcp # 永久放行1000-2000全部tcp端口 [rootcentos7 ~]# firewall-cmd --permanent --add-port1000-2000/tcp # 删除放行端口 [rootcentos7 ~]# firewall-cmd --permanent --remove-port3306/tcp # 查看当前放行端口列表 [rootcentos7 ~]# firewall-cmd --list-ports2.6.6 SNAT 地址伪装内网服务器共享公网上网多台内网主机通过一台服务器访问外网开启 masquerade 伪装功能# 开启IP伪装临时 [rootcentos7 ~]# firewall-cmd --add-masquerade # 永久开启伪装 [rootcentos7 ~]# firewall-cmd --permanent --add-masquerade # 查询伪装是否开启 [rootcentos7 ~]# firewall-cmd --query-masquerade # 关闭伪装 [rootcentos7 ~]# firewall-cmd --remove-masquerade2.6.7 DNAT 端口转发外网端口映射内网服务端口转发必须提前开启 masquerade语法port外部端口:proto协议:toport内部端口:toaddr内网IP# 访问本机8000端口转发到本机80端口 [rootcentos7 ~]# firewall-cmd --add-forward-portport8000:prototcp:toport80 # 访问本机1022端口转发到内网10.1.1.11的22ssh端口 [rootcentos7 ~]# firewall-cmd --add-forward-portport1022:prototcp:toport22:toaddr10.1.1.11 # 查看所有转发规则 [rootcentos7 ~]# firewall-cmd --list-forward-ports # 删除转发规则 [rootcentos7 ~]# firewall-cmd --remove-forward-portport8000:prototcp:toport802.6.8 ICMP ping 控制禁止 / 允许主机 ping直接屏蔽 ping 请求报文所有主机都无法 ping 本机# 禁止echo-requestping请求 [rootcentos7 ~]# firewall-cmd --add-icmp-block echo-request [rootcentos7 ~]# firewall-cmd --permanent --add-icmp-block echo-request # 恢复ping功能 [rootcentos7 ~]# firewall-cmd --remove-icmp-block echo-request2.6.9 Rich 富规则自定义精细化控制优先级最高富规则支持限制单 IP / 网段访问、连接速率、日志审计优先级高于所有普通 zone 规则。案例 1拉黑 10.1.8.10禁止该 IP ping 服务器# 永久添加富规则拒绝该IP的ping请求 [rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request reject # 重载规则生效 [rootcentos7 ~]# firewall-cmd --complete-reload # 查看所有富规则 [rootcentos7 ~]# firewall-cmd --list-rich-rules # 删除富规则 [rootcentos7 ~]# firewall-cmd --remove-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request reject案例 2仅允许 10.1.8.10 访问 http 服务其他 IP 全部拦截并记录日志[rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 service namehttp log accept2.6.10 应急 panic 模式服务器遭受攻击一键断网# 开启应急模式丢弃所有进出流量 [rootcentos7 ~]# firewall-cmd --panic-on # 查看是否开启应急模式 [rootcentos7 ~]# firewall-cmd --query-panic # 关闭应急模式恢复网络 [rootcentos7 ~]# firewall-cmd --panic-off2.6.11 配置持久化与重载命令# 重载永久配置不中断现有连接推荐日常使用 [rootcentos7 ~]# firewall-cmd --reload # 完全重载断开所有现有TCP连接故障排查使用 [rootcentos7 ~]# firewall-cmd --complete-reload # 将当前运行时所有规则保存为永久配置 [rootcentos7 ~]# firewall-cmd --runtime-to-permanent # 设置临时生效规则10秒后自动失效测试规则专用 [rootcentos7 ~]# firewall-cmd --add-servicehttp --timeout102.7 Firewalld 图形管理工具 firewall-config安装图形工具后执行命令打开可视化界面适合新手可视化配置防火墙# 安装图形依赖包 yum install -y firewall-config xorg-x11-xauth libglvnd-glx # 启动图形界面 firewall-config图形界面功能可视化切换 zone、勾选放行服务、添加端口、配置端口转发、编辑富规则、设置 IP 伪装操作逻辑与命令行一一对应修改完成点击重载防火墙即可保存规则。三、总结Swap 交换空间用于缓解物理内存不足生产服务器按需配置分区通过/etc/fstab实现开机自动挂载多 Swap 可设置优先级调控磁盘置换顺序Firewalld 是 CentOS7 及以上系统默认动态防火墙核心 Zone 区域机制简化多网卡、多网段流量管控区分 runtime 临时规则与 permanent 永久规则日常配置同步执行两条命令兼顾即时生效与持久化常规业务放行服务 / 端口精细化 IP 访问控制使用富规则内网共享上网开启 masquerade外网端口映射使用 forward-port 转发故障应急可使用 panic 模式切断全部网络图形工具 firewall-config 适合零基础快速调试防火墙规则。