使用桥接适配器时,VM Guest 被分配与主机相同的 IP

Q-b*_*uit 1 networking virtualbox virtual-machine

我正在尝试将我的 Ubuntu 来宾虚拟机设置为可以从主机外部访问的服务器。我尝试过设置桥接适配器,但收效甚微。

首先我创建了桥接连接:

在此输入图像描述

然后我在虚拟机设置中选择了新的网桥:

在此输入图像描述

当我现在运行我的来宾虚拟机时,IP 与我的主机 IP 相同,并且连接滞后:

在此输入图像描述

我究竟做错了什么?

use*_*686 7

您已将虚拟机连接到 Wi-Fi 适配器。无论您使用哪种桥接方法 - Windows 提供的还是 VirtualBox 提供的(您的屏幕截图显示两者同时使用) - 尝试桥接 Wi-Fi 都会导致相同的普遍问题:它不允许主机谎报其 MAC 地址。

即使虚拟机认为它有自己的 MAC 地址,主机桥也必须在所有传出数据包上悄悄地重写它(从而实现“第 2 层 NAT”或“arpnat”)。这是必需的,因为 Wi-Fi 帧标头要求无线电发射器识别自身,并且不允许客户端(站)填写与发射器不同的源地址。

(以太网没有这个问题。Wi-Fi 有一个可选模式可以解决这个问题,称为“4addr”又名“WDS 桥”,但客户端AP 都必须支持它。)

正如 @FrankThomas 所指出的,最终结果是您的路由器(DHCP 服务器)两次看到​​相同的 MAC 请求地址。根据路由器的配置(例如静态保留或出于恶意),它可能始终为相同的 MAC 提供相同的地址。

(是的,DHCP 请求携带自己的源 MAC 副本,独立于 L2 标头……但我似乎记得至少 VirtualBox 的 arpnat 实现也重写了它。我不完全确定。)

如果您确实有静态 DHCP 租约,一种可能的解决方案是将它们绑定到“客户端 ID”而不是 MAC 地址。符合标准的 DHCP 服务器必须区分具有不同客户端 ID 的请求,即使它们来自相同的 MAC 地址。(反之亦然,即使 MAC 地址不同,相同的“客户端 ID”也必须与相同的租约相关联。)