/ OpenWrt

如何在#VMWare #ESXi 6.7上安装OpenWrt虚拟机充当旁路由

生命在于折腾~

1. 从哪里下载OpenWrt固件

可以从很多地方下载OpenWrt,也可以选择自己编译。
本指南选用的是Lean的Openwrt版本,里边已经集成了一些常用的ipk插件。

选择已经编译好的固件:

https://github.com/coolsnowwolf/lede/releases

VMWare-ESXi-Install-OpenWrt-01

关于这个版本的一些信息:

  • 默认登陆IP 192.168.1.1
  • 用户 root
  • 密码 password
  • 内核 4.19.108

2. 将OpenWrt固件镜像(.img)转换为VMWare EXSi支持的.vmdk格式文件

下载rar解压后,得到的是.img镜像文件, 例如

openwrt-R20.4.8-x64-combined-squashfs.img

由于VMWare EXSi并不支持直接从img镜像创建虚拟机,我们需要先将.img文件转换为.vmdk文件。

如何将img文件转换为vmdk呢?

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

1). 安装qemu-img

  • MacOS 安装qemu-img
brew install qemu-img
  • Linux安装qemu-img
yum -y install qemu-img
  • Windows 安装 qemu-img

https://cloudbase.it/qemu-img-windows/

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

打开命令行,然后输入

qemu-img convert -f raw -O vmdk <OpenWrt固件镜像>.img <目标新文件名>.vmdk
例如
qemu-img convert -f raw -O vmdk openwrt-R20.4.8-x64-combined-squashfs.img openwrt-R20.4.8-x64-combined-squashfs.img.vmdk

注意
qmeu-img只能将.img文件转换为VMWare Player、VMWare Fushion或者VMware Workstation支持的磁盘文件格式。

对于ESXi,直接使用的话,是会报错的,需要按照以下步骤再次转换。

无法打开虚拟机的电源。磁盘类型不受支持或无效。请确保磁盘已导入。

VMWare-ESXi-Install-OpenWrt-02

参考: https://xmanyou.com/vmware-esxi-unsupported-disk-type/

3). 上传到VMWare EXSi主机的数据存储空间。

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

hdd->iso->openwrt->openwrt-R20.4.8-x64-combined-squashfs.img.vmdk

VMWare-ESXi-Install-OpenWrt-03

VMWare-ESXi-Install-OpenWrt-04

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

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

VMWare-ESXi-Install-OpenWrt-05

ssh <用户>@<ESXi主机>

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

ssh root@192.168.1.11
cd vmfs/volumes/hdd/iso/openwrt/
ls openwrt-R20.4.8-x64-combined-squashfs.img.vmdk

VMWare-ESXi-Install-OpenWrt-06

5). 使用vmkfstools将不支持的.vmdk转换为ESXi支持的.vmdk格式

vmkfstools -i <旧的.vmdk> <新的.vmdk>

例如

vmkfstools -i openwrt-R20.4.8-x64-combined-squashfs.img.vmdk openwrt-R20.4.8-x64-combined-squashfs.img.exsi6.vmdk

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

6). 备份.vmdk文件

到这一步,ESXi虚拟机支持的OpenWrt镜像文件就准备完成了。
但是为了避免出现问题需要重装,最好是将转换好的.vmdk文件,在数据存储中做个备份。

3. 安装OpenWrt虚拟机

3.1. 创建系统

选择Linux/其他Linux(64位)

VMWare-ESXi-Install-OpenWrt-07

VMWare-ESXi-Install-OpenWrt-08

3.2. 删掉默认的硬盘,设置好cpu和内存

默认的硬盘可以删掉。
CPU和内存根据需要设置。我设置的1CPU和2G内存。

3.3. 添加OpenWrt vmdk文件作为硬盘

VMWare-ESXi-Install-OpenWrt-09

选择刚刚已经转好的ESXi支持的OpenWrt vmdk文件。

注意: 最好是做个备份。

