如何在#VMWare #ESXi 6.7上安装OpenWrt虚拟机充当旁路由
生命在于折腾~
1. 从哪里下载OpenWrt固件
可以从很多地方下载OpenWrt,也可以选择自己编译。
本指南选用的是Lean的Openwrt版本,里边已经集成了一些常用的ipk插件。
选择已经编译好的固件:
关于这个版本的一些信息:
- 默认登陆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
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,直接使用的话,是会报错的,需要按照以下步骤再次转换。
无法打开虚拟机的电源。磁盘类型不受支持或无效。请确保磁盘已导入。
参考: https://xmanyou.com/vmware-esxi-unsupported-disk-type/
3). 上传到VMWare EXSi主机的数据存储空间。
打开数据存储浏览器,把刚刚转换好的.vmdk文件上传到数据存储空间。
假设路径是
hdd->iso->openwrt->openwrt-R20.4.8-x64-combined-squashfs.img.vmdk
4). 用SSH连接ESXi服务器,并找到上传的OpenWrt的.vmdk文件
首先,如果没有开启ssh服务,找到 导航器->主机->管理->服务->TSM-SSH,如果是已停止状态,则启动TSM-SSH服务。
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
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位)
3.2. 删掉默认的硬盘,设置好cpu和内存
默认的硬盘可以删掉。
CPU和内存根据需要设置。我设置的1CPU和2G内存。
3.3. 添加OpenWrt vmdk文件作为硬盘
选择刚刚已经转好的ESXi支持的OpenWrt vmdk文件。
注意: 最好是做个备份。
再检查一下选择的vmdk是ESXi支持的那个。
完成创建,就可以打开电源了。
等控制台不再刷新以后,按下回车,如果出现下边的画面,表示安装成功了。
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重启
重启后,输入以下命令,确认ip修改完成。
cat /etc/config/network
3.5. 通过浏览器访问OpenWrt管理界面
ip修改成功后,就可以在浏览器里访问OpenWrt管理界面了。
在浏览器里输入刚刚修改的OpenWrt IP,例如192.168.1.5。看到登录界面,就表示之前的设置正常:
默认的用户是 root,密码 password
登录后,可以看到系统的状态
4. 设置网关和DNS,解决OpenWrt IPv4 WAN 未连接状态
在系统状态中可以看到,IPv4 WAN 状态为:未连接
如果在OpenWrt管理界面中,使用网络->诊断,进行网络诊断,发现报错: 错误的地址
ping: bad address 'openwrt.org'
如果在OpenWrt诊断工具中,直接ping ip,则报错:网络无法连接
PING 139.59.209.225 (139.59.209.225): 56 data bytes
ping: sendto: Network unreachable
这表明,OpenWrt无法进行域名解析,也无法与外网联通。
需要打开网络->接口,为OpenWrt的网络接口添加网关和DNS。
将默认的LAN接口的网关和DNS都配置为物理路由器所在地址,例如 192.168.1.1。
配置好后,返回到系统状态,可以看到IPv4 WAN状态是已连接。
再次进行网络诊断,可以正常解析域名和访问了。
OpenWrt的配置就算完成了。
5. 如何使用OpenWrt充当旁路由
安装了OpenWrt虚拟机之后,网络上存在2个路由器:
- 物理路由器 192.168.1.1
- OpenWrt路由器 192.168.1.5
要使用OpenWrt作为旁路由,来绕过一些网络限制,最简单的方法是:
方法1. 将客户端的ip设置为静态,并将网关设置为OpenWrt的ip使用OpenWrt作为路由器
修改网关后,能正常访问网络,表示配置成功。
使用traceroute命令,可以看到,首先走的是OpenWrt的ip
方法2. 在主路由上设置客户端连接时的默认网关为OpenWrt的ip,则可以实现自动路由。
这个方法,需要主路由器支持,不是所有的都可以。
以上,在EXSi上安装OpenWrt虚拟机并充当旁路由,就完成了。
6. 参考文献
- https://openwrt.org/docs/guide-user/virtualization/vmware
- https://kb.vmware.com/s/article/1028943
- https://github.com/coolsnowwolf/lede
本文同步发表在公众号上:https://mp.weixin.qq.com/s/fExmkKRukGfdxU5gNEa0og