近日,收到一个需求,需要对iptables的性能进行测试,确定是否能够在一些场景替换掉硬件防火墙(F5)。由于测试在内网进行,这里仅贴出测试方案和测试结果。
测试方案
首先使用脚本生成6w个左右的iptables黑名单规则
#!/usr/bin/env python2.7 with open('./ips.txt', 'w') as f: for x in range(100,101): for y in range(255): for z in range(255): f.write('iptables -I INPUT -s '+'192.'+str(x)+'.'+str(y)+'.'+str(z)+' -j DROP\n')
生成的规则如下
iptables -I INPUT -s 192.100.0.1 -j DROP ... 255x255 ips ... iptables -I INPUT -s 192.100.255.255 -j DROP
将这些规则写入到被测服务器的iptables中。
然后在LoadRunner中建立测试ip池,地址范围为192.100.0.1 ~ 192.100.1.255共计510个。使用LR以100个的并发选择测试ip池中的ip对被测服务器进行访问。
测试结果
- 测试ip池中的所有访问请求均得到超时返回。即防火墙有效
- 测试过程中,使用top命令观察系统负载抖动<0.01。即未产生较高负载
- 使用黑名单以外的ip访问被测服务器80端口,得到httpd的正确返回。即未影响到正常服务。
局限性
- 仅对简单的drop规则
- 仅测试简单的连接
- 仅测试静态页面
- 规模较小