通过嵌套 ESXI 虚拟化在 VirtualBox 上实现桥接网络失败

通过嵌套 ESXI 虚拟化在 VirtualBox 上实现桥接网络失败

我正在尝试让桥接网络在 VirtualBox 中的 Ubuntu 上运行,在作为 ESXI 系统上的客户机运行的 Windows Server 2016 主机上(即嵌套虚拟化:ESXI -> 运行 Virtualbox 的 Windows Server -> Ubuntu)。

我的 VMware ESXI 安装:

  • 在 Intel Xeon 上运行的 ESXI 6.5.0 Update 1(内部版本 5969303)
  • 为我的客户机启用“向客户机操作系统公开硬件辅助虚拟化”
  • 所有 VLAN 都通过物理网卡 (igbn 驱动程序) 作为 1 个中继接入
  • 每个 VLAN 都创建端口组,并传递给我的客户机;在本例中,我的客户机使用 4 个 e1000 网卡,每个卡分配不同的 VLAN
  • 相当标准的客户选项(2 个 vCPU、8GB RAM、50GB HDD 等)

我的 Windows Server 2016 安装(作为 ESXI 上的客户机):

  • 以下配置用于 ESXI 上的 Windows Server 2016:
ethernet4.pciSlotNumber 1216
featMask.vm.hv.capable 最小值:1
以太网3.pciSlotNumber 1184
工具.guest.desktop.autolock FALSE
nvram N.nvram
pciBridge0.present TRUE
svga.present TRUE
pciBridge4.present TRUE
pciBridge4.virtualDev pcieRootPort
pciBridge4.功能 8
pciBridge5.present TRUE
pciBridge5.virtualDev pcieRootPort
pciBridge5.功能 8
pciBridge6.present TRUE
pciBridge6.virtualDev pcieRootPort
pciBridge6.功能 8
pciBridge7.present TRUE
pciBridge7.virtualDev pcieRootPort
pciBridge7.功能 8
hpet0.present TRUE
RemoteDisplay.maxConnections -1
sched.cpulatencySensitivity 正常
sata0:0.自动检测 TRUE
numa.autosize.vcpu.maxPerVirtualNode 2
numa.autosize.cookie 20001
sched.swap.derivedName /vmfs/volumes/5b8555ab-94e03f86-bf5b-e0d55e5a526b/N/N-d4a539e0.vswp
pciBridge0.pciSlotNumber 17
pciBridge4.pciSlotNumber 21
pciBridge5.pciSlotNumber 22
pciBridge6.pciSlotNumber 23
pciBridge7.pciSlotNumber 24
scsi0.pciSlotNumber 160
usb.pciSlotNumber 32
ethernet0.pciSlotNumber 192
以太网1.pciSlotNumber 224
以太网2.pciSlotNumber 256
ehci.pciSlotNumber 33
vmci0.pciSlotNumber 34
sata0.pciSlotNumber 35
scsi0.sasWWID 50 05 05 64 2e 0d f7 a0
ethernet0.generatedAddressOffset 0
以太网1.generatedAddressOffset 10
ethernet2.generatedAddressOffset 20
vm.genid 8985267772027956372
vm.genidX 7658496339281961829
监视器.phys_bits_used 43
vmotion.checkpointFBSize 4194304
vmotion.checkpointSVGAPrimarySize 4194304
softPowerOff FALSE
usb:1.速度 2
usb:1.存在 TRUE
usb:1.设备类型集线器
usb:1.端口 1
usb:1.父级-1
工具安装管理器.lastInstallError 0
工具.remindInstall FALSE
工具安装管理器.更新计数器 5
svga.guestBackedPrimaryAware TRUE
ethernet3.generatedAddressOffset 30
usb:0.存在 TRUE
usb:0.设备类型隐藏
usb:0.端口 0
usb:0.父级-1
ethernet4.generatedAddressOffset 40
客人信息.驱动程序.vmci.版本 9.8.16.0
来宾信息.驱动程序.vmxnet3.版本 1.8.16.0
vmware.tools.内部版本 10279
vmware.tools.required版本 10279
迁移.hostLogState 无
迁移.迁移ID 0
迁移.hostLog ./N-d4a539e0.hlog
  • 4 个以太网端口(从 ESXI 中的 e1000 传递过来),每个端口都标识为 Intel 82574L。所有这些端口都运行良好(获取 IP 地址,可以从 Windows 服务器与外部进行通信)。
  • 没有特定的防火墙软件
  • 运行 VirtualBox 6.0.14(最新版),但今年早些时候也尝试过旧版本
  • 全面更新至最新的 Windows 补丁

