我在实验室中使用4台机器进行了测试设置:
- 2台旧的P4机器(t1,t2)
- 1个Xeon 5420 DP 2.5 GHz 8 GB RAM(t3)Intel e1000
- 1个Xeon 5420 DP 2.5 GHz 8 GB RAM(t4)Intel e1000
来测试Linux防火墙的性能,因为在过去的几个月中,我们遭受了许多次洪水攻击。所有机器都运行Ubuntu 12.04 64位。t1,t2,t3通过1GB / s的交换机互连,t4通过额外的接口连接到t3。因此,t3模拟了防火墙,t4是目标,t1,t2发挥了攻击者产生分组风暴的作用(192.168.4.199是t4):
hping3 -I eth1 --rand-source --syn --flood 192.168.4.199 -p 80
t4丢弃所有传入的数据包,以避免与网关混淆,t4的性能问题等。我在iptraf中查看数据包统计信息。我已经按照以下步骤配置了防火墙(t3):
- 库存3.2.0-31-通用#50-Ubuntu SMP内核
- rhash_entries = 33554432作为内核参数
sysctl如下:
net.ipv4.ip_forward = 1 net.ipv4.route.gc_elasticity = 2 net.ipv4.route.gc_timeout = 1 net.ipv4.route.gc_interval = 5 net.ipv4.route.gc_min_interval_ms = 500 net.ipv4.route.gc_thresh = 2000000 net.ipv4.route.max_size = 20000000
(当t1 + t2发送尽可能多的数据包时,我做了很多调整,以使t3保持运行状态)。
这些努力的结果有些奇怪:
- t1 + t2设法每个发送大约200k数据包/秒。在最佳情况下,t4总共大约有200k,因此一半的数据包丢失了。
- 尽管有数据包流过t3,但在控制台上t3几乎不可用(大量的soft-irq)
- 路由缓存垃圾收集器几乎是不可预测的,并且在默认设置下几乎被很少的数据包/秒(<50k数据包/秒)淹没
- 激活有状态iptables规则会使到达t4的数据包速率下降到大约100k数据包/秒,有效地丢失了超过75%的数据包
而这-这是我主要的担忧-两台旧的P4机器发送的数据包数尽可能多-这意味着网络上的几乎每个人都应该能够做到这一点。
所以这是我的问题:我是否忽略了配置或测试设置中的某些importand点?有没有其他构建防火墙系统的替代方法,尤其是在smp系统上?
您是否有可能使网络饱和?那将解释一些丢包。
—
普雷斯顿
我不这么认为,因为网络速度为1Gb / s,每个网络都通过hp 2848交换机连接,因此流量控制打开,并且t3上的高负载和路由缓存溢出表明t3本身就是弱点。
—
2012年