Posted by 西维蜀黍 on 2020-06-27, Last Modified on 2022-12-10

Download

ISO

https://customerconnect.vmware.com/en/downloads/details?downloadGroup=ESXI70U3C&productId=974&rPId=84824 下载 VMware ESXi

集成第三方驱动

Refer to https://swsmile.info/post/Wmware-EXSI-add-network-adapter-driver/

不设置网卡直通

除了被设置为被用于管理ESXI的那个物理网络接口外,对于其他的每个物理网络接口,都新建一个 standard virtual switch,且

在我的情况中,

  • vmnic3 作为 ESXI 的管理接口,对应物理接口 ETH3
  • Vmnic0 新建了一个名为 1 的standard virtual switch,对应物理接口 ETH2
  • Vmnic1 新建了一个名为 2 的standard virtual switch,对应物理接口 ETH0
  • Vmnic2 新建了一个名为 3 的standard virtual switch,对应物理接口 ETH1

OpenWrt LAN 系列端口组开启了混杂模式,具备监控虚拟网络流量的能力,当其中某个虚拟交换机收到 MAC 帧时,会将此帧转发复制到 OpenWrt br-lan(用于 LAN 口设备桥接的虚拟网络,使多个虚拟或物理网络接口的行为好像他们仅有一个网络接口一样),然后再由内部网桥系统决定如何处理(转发到某个 LAN 口还是路由至 WAN 上)。如果 OpenWrt LAN 端口组不开启混杂模式,由于虚拟交换机不具备 MAC 地址学习能力,将丢弃需要转发的 MAC 帧,OpenWrt 将无法接收和转发数据流量。

进一步解释 混杂模式 作用:因为虚拟交换机不像传统物理交换机,它不具备 MAC 学习功能力:vSwitch 所有接入端口的设备(VMs)是预先配置好的,虚拟交换机它知道这些接入端口组的接口的 MAC 地址,而不需要根据数据包的源 MAC 来更新 MAC 与 PORT 的映射。因此,在混杂模式未开启情况下,如果目标 MAC 不属于该虚拟交换机,那么虚拟交换机将丢弃该数据包。虚拟交换机或端口组开启混杂模式后,所属的 PORT 将收到虚拟交换机上 VLAN 策略所允许的所有流量。这种特性可用来监控虚拟网络流量。

再对每一个 virtual switch都分别创建一个 port group,则有

额外再添加Network Adapter 到虚拟机中

安装OpenWrt

from https://downloads.openwrt.org/releases/21.02.2/targets/x86/generic/ 下载 generic-squashfs-combined.img.gz,并解压出其中的 .img。

  • combined:文件系统+内核;
  • rootfd:只有文件系统,无内核;
  • vmlinuz:只是内核,没有文件系统。

生成镜像

Windows下

可以直接使用StarWind V2V Converte,将 img 文件转换为 vmdk 文件(ESXi 虚拟机硬盘文件),通过Local file - 选择此前下载好的镜像文件 - VMware ESX server image - Next > - Next >,最后生成两个 ESXi 专用镜像文件:

  • openwrt-21.02.2-x86-generic-generic-squashfs-combined-esxi7.vmdk
  • openwrt-21.02.2-x86-generic-generic-squashfs-combined-esxi7-flat.vmdk

masOS下

$ gunzip openwrt-21.02.2-x86-generic-generic-ext4-combined.img.gz

使用qemu-img工具,可以将.img镜像文件转换为.vmdk VMWare磁盘文件。

macOS 安装qemu-img

$ brew install qemu

使用qemu-img命令来转换img文件为.vmdk文件

打开命令行,然后输入

qemu-img convert -f raw -O vmdk <OpenWrt固件镜像>.img <目标新文件名>.vmdk
# 例如
qemu-img convert -f raw -O vmdk openwrt-21.02.2-x86-generic-generic-ext4-combined.img openwrt-21.02.2-x86-generic-generic-ext4-combined.vmdk

注意

  • qmeu-img只能将.img文件转换为VMWare Player、VMWare Fushion或者VMware Workstation支持的磁盘文件格式。
  • 对于ESXi,直接使用的话,是会报错的,需要按照以下步骤再次转换。

进入 ESXi 系统的 Web 管理页面,点击 存储 - 数据存储浏览器 - 创建目录,创建一个存储 OpenWrt 镜像和其它配置文件的目录,这里我们将其命名为 OpenWrt

打开数据存储浏览器,把刚刚转换好的.vmdk文件上传到数据存储空间。

路径是 sw_datastore/OpenWrt/openwrt-21.02.2-x86-generic-generic-ext4-combined.vmdk

用SSH连接ESXi服务器,并找到上传的OpenWrt的.vmdk文件

首先,如果没有开启ssh服务,找到 导航器->主机->管理->服务->TSM-SSH,如果是已停止状态,则启动TSM-SSH服务。

ssh <用户>@<ESXi主机>

找到刚刚上传的OpenWrt的.vmdk文件

$ ssh root@192.168.1.11
[root@localhost:~] cd vmfs/volumes/sw_datastore/
.sdd.sf/  OpenWrt/
[root@localhost:~] cd vmfs/volumes/sw_datastore/OpenWrt/
# 使用vmkfstools将不支持的.vmdk转换为ESXi支持的.vmdk格式
[root@localhost:/vmfs/volumes/62371dc9-d12b4174-4dab-60beb4007eae] vmkfstools -i openwrt-21.02.2-x86-generic-generic-ext4-combined.vmdk openwrt-21.02.2-x86-generic-generic-ext4-combined-esxi7.vmdk
Destination disk format: VMFS zeroedthick
Cloning disk 'openwrt-21.02.2-x86-generic-generic-ext4-combined.vmdk'...
Clone: 100% done.

[root@localhost:/vmfs/volumes/62371dc9-d12b4174-4dab-60beb4007eae] ls
openwrt-21.02.2-x86-generic-generic-ext4-combined-esxi7-flat.vmdk  
openwrt-21.02.2-x86-generic-generic-ext4-combined.vmdk
openwrt-21.02.2-x86-generic-generic-ext4-combined-esxi7.vmdk

# 备份一下这两个文件到本地电脑

注意,如果不是用ESXi虚拟机,而是VMWare Player等软件,则不需进行这一步。

创建虚拟机

添加刚才生成的 openwrt-21.02.2-x86-generic-generic-ext4-combined-esxi7.vmdk 文件作为Existing hard disk

  • 删除默认给配的硬盘1
  • CD/DVD驱动器1

添加虚拟网卡

如果需要的话,添加直通网卡

完成创建,就可以打开电源了。

等控制台不再刷新以后,按下回车,如果出现下边的画面,表示安装成功了。

WAN的防火墙设置为WAN

Ref

Troubleshoot

虚拟机中无法监测到任何网卡

在创建OpenWrt 虚拟机时,已经添加了两个 Network Adapter,但是进入虚拟机后,用ip link并没有任何网卡。

解决:

修改 Network Adapter 的 Adapter Type 为 E1000,重启虚拟机后,即可在虚拟机中正确识别到网卡

ESXI 设置

自动启动

Reference