聚合 NIC 以在 Linux 上仅接收连接

Sco*_*ack 5 networking linux network-monitoring

我正在 RedHat 6 上设置一个网络监控系统,该系统将从内联分接头接收数据包馈送。该设备的功能之一是运行 Snort。将两个网卡放在系统中用于tap是没有问题的,但是由于snortd的每个实例只能在单个接口上运行,因此单独监控两个接口会破坏很多流重组和流跟踪。

由于这些 NIC 仅用于接收,因此绑定是聚合这些接口的正确方法吗?文档似乎在暗示我,因为我不太关心传输数据包,任何模式都可以满足我的需要。这是一个有效的假设吗?如果我为此使用绑定,是否有任何需要注意的奇怪之处?

lon*_*eck 5

你说得对,几乎任何模式都可以。

如果您没有使用水龙头,那么重要的配置将在您的网络交换机中。您必须选择一个负载平衡选项,以尽可能平均地分配 2 个网卡之间的负载。每个数据包循环应该导致最佳拆分,但大多数交换机不支持。如果您监控的主机主要位于不同的子网上,则下一个最佳选择是 IP,如果它们主要位于同一子网上,则选择 mac 地址。

由于您使用的是分接头,因此除了绑定网卡外,不需要其他配置。

  • 开关配置无关紧要,因为如问题中所述,馈送来自无源抽头。这些东西的工作方式是放置在链接的带内。然后输入的 RX 引脚连接到其中一个 TAP 输出的 TX 引脚,然后输入的 TX 引脚连接到第二个 TAP 输出的 TX 引脚。 (2认同)

vor*_*aq7 4

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


您提出的建议应该没问题——只要绑定接口仅接收允许您在两个接口上接收的任何绑定模式即可执行您想要的操作。
我建议balance-xor或者balance-rr只是因为您不需要分配IP(您将以混杂模式监听每个数据包)并且您不会进行传输,因此循环或异或平衡的潜在缺点不会影响你,任何其他方法的好处都是毫无意义的。

对于此实现, 我会避免使用几种绑定模式:

  • 模式 1 ( active-backup)
    此模式将一个 NIC 置于“备用”模式。您需要使用绑定模式,其中两个网卡都处于“活动”状态(或至少接收数据包)来完成您想要执行的操作。

  • 模式 3broadcast--传输的所有内容都会从每个接口发出)
    即使正确的点击不会让您将数据放入您正在监视的网络上,但安全总比后悔好。如果其中一个接口连接到接受数据包的设备,这种模式确实会扰乱您的一天。

  • 模式 4802.3ad链路聚合)
    由于这需要一个支持 802.3ad 链路聚合的交换机,并且您要插入分路器,因此这可能无法正常工作。


另一种选择是使用Netgraph 系统one2many模块是最佳候选)之类的东西来构建一个虚拟接口,重新组装流量(并最终将其发送到黑洞,而 IDS 在输出端监听) )。尽管有适用于 Linux 的 Netgraph 实现,但在 BSD 系列操作系统上这将是一个更可行的解决方案。