![在 Linux 上聚合 NIC 以仅接收连接](https://linux22.com/image/593179/%E5%9C%A8%20Linux%20%E4%B8%8A%E8%81%9A%E5%90%88%20NIC%20%E4%BB%A5%E4%BB%85%E6%8E%A5%E6%94%B6%E8%BF%9E%E6%8E%A5.png)
我正在 RedHat 6 上设置一个网络监控系统,它将从内联分接头接收数据包。此设备的功能之一是运行 Snort。在系统中为分接头放置两个 NIC 是没有问题的,但是由于 snortd 的每个实例只能在单个接口上运行,因此单独监控两个接口将破坏大量流重组和流跟踪。
由于这些 NIC 仅用于接收,绑定是否是聚合这些接口的正确方法?文档似乎暗示我,由于我不太关心传输数据包,因此任何模式都可以满足我的需要。这是一个有效的假设吗?如果我确实为此使用绑定,是否有任何我需要注意的异常情况?
答案1
Caveat: I've never configured such a beast in practice.
您的建议应该没问题——只要绑定接口仅接收,任何允许您在两个接口上接收的绑定模式都可以满足您的要求。
我建议balance-xor
或balance-rr
只是因为您不需要分配 IP(您将以混杂模式监听每个数据包)并且您不会进行传输,因此 Round-Robin 或 XOR 平衡的潜在缺点不会影响您,任何其他方法的好处都毫无意义。
有几种粘合模式我想避免对于此实现:
模式 1(
active-backup
)
此模式将一个网卡置于“待机”模式。您需要使用绑定模式,使两个网卡都处于“活动”状态(或至少接收数据包),以便执行您要执行的操作。模式 3(
broadcast
-- 传输的所有数据都会从每个接口发出)
即使适当的窃听器不会让您将数据放入您正在监控的网络上,但谨慎行事总比事后后悔好。如果其中一个接口连接到可以接受数据包的东西,这种模式真的会让您的日子一团糟。模式 4(
802.3ad
链路聚合)
由于这需要一个能够理解 802.3ad 链路聚合的交换机,并且您正在插入分接头,因此这可能无法正常工作。
另一种选择是使用类似网络图系统(这一对多模块是最佳候选)来构建一个虚拟接口,该接口会重新组合流量(并最终将其发送到黑洞,IDS 在输出端进行监听)。虽然 Linux 上也有 Netgraph 实现,但这在 BSD 系列操作系统上会是一个更可行的解决方案。
答案2
您说得对,几乎任何模式都可以。
如果您不使用分路器,那么重要的配置将在您的网络交换机中。您必须选择一个负载平衡选项,以尽可能均匀地分配 2 个网卡之间的负载。每个数据包循环应该导致最佳分配,但大多数交换机不支持这一点。如果您监控的主机主要位于不同的子网中,则下一个最佳选项是 IP,或者如果它们主要位于同一子网中,则下一个最佳选项是 mac 地址。
由于您使用的是分接头,因此除了绑定网卡之外,不需要进行任何其他配置。