VMWare-ESXi-Install-OpenWrt-10

再检查一下选择的vmdk是ESXi支持的那个。

VMWare-ESXi-Install-OpenWrt-11

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

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

VMWare-ESXi-Install-OpenWrt-12

3.4. 在EXSi控制台中修改OpenWrt的网卡ip

OpenWrt系统启动以后,由于默认是192.168.1.1。这个ip一般是不可用的,需要在ESXi控制台中进行修改。

vi /etc/config/network

找到 192.168.1.1,修改成可用的ip,并重启OpenWrt系统。

不熟悉vi命令的同学,可以按照以下步骤操作:

  • 移动光标到192.168.1.1
  • 按下i,进入编辑模式
  • 把192.168.1.1 改成你的ip,比如我用192.168.1.5
  • 按下ESC,退出编辑模式
  • 按下冒号和wq(:wq),保存并退出
  • 输入reboot重启

VMWare-ESXi-Install-OpenWrt-13

重启后,输入以下命令,确认ip修改完成。

cat /etc/config/network

VMWare-ESXi-Install-OpenWrt-14

3.5. 通过浏览器访问OpenWrt管理界面

ip修改成功后,就可以在浏览器里访问OpenWrt管理界面了。
在浏览器里输入刚刚修改的OpenWrt IP,例如192.168.1.5。看到登录界面,就表示之前的设置正常:
默认的用户是 root,密码 password

VMWare-ESXi-Install-OpenWrt-15

登录后,可以看到系统的状态

VMWare-ESXi-Install-OpenWrt-16

4. 设置网关和DNS,解决OpenWrt IPv4 WAN 未连接状态

在系统状态中可以看到,IPv4 WAN 状态为:未连接

VMWare-ESXi-Install-OpenWrt-17

如果在OpenWrt管理界面中,使用网络->诊断,进行网络诊断,发现报错: 错误的地址

ping: bad address 'openwrt.org'

VMWare-ESXi-Install-OpenWrt-18

如果在OpenWrt诊断工具中,直接ping ip,则报错:网络无法连接

PING 139.59.209.225 (139.59.209.225): 56 data bytes
ping: sendto: Network unreachable

VMWare-ESXi-Install-OpenWrt-19

这表明,OpenWrt无法进行域名解析,也无法与外网联通。

需要打开网络->接口,为OpenWrt的网络接口添加网关和DNS。

将默认的LAN接口的网关和DNS都配置为物理路由器所在地址,例如 192.168.1.1。

VMWare-ESXi-Install-OpenWrt-20

VMWare-ESXi-Install-OpenWrt-21

配置好后,返回到系统状态,可以看到IPv4 WAN状态是已连接。

VMWare-ESXi-Install-OpenWrt-22

再次进行网络诊断,可以正常解析域名和访问了。

VMWare-ESXi-Install-OpenWrt-23

OpenWrt的配置就算完成了。

5. 如何使用OpenWrt充当旁路由

安装了OpenWrt虚拟机之后,网络上存在2个路由器:

  • 物理路由器 192.168.1.1
  • OpenWrt路由器 192.168.1.5

要使用OpenWrt作为旁路由,来绕过一些网络限制,最简单的方法是:

方法1. 将客户端的ip设置为静态,并将网关设置为OpenWrt的ip使用OpenWrt作为路由器

VMWare-ESXi-Install-OpenWrt-24

修改网关后,能正常访问网络,表示配置成功。

使用traceroute命令,可以看到,首先走的是OpenWrt的ip

VMWare-ESXi-Install-OpenWrt-25

方法2. 在主路由上设置客户端连接时的默认网关为OpenWrt的ip,则可以实现自动路由。

这个方法,需要主路由器支持,不是所有的都可以。

以上,在EXSi上安装OpenWrt虚拟机并充当旁路由,就完成了。

6. 参考文献

本文同步发表在公众号上:https://mp.weixin.qq.com/s/fExmkKRukGfdxU5gNEa0og