我的 Ubuntu 安装(作为 VirtualBox 上的客户机):

  • Ubuntu Server 18.04 LTS x64,但也尝试过其他版本。我现在只是想通过 Ubuntu 安装程序获取 IP 地址,但也尝试过完整安装。Ubuntu 客户端确实“看到”了适配器,但没有获取 IP 地址,而客户端所配备的 VLAN 上正在运行 DHCP 服务器(Windows 2016 主机确实在同一接口上获取了 IP 地址)。

在 Windows 2016 机器上使用 Wireshark 进行调试时,我可以看到 Ubuntu 客户机正在使用正确的“公共互联网”以太网适配器,并在此接口上发送 DHCP 请求。我确信是 Ubuntu 客户机发送了 ARP,因为 MAC 地址与我在 VirtualBox 选项中设置的 MAC 地址相匹配(我也尝试使用默认的随机 MAC)。在 Ubuntu 上设置固定 IP 地址时,它会广播 ARP 请求以查找网关,但无济于事。

我试过了:

  • 使用 VirtualBox 提供的 n=6 个不同的适配器选项,包括半虚拟化选项
  • 卸载 VirtualBox 并重新安装(密切注意“桥接网络”选项是否已启用)
  • 为 Windows 2016 机器添加一个新适配器,专门用于 VirtualBox
  • 禁用上述适配器的所有属性(NDIS6 网络驱动程序除外)
  • 将网络适配器从 e1000 更改为 Win 2016 计算机的 vmxnet3
  • 向 Ubuntu 客户机添加“仅主机以太网适配器”(如建议)这里
  • 在 Windows 2008 兼容模式下运行 VirtualBox(按照建议这里
  • 在 VirtualBox 上启用混杂模式(“全部允许”)
  • 确认我以管理员身份运行所有程序(我是)
  • 验证 Windows 2016 防火墙是否已关闭(已关闭)
  • 在 VMware Workstation 中运行所有内容(同样的问题)

有任何线索表明该问题可能由什么原因造成或者下一步该尝试什么吗?

答案1

两个都Promiscuous mode Forged transmits需要在 ESXI 中为客户机提供的端口配置上启用。

ESXI 中的端口组配置

在 VirtualBox 客户机上,不需要混杂模式。

更多信息伪造传输

当网络适配器开始发送将自己标识为其他人的流量时,就会发生伪造传输。此安全策略会比较虚拟网络适配器的有效地址和虚拟机生成的 802.3 以太网帧内的源地址,以确保它们匹配。如果它们不匹配,则会发生伪造传输 - 有时这被称为 MAC 模拟。如果伪造传输的安全策略设置为拒绝,则帧将被丢弃。

等等混杂模式

在嵌套 ESXi 环境中,您可以拥有嵌套虚拟机,发往这些虚拟机的网络数据包的目标 MAC 地址将与嵌套 ESXi vmnic 的 MAC 地址不同。因此,如果未启用混杂模式,物理 ESXi 主机的虚拟交换机将丢弃数据包。混杂模式允许底层嵌套 ESXi VM vmnic 监控其连接到的虚拟交换机的所有流量,从而提供与底层嵌套虚拟机的连接。

请注意,启用混杂模式可能会对性能造成影响。

相关内容