在Linux上汇集NIC以仅接收连接

我正在RedHat 6上build立一个networking监控系统,它将接收来自内联点击的数据包。 这个设备的一个function是运行Snort。 将两个网卡放在系统中用于tap是没有问题的,但由于snortd的每个实例只能在一个接口上运行,所以单独监视这两个接口会破坏很多stream重组和stream跟踪。

由于这些网卡只能接收,所以正确的方式来聚合这些接口? 这个文档几乎似乎暗示我,因为我不关心传输数据包,任何模式都可以做我所需要的。 这是一个有效的假设? 如果我为此使用粘合剂,那么是否需要注意哪些古怪的东西?

Caveat: I've never configured such a beast in practice.


你提出的build议应该没问题 – 只要绑定的接口只接收任何允许你在两个接口上接收的绑定模式就可以做你想要的。
我会build议balance-xorbalance-rr因为你不需要分配一个IP(你将会在每个数据包的混杂模式下进行监听),并且你不会传输Round-Robin的潜在缺点,异或平衡不会影响你,其他任何方法的好处都是没有意义的。

有几个键合模式,我会避免这个实现:

  • 模式1active-backup
    该模式将一个NIC置于“待机”模式。 您需要使用绑定模式,其中两个NIC都是“活动”(或至less接收数据包)为您正在尝试做什么。

  • 模式3broadcast – 每个接口都发送出去)
    即使正确的点击不会让你把数据放到你正在监视的networking上,最好是安全而不是抱歉。 如果其中一个接口连接到可以接受数据包的东西,那么这个模式真的可能会让你的一天陷入困境。

  • 模式4802.3ad链路聚合)
    由于这需要一个能够理解802.3ad链路聚合的交换机,并且您正在插入一个tap,所以这可能无法正常工作。


另一种select是使用类似Netgraph系统 ( one2many模块是最好的select)来构build一个虚拟接口,重新组装stream量(并最终将其发送到黑洞,让您的IDS在输出端监听)。 这对BSD系列操作系统来说是一个更可行的解决scheme,尽pipeNetgraph实现可用于Linux。

你几乎任何模式都是正确的。

如果您没有使用水龙头,那么重要的configuration将在您的networking交换机中。 你将不得不select一个负载均衡选项,尽可能平均分配2个nic之间的负载。 每个数据包循环应导致最好的分裂,但大多数交换机不支持。 如果您正在监视的主机大多位于不同的子网上,则下一个最佳选项是IP,如果主要位于同一子网上,则为最佳选项。

由于您正在使用tap,因此除了绑定nics之外,不需要额外的configuration。