唐凌 发表于 2021-8-30 15:51:21

【装系统】在VMware ESXi虚拟机上折腾软路由

本帖最后由 tangptr@126.com 于 2021-9-2 18:09 编辑


# 前言
本文所说的虚拟机上折腾软路由的虚拟机平台为VMware ESXi(以下简称ESXI),而非VMware Workstation。
本人操作的ESXI版本为6.5,不是最新版。但原理相同。
本文不是傻瓜式教程,更不是全网最全ESXI折腾软路由教程。

# 下载软路由固件
不花钱折腾软路由可用的软路由系统有iKuai,或者是OpenWrt的软路由。
爱快软路由可以直接去[爱快的官网](https://www.ikuai8.com/component/download)下载。
(https://openwrt.club/dl)每个月都会更新他自己编译的OpenWrt系统。但是他分享的链接是谷歌网盘,部分网友访问相对困难。

**** Hidden Message *****

还有一种OpenWrt的来源是从(http://firmware.koolshare.cn/LEDE_X64_fw867/)去下载,适合所有【会使用互联网】的人下载。
如果你很会折腾,就自己编译OpenWrt吧。

# 配置ESXI网络体系
确保你安装的ESXI的机器有两个网口,否则你只能给装在ESXI里的虚拟机进行路由了。

## 配置管理网络
这一步是选择ESXI的管理网络所选的网卡。一般不需要特别的配置,因为如果默认的网口不是你想要的,把线交换插一下就行了。不过如果你的网卡区分百兆、千兆和万兆(或更高)的话就有必要特别设置了。
按F2进入配置页面,输入用户名密码后,选择`Configure Management Network`,再选择`Network Adapters`。用上下方向键和空格键来选择管理网络所使用的的网卡。
如果不确定要选哪张网卡,按D键查看网卡的详细信息,并结合网卡包装写的MAC地址判断你要用的网卡。
别忘了用空格切换网卡,最后按回车保存。

## 接线(物理)
把配置网络的那头接到内网的交换机上,另一头连接外网(在国内一般都是光猫了)。
我建议在装有ESXI的机器旁边放一台笔记本进行协同操作,让笔记本连接光猫的wifi以联通外网,随时下载你需要的东西,然后物理接线到交换机上实现控制ESXI。

## 接入ESXI
由于还没有路由器提供DHCP,因此当前的ESXI是没有获取到IP地址的。
回到`Configure Management Network`那里,进入`IPv4 Configuration`,选择`Set static IPv4 address and network configuration`,然后分别输入IP地址,子网掩码和默认网关。
同样地,控制ESXI的那台电脑的网卡也不会自动拥有IP地址。设置的时候别和ESXI的IP地址冲突,另外子网掩码和网关也不要设置歪了。
我选择配置`10.x.x.x`的网络,于是给网关`10.0.0.1`,给子网掩码`255.0.0.0`。

## 配置ESXI网络
6.5及以上版本的ESXI可以用浏览器控制。本文以ESXI 6.5的英文版界面为准。
选择`网络`->`虚拟交换机`,然后选择`添加标准虚拟交换机`,一般而言已经存在一个`vSwitch0`的虚拟交换机了,那么新建的虚拟交换机不妨就命名为`vSwitch1`。
一般而言,ESXI会自动给这个新建的虚拟交换机分配一个上行链路,如果没有就自己添加,如果不是就修改上行链路的网卡设备。
然后添加端口组,不妨命名为`Blyatiful Network`(气突苏,精俄狂喜),然后在虚拟交换机那里选择`vSwitch1`。
确认一下你创建的网络拓扑是否正确:
```
VM Network--------------+
                                    |----vSwitch0
Management Network------+

Blyatiful Network-------------vSwitch1
```

# 创建虚拟机
创建虚拟机的时候不要选择虚拟机是`Other`类型的操作系统,否则VMware会创建型号为`AMD 79C970 PCnet32 LANCE`的虚拟网卡。该虚拟网卡对应的物理版是一款十兆网卡,模拟起来非常吃CPU且性能很差。建议在创建虚拟机时选择`Ubuntu Linux`。
这个虚拟机必须要装有两张虚拟网卡,分别接到`VM Network`和`Blyatiful Network`上。
安装在ESXI上的虚拟机可以直接使用VMware Workstation控制。从网页端控制虚拟机的性能相当拉胯。

## 爱快软路由安装
在虚拟机里安装爱快比较符合绝大多数人给虚拟机装系统的经验。可以直接下载ISO文件然后上传到ESXI上。设置好虚拟机的光驱就可以进行安装了。
爱快是中文系统,故配置起来比较简单,这里只说三点:

1. 把WEB管理地址设置为`10.0.0.1`。
2. 设置网卡绑定的时候请确认好虚拟网卡的MAC地址,把`wan1`绑定到接到`Blyatiful Network`的虚拟网卡上,把`lan1`绑定到接到`VM Network`的虚拟网卡上。
3. 进入软路由的网页端后,网关、子网掩码,地址范围等不要配置错了。

爱快有个很二的地方就是64位的爱快要求必须有4GB以上的内存。

## OpenWrt安装
这是比较麻烦的过程,因为OpenWrt一般都没有ISO安装镜像。通常只有一个IMG的映像文件来让你直接写盘,所以很多人都会选择启动到PE后使用一些写盘工具实现安装。
不过这个方法虽然用在实机上很管用,但是在虚拟机上也这么搞的话,在我看来那就属于笨办法了。我们可以直接将IMG文件转换为VMware所用的vmdk磁盘映像。
这里需要两个“前置软件”:VMware Workstation和QEMU。可以分别去(https://www.vmware.com/go/getworkstation-win)和(https://www.qemu.org/download/#windows)的官网下载。
安装了这两个前置软件后需要把它们的目录添加到`Path`环境变量里方便操作。

### 转换镜像为VMDK
先用QEMU将IMG转换到VMDK,命令行代码如下:
```
qemu-img convert -f raw -O vmdk image.img image.vmdk
```
把`image.img`,`image.vmdk`关键字替换为你的镜像的文件名即可。
不过生成的IMG文件是`type=2`的vmdk文件,ESXI不认识这类的虚拟磁盘镜像。需要转换为`type=4`的vmdk。可以用VMware的小工具实现,命令行代码如下:
```
vmware-vdiskmanager -r image.vmdk -t 4 image-esxi.vmdk
```
执行完之后会生成`image-esxi.vmdk`和`image-esxi-flat.vmdk`的文件,把这两个文件一起传到ESXI上。
然后添加这个虚拟硬盘到虚拟机上。别忘了扩展硬盘容量(我扩展到了16G),否则虚拟机启动就卡死。

### 配置网络
OpenWrt属于Linux,故会一些Linux的话配置起来不难。
系统启动好之后,按回车进入控制台。
首先用`ifconfig`命令查看网卡。注意看网卡名称对应的MAC地址,然后比对ESXI上的配置。确认这两个网卡分别连接到了哪个端口组上。
这里假设`eth0`连接到了`VM Network`上,`eth1`连接到了`Blyatiful Network`上。

以下内容搬到OpenWrt实机软路由也是通的。
输入以下命令以编辑网络配置:
```
vi /etc/config/network
```

用`vi`编辑文本也谈不上很蛋疼。说几个基本功吧:
按`Insert`键退出命令模式进入编辑模式,可以用方向键移动光标,然后打字。
按`Esc`键退出编辑模式进入命令模式。
在命令模式里,输入并回车`:wq`以保存并退出;`:q`以退出但不保存;`:w`以保存但不退出。

说完基本功后开始配置。
修改`config interface 'lan'`这一栏的`option ifname`为`eth0`。
修改`config interface 'wan'`这一栏的`option ifname`为`eth1`。
由于我们要配置`10.x.x.x`的局域网,需要进一步配置`config interface 'lan'`这一栏:
修改`option ipaddr`后面的单引号内容为`10.0.0.1`
修改`option netmask`后面的单引号内容为`255.0.0.0`。
别忘了保存。
最后输入`shutdown -r now`重启软路由。

# 修改网卡类型
如果VMware真的给你创建了型号是`AMD 79C970 PCnet32 LANCE`的虚拟网卡,有两种方式修改虚拟网卡型号。

## 方法一:登陆ESXi Shell
首先得启用ESXi Shell才可以。在ESXI里按F2登陆后进入管理页面,选择`Troubleshooting Options`,分别对`Enable SSH`和`Enable ESXi Shell`按回车。然后就算是启用了ESXi Shell了。

### 本地ESXi Shell
也就是在ESXI上操作。按`Alt-F1`组合键以进入ESXi Shell。操作完成之后按`Alt-F2`组合键退出ESXi Shell。

### 远程ESXi Shell
其实就是SSH了。在你的电脑上输入`ssh root@ESXI地址`进入ESXi Shell。

### 修改虚拟机配置文件
成功进入ESXi Shell之后,输入以下命令进入磁盘目录:
```
cd /vmfs/volumes
```
用`ls`命令枚举所有存储设备。天蓝色标记出的为你在ESXI网页端控制界面上配置的存储设备。用`cd`命令切换到软路由虚拟机所在的存储设备里。
此时已经成功进入了存储设备,用`cd`结合`ls`命令查找虚拟机的`.vmx`文件。`ls`命令会将`.vmx`文件用绿色标记出来。然后用`vi`命令编辑它。
查找`ethernetX.virtualDev`行(其中X为数字)。如果没有就创建,将其修改为:
```
ethernetX.virtualDev = "e1000"
```
别忘了保存。

## 方法二:下载再上传
这是最直观的方法。直接在ESXI网页端的文件查看器里找到虚拟机的.vmx文件,下载下来,按前文所述修改好配置之后再上传回ESXI。

## 使用虚拟万兆网卡
或许你的机器是装了万兆网卡的,那么大可以设置一个万兆的软路由虚拟机。
让虚拟机使用万兆网卡并不一定非得直通一个物理网卡到虚拟机里。可以配置虚拟机使用特别的虚拟网卡。
同样是找到`ethernetX.virtualDev`行,将其修改为:
```
ethernetX.virtualDev = "vmxnet3"
```
这个`vmxnet3`网卡是VMware设计的半虚拟化高性能虚拟网卡。
不妨把你的其他虚拟机也设置使用`vmxnet3`网卡。但请注意,一定要安装`VMware Tools`,否则没有驱动。

# 切换路由系统
当你想更换软路由系统的时候,大可不必给软路由虚拟机重装系统,可以另外创建一个虚拟机进行测试,确保能用之后再切换。
本章也就是我所谓“如果只有一个网口那就只能给虚拟机路由了”。

## 添加空虚拟网络
添加的一个新的虚拟交换机,这个虚拟交换机不需要添加上联。可以直接命名为`vSwitchN`。(N表示Null)
同时添加一个叫`Null Network`的端口组,连接到`vSwitchN`上。

## 创建网络测试虚拟机
这个虚拟机装的操作系统可以是Windows,可以是Linux,总之一定要是你能熟练使用的。它的虚拟网卡必须连接到`Null Network`。

## 新软路由虚拟机
新的软路由虚拟机自然也要两张虚拟网卡,一个连接到`Blyatiful Network`,另一个连接到`Null Network`。

## 测试并切换
同时启动这两部虚拟机,按前文所述进行配置。
确保测试网络用的虚拟机在DHCP下能成功获取IP并能访问外网之后(比如能访问技术宅的结界论坛),将新软路由虚拟机连接到`Null Network`的网卡切换为连接到`VM Network`上。
然后将老软路由关机,将新软路由开机就可以了。

# 结语
将软路由虚拟机配置为随ESXI同时启动。
虚拟机的固件是该选BIOS还是UEFI取决于你下载的镜像,别搞混了。
建议把ESXI的服务器加入到IP静态分配里。
ESXI似乎没有免登录下载的渠道。

0xAA55 发表于 2021-8-31 03:01:02

没有两个网口的时候可以通过接交换机来实现扩增网口。

boykid 发表于 2022-2-20 20:36:21

谢谢分享。。

内网1 发表于 2022-9-28 20:06:12

正好要配置软路由了,来学习学习!
页: [1]
查看完整版本: 【装系统】在VMware ESXi虚拟机上折腾软路由