我设置了三台计算机,它们都在同一子网上并连接到交换机。所有服务都可达。我正在从 PC(1) ping 到 PC(2)。使用 PC(3) 打开 tshark,但看不到不是用于 PC(3) 的包(或没有源)。
Wireshark、tcpdump、tshark等各种抓包软件,即使在混杂模式下,也只是看不到不是发往抓包主机的流量。
我设置了三台计算机,它们都在同一子网上并连接到交换机。所有服务都可达。我正在从 PC(1) ping 到 PC(2)。使用 PC(3) 打开 tshark,但看不到不是用于 PC(3) 的包(或没有源)。
Wireshark、tcpdump、tshark等各种抓包软件,即使在混杂模式下,也只是看不到不是发往抓包主机的流量。
由于您没有提到专用设备,我假设您使用的是标准交换机来连接这些 PC。普通交换机使用 MAC 地址表。它基本上是“通过 MAC → 端口(物理连接器)识别的 PC”的映射。这样,交换机就可以将单播数据包发送到正确的端口。其他端口的 PC 收不到包。只有目的地未知的包或广播包才会输出到所有端口。这不仅有助于保护隐私,还可以提高性能,因为可以减少整体流量。
你想做的事情叫做“嗅探”。有多种方法可以做到这一点,请参阅这个问题。出于学术目的,如果您的系统碰巧有两个网卡,您可以创建一个网桥并将两台 PC 连接到第三台。这样,您也可以监控流量。
这是不可能的,除非:
所有三台机器都连接到网络集线器而不是网络交换机。我不知道是否还有集线器(我认为自 1990 年代以来我什至没有见过集线器),但不同之处在于:
使用集线器(也称为“中继器”),网络上的所有数据包都会发送到集线器上的所有端口。如果网络上有很多设备,这显然不能很好地扩展。
交换机维护一个表,其中包含哪些设备(即它们的 MAC 地址)连接到哪些端口,因此仅发送“广播”数据包(例如,ARP WHO-HAS、DHCPDISCOVER 等发现数据包,以及发送到网络广播地址的数据包)到所有端口 - 一旦交换机发现设备连接到哪个端口,则该目的地的数据包仅发送到该端口。
您已将交换机上的一个端口配置为“混杂”模式(也称为“端口镜像”),以便它获取网络上的所有数据包。这通常需要某种“智能”或托管交换机,具有串行控制台端口或 http/https、telnet 或 ssh 访问权限以对其进行配置。
请注意,大多数便宜的家庭/小型企业交换机都是非托管的,无法配置。某些路由器/交换机组合设备(例如具有多个 LAN 端口的xDSL “调制解调器”)有时具有一些基本的端口配置功能。
您要对其进行数据包嗅探的机器有两个网络接口(每个接口都直接连接到另外两台机器中的一台),并充当两个网段之间的网桥或路由器。