本文详细介绍了如何在 ESXi 6.7 下部署最新版本 OpenWrt。基于 ESXi X86 设备构建的 OpenWrt 路由器是一种兼顾性能和敏捷性的软路由解决方案。

制作 OpenWrt ESXi 镜像

下载安装制作 ESXi 镜像的工具 StarWind V2V Converter

下载最新版本的 Stable Release OpenWrt 镜像。ESXi 一般运行在 X64 平台,因此镜像我们选择 x86/64 目标平台,文件系统选择 ext4。例如:https://downloads.openwrt.org/releases/18.06.1/targets/x86/64/openwrt-18.06.1-x86-64-combined-ext4.img.gz

解压缩包后,打开 StarWind V2V Converter – Local file – 镜像文件 – VMware ESX server image – Next > – Next >,最后生成两个 ESXi 专用镜像文件

  • openwrt-18.06.1-x86-64-combined-ext4.vmdk
  • openwrt-18.06.1-x86-64-combined-ext4-flat.vmdk

上传镜像

进入 ESXi Web 管理面,存储 – 数据存储浏览器

创建一个专用目录

上传先前创建的 2 个镜像文件到该目录。上传成功后两个镜像文件会呈现为一个硬盘

部署端口组

在创建 OpenWrt 虚拟机之前,你需要先为其设计好 WAN/LAN 网络架构。

假设 ESXi 主机有 N(N>1) 个硬件网络适配器,那么通常的做法是 1 个网口用于 WAN,N -1 个网口用于构建 LAN。博主的主机有 4 个物理网络适配器,下文以此为例

注意:默认的虚拟交换机、端口组请保持默认配置,谨慎编辑,否则无法远程连接到 ESXi

首先,包含默认的 vSwitch0 在内,创建 4 个虚拟交换机

编辑各个虚拟交换机,除了后续将被用于 WAN 的虚拟交换机 (本文是 vSwitch3) 保持默认设置外,用于部署 LAN 的虚拟交换机 (vSwitch0,vSwitch1,vSwitch2) 均开启安全选项中的混杂模式、MAC 地址修改、伪传输。

为每个虚拟交换机各自分配一个上行链路(物理网络适配器),从而与主机上的物理网口链接起来

最后,创建端口组 VM Network1 、VM Network2WAN Network,分别连接到之前创建的虚拟交换上。

其中,ESXi 默认的 VM Network0 默认已连接到 vSwitch0 (LAN 0 口);VM Network1VM Network2 分别连接到 vSwitch1vSwitch2WAN Network 连接到 vSwitch3 (WAN)

至此,完成端口组的配置。这些端口组后续将被 OpenWrt 虚拟机内的虚拟网络适配器使用。

为了方便读者理解上述操作,关于 ESXi 的虚拟网络逻辑架构,这里做简要介绍

VMs / 虚拟机
↓↑
Port Group / 端口组
端口是虚拟化中的概念,虚拟机实际上连接的是端口组(会在虚拟机内部实体化为相应的虚拟网络适配器)而非 vSwitch。如果把 vSwitch 类比于物理世界中的交换机,那么端口组则类似于为交换机上的一组端口,因而可以借助逻辑上的分组功能实现 VLan ——在 ESXi 的管理界面中为不同的端口组分配不同的 VLan ID 即可。
↓↑
vSwitch / 虚拟交换机
可以类比物理世界的交换机来理解它
↓↑
Physical NICs / 硬件网络适配器
vSwitch只有链接至硬件网卡才能与物理世界通讯。如果某个 vSwitch 没有链接至任何一个硬件网卡,那么该 vSwtich 中的虚拟机只能与该 vSwitch 中的其他虚拟机通信,而不能与外界通信,相当于组建了一个虚拟的内网。

创建 OpenWrt 虚拟机

ESXi Web 管理面,虚拟机 – 创建/注册虚拟机

创建新虚拟机

我的配置如下
2 CPU
256 RAM
移除默认的硬盘,点击添加硬盘,添加一个现有硬盘。选择先前上传的 openwrt-18.06.1-x86-64-combined-ext4.vmdk,硬盘选项保持默认。

添加网络适配器

编辑虚拟机,将引导选项改为 BIOS

注意:如果使用默认的 EFI 引导,OpenWrt 将无法启动,报如下错误
Attempting to start up from:
→ EFI Virtual disk (0.0) ... unsuccessful.
→ EFI Network... unsuccessful

打开虚拟机电源,OpenWrt 正常启动。

配置 OpenWrt

现在,要让 OpenWrt 虚拟机内的 4 个虚拟网络适配器正确连接到先前部署的 WAN/LAN 端口组。

查看并记住 OpenWrt 虚拟机连接到 WAN Network 的虚拟网络适配器 MAC 地址

在 ESXI 虚拟机控制台执行以下命令,查找上述 MAC 地址对应的网络适配器

ifconfig -a | less

如图所示,可以看到是 eth1

提示:如果 OpenWrt 控制台反复回显标准输出,导致控制台内容被覆盖,执行 /etc/init.d/network stop 可减少标准输出

编辑 /etc/config/network 按照对应关系,将 eth1 配置为 wan 接口,eth0eth2eth3 分配为 lan 接口,并为 lan 开启 bridge,使 LAN 下所有的物理网口桥接到一起。

# vim /etc/config/network 

config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config globals 'globals'
option ula_prefix 'fdaf:b952:d594::/48'

config interface 'lan'
option type 'bridge'
option ifname 'eth0 eth2 eth3'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
option _orig_ifname 'eth3'
option _orig_bridge 'true'

config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'

config interface 'wan6'
option ifname 'eth1'
option proto 'dhcpv6'

编辑完后执行以下命令使配置生效

# /etc/init.d/network reload

最后,电脑网线连接到主机的任意一个 lan 物理网口,浏览器输入 192.168.1.1 即可访问 OpenWrt 虚拟机的 LuCI 管理面。

发表评论

电子邮件地址不会被公开。 必填项已用*标注