自制开源千兆防火墙,企业级

自制开源千兆防火墙,企业级

有人自己动手做过一个基于 *BSD/Linux 的防火墙,可以处理千兆流量,并且可靠运行多年吗?有很多软件解决方案,但是否有硬件基准来实现可靠的千兆防火墙?

有人开源防火墙还是商业防火墙声称

“看看 Juniper SRX。你永远无法在戴尔上使用 pfSense 获得同样的性能。”

他并不是说戴尔上的 pfSense 甚至无法与售价 480 美元的 SRX100 相媲美,对吧?

答案1

他可能指的是硬件与软件。

从上方观看

是的,在某种程度上,所有硬件防火墙都是软件,但只要有合适的硬件,你就可以重新编程硬件。这通常是一项相当昂贵的操作,但一旦重新编程硬件,防火墙就可以以线速运行。

Linux 中的性能

我们的一个站点遭受了 DDOS 攻击,上行链路为 GBit。在正常情况下,我们完全能够以近乎线速的速度传输数据。然而,这次攻击只是一次简单的 SYN-Flood,我们无法承受。

原因是卡很差,只有一个接收队列。这意味着 Linux 只使用一个核心从卡中获取包。这导致单核以 100% 的使用率运行,速度太慢,无法处理所有包。因此,防火墙后面的服务器都很无聊,但一个核心却超负荷运行(是的,我们启用了 SYN-Flood 保护,但由于卡中传入的包太多——在 Linux 知道之前——我们无法接受它)

一旦我们将硬件(仅网卡,而不是服务器中的任何其他东西)升级为具有更多接收队列的网卡,我们就会看到更多核心被使用,这对于我们的情况来说已经足够了。硬件是(如果我没记错的话)16 个核心 CPU,网卡上有 8 个队列。突然间,我们的性能提高了 8 倍,这已经足够了。

话虽如此:

面对足够大规模的 DDOS 攻击,你无能为力——我们只是幸运,它没有那么大,新的设置可以容纳它。

我总是会选择硬件防火墙,如果它意味着更好的掩护你的背后:抛开技术规格不谈,这只是一个风险管理问题。购买任何 Cisco/Juniper 或任何硬件并签订一份体面的支持合同,您就会有人可以打电话来解决问题,或者在它没有达到承诺的效果时赔偿损失。当然,您需要为这样的事情获得预算,但在某个时候,投资的资金可能只是预期收入的一小部分。另外,签订支持合同并找人负责也是一个不错的掩护策略:)

编辑:最后一段中缺少 if 。

答案2

我将对 Server Horror 提出反驳,并进一步阐述 migabi 所说的内容。对于中小型设置,我真的很喜欢 OpenBSD 以及不断发展的 pf、CARP 和相关产品。据我所知,FreeBSD(以及 pfSense)在获取最新的 pf 和 CARP 更新方面落后了。

当然,您必须愿意自己进行测试,找到具有合适网卡的合适系统,并了解 pf 的局限性,但根据我的经验,所有设置都有其局限性。在硬件设备中启用一项特定检查功能有时会使吞吐量性能降低一半甚至更糟。而且,您真的会在没有进行大量测试来验证制造商的声明的情况下在生产中部署商业解决方案吗?

很多时候,你可以得到两个合适的盒子用于故障转移,再加上第三个用于测试,而花费比购买商业替代品的费用要少。

最后,如果支付一笔钱来获得支持却没有要求他们提供正确的文档、弥补损失或修复产品中的错误,我真的很不爽。我现在就感受到了这种痛苦,没有源代码的痛苦不是我能承受的。

答案3

您在这里已经回答了您自己的问题。

是的,可以构建一个高带宽防火墙,使其能够运行多年,并具有高吞吐量,但您不能只使用垃圾硬件,要想获得更好的性能,您就必须付出高昂的代价!

如果您购买了配备双 PSU、SAS 驱动器(或使用插入主板的 USB 记忆棒)的 HP DL360 G6(例如,类似规格的戴尔或 IBM 就可以了),并将其放在一个不错的 UPS 系统上,该配置将可以使用多年,并且可以轻松清除 Gig 流量(如果您想获得许可,板载 NICS 支持 TOE),但如果您使用带有 realtek Nic 和从桌子底部抽屉中取出的 i3 的家用主板,您可能会遇到麻烦。

还要注意,像样的防火墙设备使用 FPGA 来完成大量的运算,这是线速逻辑,没有任何软件解决方案能够达到这样的效率,运行 2 个四核 Xeon 3 年是需要耗费能源的!!

上述配置是翻新市场上的廉价配置,如果您要将企业挂在这个防火墙上,您需要一个带有完整现场保修的 HP gen8(或同等产品),并且可能将其中 2 个集群用于故障转移...

答案4

我有一些正在运行的主/从系统,使用 10 Gbit 通过软件限制到 2Gbit,已经运行了 1 年半了。

它们是双 CPU 6 核 Xeon,配有 Intel NIC。我们当时选择的 Intel NIC 很重要,但我忘记了具体原因。我知道这与驱动程序以及中断在内核之间的分配方式有关。

我们还需要路由不同的接口类型。硬件防火墙无法提供这种功能,因此这是一个非常经济有效的解决方案。

所以是的,这是完全有可能的。不过要使用服务器硬件。

相关内容