理解混杂模式

理解混杂模式

我不确定我是否完全理解混杂模式。

我将尝试概述我的思路,希望有人能够告诉我我错在哪里:

混杂模式的定义似乎是网络适配器不会丢弃未发送给它的数据包。由于我们正在研究第 2 层技术,因此寻址是通过 MAC 地址完成的。交换机会学习 MAC 地址,因此能够确定它们将从哪个端口转发数据包。此外,我们还有广播数据包,这些数据包根据FF:FF:FF:FF:FF其目标地址发送给每个人。

假设我在网络适配器上启用了混杂模式,我将收到哪些否则会被丢弃的数据包?我仍然需要能够收听广播,并且没有我的 MAC 地址作为目的地的数据包将不会被转发到我的 PC,因为交换机会将它们从不同的端口转发出去。

我怀疑这真的很简单而我忽略了一些东西。

答案1

您说的没错……但是……

假设我在我的网络适配器上启用了混杂模式,我将收到哪些否则会被丢弃的数据包?

如果你在使用转变(而不是中心),那么你需要研究一下“端口镜像“——这不是基本开关上通常具备的功能。

正如你提到的,开关将“学习“主机所在的位置,并且仅将流量转发到与给定主机关联的端口。您可能会看到偶尔出现不是发往您的数据包 - 这是因为当交换机不知道将流量发送到何处时,它会将其发送到所有端口。

一些超级便宜/基本的交换机在这方面确实很糟糕,具有很小的查找表或很快过期,但您偶尔也会在更好的交换机上看到这种情况(即:有史以来的第一个数据包,或很长一段时间以来的第一个数据包)。

许多人仍然使用集线器来实现他们想要的功能,特别是在教室场景中,但这排除了千兆连接......另一种选择是购买更昂贵的“管理型交换机“这将允许您配置端口镜像 - 但请注意,您将只能看到主机的流量在那个开关上...


假设我在我的网络适配器上启用了混杂模式,我将收到哪些否则会被丢弃的数据包?

换个角度来理解——在“混杂模式“您的网卡不会丢弃任何数据包……但您的网络堆栈会丢弃任何它不感兴趣的上层数据包。

如果你要捕获流量(即:使用Wireshark, 或者tcpdump),那么内核将能够为您提供全部网络接口上存在的流量 - 根据您的过滤器,您可以捕获所有内容。

还值得一提的是,并非所有网络接口都能够真正支持混杂模式 - 例如许多 WiFi 适配器就不能。


我的问题是关于混杂模式的技术问题。我看不出它在 VM 应用程序之外有什么特别的用处。

捕获网络流量非常有用,原因如下:

  • 调试协议/应用程序/服务配置和逆向工程
    • 为什么我没有收到预期的回应?
    • 为什么 DNS 没有按照我预期的那样工作?
    • 该应用程序如何与服务通信?
  • 调查性能问题
    • 为什么流量这么大?
    • 为什么网络这么慢?
  • 监控网络安全问题-新主机等...

在很多情况下,您无法直接从主机捕获这些信息 - 例如嵌入式系统或整个网络监控。

答案2

我正在我的系统上设置虚拟机,每个虚拟机都有一个公开可用的 IP 地址和自己的 MAC 地址。因此我的交换机将基本系统和所有虚拟机的数据包发送到我的网卡。

为了支持这一点,我的网卡以混杂模式运行,并且 Bridge 软件对数据包进行排序并将它们发送到正确的目的地(基本系统或 VM)。

(嗯,这是理论,我遇到了麻烦而且它还没有完全发挥作用,但这是混杂模式的另一个用例。)

相关内容