ubuntu防火墙如何进行性能测试
小樊
48
2026-01-07 04:23:20
Ubuntu 防火墙性能测试实操指南
一、测试目标与前置准备
- 明确目标:评估防火墙在不同规则与负载下的吞吐量、并发连接数、时延/抖动、丢包率、CPU/内存占用,并验证规则变更对性能的影响。
- 准备环境:至少两台同网段 Ubuntu 主机(或云上两台实例),一台作为防火墙/被测机,一台作为流量发生器/对端;准备被测服务(如 iperf3 监听、Nginx/HTTP 服务)。
- 基线采集:先在无防火墙或“全放行”策略下建立性能基线,再逐步叠加规则进行对比。
- 监控手段:在被测机开启sar、vmstat、nload、/proc/interrupts等系统监控,记录pps、bps、pps 丢包、软中断等关键指标。
二、通用测试流程
- 基线阶段:临时放行被测端口(如 TCP/UDP 5201 用于 iperf3),运行流量工具建立基线(吞吐、并发、时延/抖动、丢包)。
- 规则注入:按实际策略逐步添加规则(如按源/目的 IP、端口、协议、连接状态等),每加一类规则重复同一组测试,观察性能变化。
- 回归验证:清理或回滚规则,确认性能回到基线区间,避免配置残留影响后续测试。
- 结果记录:统一表格记录“规则集—并发—包大小—吞吐—丢包/抖动—CPU/软中断—内存”,便于对比与回溯。
三、按协议与场景的测试方法与命令示例
- TCP 吞吐与并发
- 被测机启动服务:iperf3 -s -p 5201
- 发生器发起多并发连接并测吞吐:
- iperf3 -c 192.0.2.10 -p 5201 -P 100 -t 30 -i 1
- 逐步增大并发(如 -P 100/500/1000),记录吞吐与丢包(仅 UDP 报告丢包,TCP 以重传/时延抖动评估)。
- UDP 吞吐、抖动与丢包
- 被测机:iperf3 -s -p 5201 -u
- 发生器:iperf3 -c 192.0.2.10 -p 5201 -u -b 0 -t 30 -i 1
- 逐步提升发送速率(-b 100M/500M/1G),观察带宽、抖动、丢包率拐点。
- HTTP/应用层吞吐与并发
- 基线:ab -n 10000 -c 200 http://192.0.2.10/
- 高并发:wrk -t12 -c400 -d30s http://192.0.2.10/
- 长时稳定性:可用循环脚本多次访问目标 URL,统计成功率与响应时延分布。
- 规则与端口可达性验证
- 查看防火墙状态:ufw status verbose;规则生效后用 ss -tulpen 确认服务监听与端口占用;必要时用 nmap 从外部验证端口可达性(open/open|filtered 等状态)。
四、结果判读与瓶颈定位
- 吞吐与并发
- 吞吐不再随并发线性增长、或 P95/P99 时延显著上升,常见于CPU/软中断瓶颈或内核网络栈/连接跟踪限制。
- 观察 sar -n DEV、/proc/interrupts 的**软中断(NET_RX/TX)**是否集中到少数 CPU,必要时考虑 RPS/XPS、中断绑定或网卡多队列优化。
- UDP 丢包与抖动
- 在接近链路上限时出现丢包/抖动,优先检查防火墙规则匹配路径与内核 conntrack/限速设置;UDP 无连接特性在高并发下更易受规则复杂度影响。
- HTTP 场景
- 若吞吐低但 P95 时延高,排查应用本身(如 keepalive、worker 数)与防火墙状态匹配成本;必要时合并/简化规则,减少线性匹配次数。
- 规则复杂度影响
- 大量离散端口/前缀匹配在 iptables 中呈线性遍历 O(n),在 nftables 可通过集合/映射将查找优化至O(log n)/O(1),高并发下差异更明显;若性能敏感,优先考虑 nftables 并尽量使用集合/映射表达策略。
五、进阶与自动化建议
- 应用层流量更贴近真实业务:使用 IXChariot 构造多种应用流(HTTP、SMB、视频等),在防火墙两侧部署 Endpoint,获取吞吐量、时延、丢包、反应时间等指标,适合评估策略对真实应用的影响。
- 自动化与批量回归
- 用脚本批量执行 iperf3/wrk/ab,循环不同并发与包大小,自动采集 sar/vmstat/中断与工具输出,生成对比报告。
- 对 HTTP 场景,可用循环脚本多次访问并记录成功率、时延分布,便于稳定性评估。