主机和虚拟机的 ARP 结果不同

主机和虚拟机的 ARP 结果不同

最近,我使用VMWare Player在Windows主机上配置了Linux虚拟机。我将网络适配器设置为桥接网络,并选中“复制”选项。 IP 地址位于物理网络上,但使用该命令arp -a在主机和虚拟机之间会产生不同的结果 - 主机可以发现 Wi-Fi 网络上的其他主机,而虚拟机则不能。

知道主机就像一个交换机,将网络信息转发给VM,我认为VM能够访问真实的网络,但我不明白为什么它不能。我想知道这个桥接网络到底是如何工作的,以及我是否可以获取虚拟机内的实际网络。

- - 编辑 - -

有趣的是,我看到了一些但不是全部的结果arp-scan -l

这是输出:

  1. arp -aWindows 主机上的结果
  2. arpLinux VM 上的结果
  3. arp-scan -l在虚拟机上

  Windows 主机上的“arp -a”结果   Linux VM 上的“arp”结果   虚拟机上的“arp-scan -l”

答案1

我不完全确定你的假设是否正确。我经常使用桥接网络设备,根据我的经验,其中一台虚拟机的网络流量在某种程度上是隔离的。我用键盘虚拟机但我使用的桥接技术是 Linux 主机提供的,所以我想它们可能不完全相同但相似。

你的使用也arp让我困惑。该命令仅显示系统最近联系过哪些系统,并且它们的 MAC 地址到 IP 地址的映射维护在系统 ARP 缓存中。该命令arp正在显示该缓存的内容。

例子

我有一个 VM 主机 + 1 个来宾。

主持人

$ arp -a
hostX (192.168.1.226) at XX:XX:XX:XX:XX:XX [ether] on br0
hostY (192.168.1.7) at XX:XX:XX:XX:XX:XX [ether] on br0
hostZ (192.168.1.5) at XX:XX:XX:XX:XX:XX [ether] on br0
hostA (192.168.1.1) at XX:XX:XX:XX:XX:XX [ether] on br0

客人

$ arp -a
hostA (192.168.1.1) at XX:XX:XX:XX:XX:XX [ether] on eth0
hostY (192.168.1.7) at XX:XX:XX:XX:XX:XX [ether] on eth0
hostB (192.168.1.100) at XX:XX:XX:XX:XX:XX [ether] on eth0
hostC (192.168.1.8) at XX:XX:XX:XX:XX:XX [ether] on eth0
hostX (192.168.1.226) at XX:XX:XX:XX:XX:XX [ether] on eth0

桥接器是第 2 层设备,因此我不希望看到arp来自 VM 来宾的 VM 主机上的任何数据证据。

摘录-9.2.5。网桥 - Redhat 文档

网桥是一种链路层设备,它根据 MA​​C 地址在网络之间转发流量,因此也称为二层设备。它根据 MA​​C 地址表做出转发决策,该表是通过了解哪些主机连接到每个网络而构建的。软件桥可以在 Linux 主机内使用,以模拟硬件桥,例如在虚拟化应用程序中与一个或多个虚拟 NIC 共享 NIC。

进一步调试吗?

tcpdump我将在来宾和主机虚拟机上使用网络分析工具。这可能会告诉您瓶颈在哪里。

$ sudo tcpdump -i eth0

将参数更改-i为您想要监视的网络接口。

答案2

arp(8)命令显示操作系统地址解析协议使用的转换表的内容;该表主要包含对本地arp who-has请求的缓存回复。

如果您有一个具有桥接网络的虚拟机,但它没有主动与本地网络上的任何主机进行通信,那么它的 arp 表可能会非常小。

同样,如果您的主机上有多个本地网络,但您只将其中一个网络桥接到虚拟机,那么您实际上并没有桥接到其他网络,不是吗?

听起来好像您已经桥接了 GigE,但没有桥接 WiFi。

或者,也许您已桥接 WiFi,但接入点不喜欢您的新 MAC 地址。

答案3

根据您攻击的图片(arp -n在您的 Linux 虚拟机上绝对没有返回任何内容),听起来您只是忘记在 Linux 中配置 IP 地址,因此您没有获得任何 ARP 条目。

您是在 Linux 中手动配置静态分配,还是dhclient在 Linux VM 中运行静态分配?您甚至没有提供任何ifconfig输出来进一步辨别问题。

您可能还必须考虑您的接入点可能不希望您扩展其网络。

相关内容