Linux iptables / conntrack性能问题


9

我在实验室中使用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年

Answers:


1

我将迁移到> = 3.6的内核,该内核不再具有路由缓存。那应该可以解决您的部分问题。


0

您如何在T3上进行日志记录设置?如果记录了所有丢弃的数据包,则可能是磁盘I / O。

由于这是一个测试环境,因此可以在关闭T3日志记录的情况下尝试进行测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.