1

我刚刚阅读了关于可以打开互联网接口的混杂模式?于是做了一个小测试环境,在digitalocean上开了3个droplet server,私网开启。所以我最终在10.130.x.x本地网络中有 3 台服务器。

服务器1:10.130.247.92

服务器2:10.130.237.218

服务器3:10.130.237.219

在 server1 中,我使用 tshark 通过以下方式从 eth1(私有网络接口)捕获数据包

tshark -i eth1

在 server2 中,我不断 ping server1

ping 10.130.247.92

现在 server1 捕获了 server2 的所有 ICMP 数据包,同时我在 server3 中打开了 eth1 的混杂模式

ifconfig  eth1 promisc

并开始捕获 eth1,但我无法捕获到 server1 的 ICMP 数据包。

这是为什么?我猜网络是基于交换机的,而不是基于集线器的,所以server3无法捕获从server2sever1的数据包,即使它们都在同一个本地网络中并且混杂模式处于打开状态

4

1 回答 1

2

您猜测开关是罪魁祸首是正确的。混杂模式意味着以太网控制器将接受具有任何目标 MAC 地址的数据包。它不保证此类数据包将被发送到该控制器。

即使这些主机在同一个子网上,现在该子网上的主机很可能连接到以太网交换机。交换机监控来自所有端口的传入数据包,并了解在哪个端口后面看到了特定的 MAC 地址。因此,如果盒子 A 连接到端口 0,盒子 B 连接到端口 1,盒子 C 连接到端口 2,并假设每个主机已经发送了至少一个数据包,因此交换机知道谁在哪里,如果 A 向 B 发送数据包,交换机只会将数据包发送到端口 1。如果您在 C 上启用了混杂模式,您将看不到从 A 发送到 B 的数据包。

这里有一些更详细的解释 MAC 学习是如何工作的。

于 2014-04-26T06:55:54.247 回答