一篇搞懂 Linux 交换空间、Firewalld 区域规则、端口转发与安全加固
2026/8/4 3:10:49 网站建设 项目流程

Linux交换空间+Firewalld防火墙 知识点整理精简版

一、存储器层级与虚拟内存、Swap交换空间

1. 存储器金字塔(速度从上到下递减、成本递减、容量递增)

  1. CPU寄存器:CPU内置,速度最快,临时存放运算数据;
  2. CPU高速缓存Cache:SRAM制作在CPU内部,分为L1/L2/L3,缓存常用数据,缓解CPU与内存速度差;
  3. 物理内存(RAM):程序运行主空间,最小单位页Page,标准4KiB;带宽公式:带宽=频率×位宽÷8
  4. 磁盘等外存:永久存储,速度最慢、容量最大。

2. MMU与虚拟地址核心作用

MMU(内存管理单元)硬件完成虚拟地址→物理地址映射。
CPU不直接访问物理地址原因:

  • 进程频繁创建销毁会产生大量内存碎片,无法保证物理地址连续;
  • 每个进程独享连续虚拟地址,MMU做映射,进程隔离、内存利用率更高;
  • 虚拟内存 = 物理内存 + Swap交换空间。

3. Linux Swap交换空间

核心作用

物理内存不足时,将长期闲置内存页写入磁盘Swap,腾出物理内存给活跃进程;缺页时再把Swap数据换回内存,等同于Windows虚拟内存pagefile.sys
⚠️ 磁盘速度远低于内存,Swap仅应急,扩容物理内存才是最优方案。

标准Swap规划参考
物理内存常规Swap大小休眠Swap大小
≤2GiB2倍内存3倍内存
2~8GiB等于内存2倍内存
8~64GiB≥4GiB1.5倍内存
>64GiB≥4GiB不建议休眠
常用Swap实操命令
  1. 查看内存与Swap:free -m(-m以MB显示)
  2. 分区创建Swap
# 1.新建swap分区parted/dev/sdb mklabel gptparted/dev/sdb unit MiB mkpart swap01 linux-swap12049# 2.格式化swapmkswap/dev/sdb1# 3.临时激活,-p指定优先级(数值越大优先级越高)swapon-p4/dev/sdb1# 4.查看swap设备swapon-s# 5.卸载swapswapoff /dev/sdb1# 6.永久挂载/etc/fstabUUID=xxx swap swappri=400swapon-a#加载fstab所有swapswapoff-a#卸载所有swap

二、防火墙基础与Netfilter架构

1. 防火墙分类

  • 保护范围:主机防火墙局域网网络防火墙
  • 实现方式:硬件防火墙、软件防火墙(iptables/firewalld);
  • 协议层级:网络层包过滤防火墙、应用层WAF防火墙。

2. Netfilter内核子系统

Linux内核底层数据包过滤框架,上层工具:

  • iptables:IPv4包过滤;ip6tables:IPv6;
  • arptables:ARP防护;ebtables:二层链路过滤;
  • nftables:新一代统一框架,firewalld默认后端。

3. 静态防火墙vs动态防火墙

  • 静态(iptables):修改规则需全量重载,断连接;
  • 动态(firewalld):增量更新规则,不中断已有TCP连接,CentOS7+默认防火墙。

4. firewalld基础认知

  1. 底层依赖Netfilter/nftables,只是规则管理工具;
  2. Runtime临时模式:不加--permanent,立即生效,重启失效;
  3. Permanent永久模式:加--permanent,写入配置,需--reload生效;
  4. --complete-reload:全量重载,断开所有现有连接,故障急救使用;
  5. --runtime-to-permanent:将当前临时规则固化为永久规则。

三、Firewalld区域Zone

1. 9大常用Zone(优先级从严到松)

区域策略适用场景
drop丢弃所有入站包,无响应最高安全防护
block拒绝入站,返回不可达提示服务器防扫描
dmz/external仅放行SSH,外网边界外网服务器
public默认区域,放行ssh、dhcpv6-client绝大多数服务器默认
work/home/internal放行ssh、samba、mdns内网办公、家庭局域网
trusted放行所有流量本机lo回环网卡

