Linux交换空间+Firewalld防火墙 知识点整理精简版
一、存储器层级与虚拟内存、Swap交换空间
1. 存储器金字塔(速度从上到下递减、成本递减、容量递增)
- CPU寄存器:CPU内置,速度最快,临时存放运算数据;
- CPU高速缓存Cache:SRAM制作在CPU内部,分为L1/L2/L3,缓存常用数据,缓解CPU与内存速度差;
- 物理内存(RAM):程序运行主空间,最小单位页Page,标准4KiB;带宽公式:
带宽=频率×位宽÷8; - 磁盘等外存:永久存储,速度最慢、容量最大。
2. MMU与虚拟地址核心作用
MMU(内存管理单元)硬件完成虚拟地址→物理地址映射。
CPU不直接访问物理地址原因:
- 进程频繁创建销毁会产生大量内存碎片,无法保证物理地址连续;
- 每个进程独享连续虚拟地址,MMU做映射,进程隔离、内存利用率更高;
- 虚拟内存 = 物理内存 + Swap交换空间。
3. Linux Swap交换空间
核心作用
物理内存不足时,将长期闲置内存页写入磁盘Swap,腾出物理内存给活跃进程;缺页时再把Swap数据换回内存,等同于Windows虚拟内存pagefile.sys。
⚠️ 磁盘速度远低于内存,Swap仅应急,扩容物理内存才是最优方案。
标准Swap规划参考
| 物理内存 | 常规Swap大小 | 休眠Swap大小 |
|---|---|---|
| ≤2GiB | 2倍内存 | 3倍内存 |
| 2~8GiB | 等于内存 | 2倍内存 |
| 8~64GiB | ≥4GiB | 1.5倍内存 |
| >64GiB | ≥4GiB | 不建议休眠 |
常用Swap实操命令
- 查看内存与Swap:
free -m(-m以MB显示) - 分区创建Swap
# 1.新建swap分区
parted /dev/sdb mklabel gpt
parted /dev/sdb unit MiB mkpart swap01 linux-swap 1 2049
# 2.格式化swap
mkswap /dev/sdb1
# 3.临时激活,-p指定优先级(数值越大优先级越高)
swapon -p 4 /dev/sdb1
# 4.查看swap设备
swapon -s
# 5.卸载swap
swapoff /dev/sdb1
# 6.永久挂载/etc/fstab
UUID=xxx swap swap pri=4 0 0
swapon -a #加载fstab所有swap
swapoff -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基础认知
- 底层依赖Netfilter/nftables,只是规则管理工具;
- Runtime临时模式:不加
--permanent,立即生效,重启失效; - Permanent永久模式:加
--permanent,写入配置,需--reload生效; --complete-reload:全量重载,断开所有现有连接,故障急救使用;--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顺序
- 源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 #永久放行80
firewall-cmd --remove-service=ssh #临时关闭ssh
firewall-cmd --list-services #查看放行服务
firewall-cmd --reload
3. 端口port管理
firewall-cmd --add-port=8080/tcp --permanent
firewall-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转发到本机80
firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80
#本机1022转发到内网10.1.1.11:22
firewall-cmd --add-forward-port=port=1022:proto=tcp:toport=22:toaddr=10.1.1.11
6. ICMP(ping)管控
- icmp-block:全局禁用echo-request,所有人无法ping,无白名单;
firewall-cmd --add-icmp-block echo-request --permanent
- icmp-block-inversion:默认禁止所有ping,富规则添加IP白名单。
7. 富规则rich-rule(最高优先级,精细化自定义)
通用语法:rule [源地址] [目的地址] 服务/端口/icmp 日志/审计 accept/reject/drop
常用模板:
#1. 禁止所有ping
firewall-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反转,默认拒绝所有ping
firewall-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
六、运维常用速记
- 防火墙永久配置标准写法:
--permanent添加规则 + firewall-cmd --reload; - 规则冲突优先级:富规则 > direct规则 > 区域普通规则;
- Swap过高使用率优先排查内存泄漏,不要盲目扩容Swap;
- 公网服务器常规加固:默认drop不必要端口、限制SSH白名单、禁ping、开启日志审计。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2301_80935320/article/details/163451136




