![主机和虚拟机的 ARP 结果不同](https://linux22.com/image/4553/%E4%B8%BB%E6%9C%BA%E5%92%8C%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%20ARP%20%E7%BB%93%E6%9E%9C%E4%B8%8D%E5%90%8C.png)
最近,我使用VMWare Player在Windows主机上配置了Linux虚拟机。我将网络适配器设置为桥接网络,并选中“复制”选项。 IP 地址位于物理网络上,但使用该命令arp -a
在主机和虚拟机之间会产生不同的结果 - 主机可以发现 Wi-Fi 网络上的其他主机,而虚拟机则不能。
知道主机就像一个交换机,将网络信息转发给VM,我认为VM能够访问真实的网络,但我不明白为什么它不能。我想知道这个桥接网络到底是如何工作的,以及我是否可以获取虚拟机内的实际网络。
- - 编辑 - -
有趣的是,我看到了一些但不是全部的结果arp-scan -l
这是输出:
arp -a
Windows 主机上的结果arp
Linux VM 上的结果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 主机上的任何数据证据。
网桥是一种链路层设备,它根据 MAC 地址在网络之间转发流量,因此也称为二层设备。它根据 MAC 地址表做出转发决策,该表是通过了解哪些主机连接到每个网络而构建的。软件桥可以在 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
输出来进一步辨别问题。
您可能还必须考虑您的接入点可能不希望您扩展其网络。