2. 数据包匹配Zone顺序

  1. 源IP绑定Zone → 2. 网卡绑定Zone → 3. 默认public区域。

3. Zone基础管理命令

firewall-cmd --get-zones#查看所有区域firewall-cmd --get-default-zone#查看默认区域firewall-cmd --set-default-zone=public#修改默认区域firewall-cmd --get-active-zones#查看正在使用的区域firewall-cmd --list-all#查看默认区域完整规则firewall-cmd --list-all--zone=home#查看指定区域规则

四、firewalld常用规则管理

1. 源地址source、网卡interface绑定

#网段绑定home区域firewall-cmd --add-source=10.1.1.0/24--zone=home#网卡绑定区域firewall-cmd --add-interface=ens32--zone=public

2. 服务service管理(推荐,比端口更易维护)

firewall-cmd --add-service=http--permanent#永久放行80firewall-cmd --remove-service=ssh#临时关闭sshfirewall-cmd --list-services#查看放行服务firewall-cmd--reload

3. 端口port管理

firewall-cmd --add-port=8080/tcp--permanentfirewall-cmd --remove-port=5900/tcp firewall-cmd --list-ports

4. 地址伪装masquerade(SNAT内网共享上网)

内网主机以网关公网IP访问外网,开启后才能做端口转发:

firewall-cmd --add-masquerade firewall-cmd --query-masquerade

5. 端口转发forward-port(DNAT)

语法:port=源端口:proto=协议:toport=目标端口:toaddr=目标IP

#本机8000转发到本机80firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80#本机1022转发到内网10.1.1.11:22firewall-cmd --add-forward-port=port=1022:proto=tcp:toport=22:toaddr=10.1.1.11

6. ICMP(ping)管控

  1. icmp-block:全局禁用echo-request,所有人无法ping,无白名单;
firewall-cmd --add-icmp-block echo-request--permanent
  1. icmp-block-inversion:默认禁止所有ping,富规则添加IP白名单。

7. 富规则rich-rule(最高优先级,精细化自定义)

通用语法:rule [源地址] [目的地址] 服务/端口/icmp 日志/审计 accept/reject/drop
常用模板:

#1. 禁止所有pingfirewall-cmd --add-rich-rule='rule protocol value=icmp drop'#2. 仅允许10.1.8.10 ping本机firewall-cmd --add-rich-rule='rule family=ipv4 source address="10.1.8.10" icmp-type echo-request accept'#3. 限速:10.1.8.0/24访问http每秒最多3次并记录日志firewall-cmd --add-rich-rule'rule family="ipv4" source address="10.1.8.0/24" service name="http" log prefix="http-limit" limit value="3/s" accept'

8. direct直接规则

兼容iptables语法,优先级高于所有firewalld规则,用于底层深度管控。

9. panic紧急模式

firewall-cmd --panic-on#全网断流,防黑客攻击firewall-cmd --panic-off#恢复网络

五、实战案例完整脚本

案例1:禁止10.1.8.10 ping本机

#恢复默认icmp模式firewall-cmd--permanent--remove-icmp-block-inversion firewall-cmd--permanent--remove-icmp-block echo-request#添加拒绝规则firewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="10.1.8.10" icmp-type echo-request reject'firewall-cmd --complete-reload

案例2:仅允许10.1.8.10 ping本机

#开启ICMP反转,默认拒绝所有pingfirewall-cmd--permanent--add-icmp-block-inversion#添加白名单放行firewall-cmd--permanent--add-rich-rule='rule family=ipv4 source address="10.1.8.10" icmp-type name="echo-request" accept'firewall-cmd --complete-reload

六、运维常用速记

  1. 防火墙永久配置标准写法:--permanent添加规则 + firewall-cmd --reload
  2. 规则冲突优先级:富规则 > direct规则 > 区域普通规则
  3. Swap过高使用率优先排查内存泄漏,不要盲目扩容Swap;
  4. 公网服务器常规加固:默认drop不必要端口、限制SSH白名单、禁ping、开启日志审计。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询