Linux虚拟机安装OpenWrt,核心只有三步:准备固件、转换磁盘格式、创建虚拟机并配置网络,只要选对固件、把虚拟网卡设为桥接模式,几分钟就能让OpenWrt跑起来。
安装OpenWrt前需要准备哪些文件?
这一节解决的是“手里有什么才能开工”的问题,很多人卡在第一步,是因为不知道OpenWrt有不同固件类型,也不知道虚拟机到底认哪种镜像。
固件选择有讲究
OpenWrt官方提供多种平台镜像,针对虚拟机安装,认准 x86/64 generic 这个分类即可,下载时你会看到generic-ext4-combined.img.gz、generic-squashfs-combined.img.gz,两者都能用,区别在于分区格式。squashfs固件自带只读压缩文件系统,重置配置方便,适合新手;ext4固件是可读写分区,方便自己调整分区大小,适合爱折腾的老手,建议下载squashfs版,遇到配置搞砸了,恢复出厂比较省心。
镜像文件是.img.gz压缩包,虚拟机不能直接引导,你得先解压,再把它转成VMware或VirtualBox认识的虚拟磁盘格式。
网络模式先想清楚
安装前还要决定“这台OpenWrt在虚拟机里扮演什么角色”,如果你打算把它当作主软路由,需要让虚拟机直接接入物理网络,那么虚拟网卡必须选桥接模式,并且至少分配两张网卡:一张当WAN接光猫,一张当LAN接局域网,如果只是做实验学习,用NAT模式隔离在宿主机内部也行,但后面配置WAN口会稍有不同,行业共识认为,桥接模式最接近真实路由器的工作环境,排查问题最省力。
VMware安装OpenWrt配置步骤详解
VMware Workstation是Linux宿主机上最常见的桌面虚拟机工具,下面这套流程同样适用于VirtualBox,只是菜单名称略有差异。
第一步:创建Linux虚拟机和虚拟磁盘
打开VMware,新建虚拟机,选择“自定义”,操作系统选 Linux,版本选“其他Linux 4.x或更高版本内核”,内存建议给 512MB 就够,OpenWrt很轻量,给多了反而浪费宿主机资源,硬盘类型选SCSI或SATA均可,后面我们会挂载现有虚拟磁盘文件,所以这里可以创建一个临时的小盘(比如1GB),或者直接选择“稍后添加磁盘”。
先不要启动虚拟机,编辑虚拟机设置,删除自动新建的硬盘,添加硬盘”,选择“使用现有虚拟磁盘”,指向我们接下来要转换出来的.vmdk文件,这一步是整个linux虚拟机安装openwrt教程里最容易出错的地方很多人忘了删掉空白磁盘,导致OpenWrt启动后挂载了错误的分区。
第二步:把OpenWrt镜像转成VMware格式
在Linux终端里,先解压固件:
gunzip openwrt--generic-squashfs-combined.img.gz
解压后会得到一个.img文件,接着用qemu-img工具把它转换成VMware的.vmdk格式:
qemu-img convert -f raw -O vmdk openwrt-.img openwrt.vmdk
如果宿主机还没装qemu-img,Debian/Ubuntu下执行sudo apt install qemu-utils,CentOS/RHEL下执行sudo yum install qemu-img,转换过程大概几十秒,完成后会生成一个比原镜像略大的.vmdk文件,这里有个小坑:VMware识别的.vmdk格式有多种类型,qemu-img默认生成的是“单文件流式”的VMDK,VMware能读,但如果有兼容问题,可以加参数-o compat6强制使用老版本格式。
VirtualBox用户不需要转VMDK,直接用qemu-img convert -O vdi转成VDI镜像,或者用VirtualBox自带的VBoxManage convertfromraw命令。
第三步:OpenWrt虚拟机网络设置与启动
回到VMware虚拟机设置,网络适配器选择“桥接模式”,如果计划双网卡,就添加两个网络适配器,第一块选桥接(WAN),第二块选仅主机(LAN),注意顺序不要搞反,因为OpenWrt默认把第一个网口当LAN,第二个当WAN,实际情况下物理机网卡只有一块也能做实验,但要做透明代理之类的功能还是建议双网卡。
启动虚拟机,屏幕上会滚动一串Linux内核日志,最后停在Press Enter to activate this console
,按回车,进入OpenWrt的命令行终端,此时默认IP是 168.1.1,但你的物理局域网可能已经占用了这个网段,需要先把它改掉才能通过浏览器访问,在终端里编辑网络配置:
vi /etc/config/network
找到config interface 'lan'段落,把option ipaddr '192.168.1.1'改成当前局域网不冲突的地址,比如168.31.250,掩码保持255.255.0,保存退出后重启网络:
/etc/init.d/network restart
如果网卡驱动正常,现在你就能从宿主机或同网段的另一台电脑,用浏览器访问这个新IP了,看到LuCI管理界面,说明OpenWrt虚拟机已经成功运行。
OpenWrt启动后的常规配置
系统起来了,离能用还差两步:一是通过Web界面确认接口状态,二是设置好防火墙和DHCP。
修改Lan口IP和DHCP范围
登录LuCI后,进入“网络-接口”,如果只有一块网卡,它会同时被标识为“LAN”和“WAN”,这对纯测试没问题,但要做路由器就建议再添加一个WAN接口,添加WAN口的操作是:在“接口”页点击“添加新接口”,名称填WAN,协议选“DHCP客户端”,物理设备选你之前设置的第二块虚拟网卡,保存并应用后,WAN口就能自动从上级路由获取IP。
Lan口保持静态地址,但需要手动设置DHCP地址池,在LAN接口的“DHCP服务器”选项卡里,起始地址设为100,结束地址设为199,这样就能避免和网关等静态设备冲突。
防火墙区域绑定
OpenWrt默认有三条区域规则:lan是trusted,wan是reject,如果你手动添加了WAN接口,必须去“网络-防火墙”把wan接口划入wan区域,否则内网无法通过OpenWrt上网,这也是vmware安装openwrt配置步骤中容易忽略的一环,操作很简单:防火墙页面选“编辑”,在“覆盖网络”里勾选WAN接口,保存应用即可。
OpenWrt虚拟机无法上网怎么办?
这是新手遇到最多的问题,现象五花八门:宿主机能访问LuCI,但虚拟机里的OpenWrt拨不上号;或者WAN口有IP,但局域网设备上不了网。
先按顺序排查:
- 检查物理网卡透传,桥接模式下,VMware需要宿主机的物理网卡支持混杂模式,在Linux宿主机上执行
ip link show,确认虚拟网卡状态是UP,如果是NO-CARRIER,说明虚拟网线没插好,回到虚拟机设置里重新勾选“连接”。 - 确认WAN口协议,很多宽带运营商绑定了MAC地址,OpenWrt的WAN口默认使用虚拟网卡的MAC,如果之前拨号的是另一台设备,会认证失败,用一个网卡地址看是否能连接。
- 检查防火墙覆盖区域,用串口或SSH登录OpenWrt,执行
iptables -t nat -L -n,看看有没有MASQUERADE规则,如果没有,说明防火墙的伪装没生效,去Web界面检查NAT设置。 - 最快的验证方法:在OpenWrt命令行里
ping 223.5.5.5,通说明路由和DNS正常;不通就在“接口”页面手动设置网关和DNS。
常见问题Q&A
Linux虚拟机安装OpenWrt和物理机安装有什么区别?
虚拟机安装不占用额外硬件设备,可以随时快照回滚,适合实验新配置,物理机安装需要专用的软路由硬件或旧电脑,性能更强,但要考虑网卡兼容性,对大多数人来说,先用虚拟机把OpenWrt玩明白,再决定是否上物理机,是成本最低的学习路径。
为什么OpenWrt虚拟机在VMware里启动后只有一个shell界面?
这是正常现象,OpenWrt默认不启动图形界面,shell就是它的操作入口,如果你想通过地址访问管理界面,需要先确保虚拟网卡桥接到一个有网络连接的宿主机接口,并确认OpenWrt的lan口IP在可达网段。
如何备份OpenWrt虚拟机配置?
最简单的方式是使用VMware的“快照”功能,在系统配置完后拍一个快照,以后出现问题随时回退,也可以在命令行下执行sysupgrade -b /tmp/backup.tar.gz打包配置文件,然后把文件下载到宿主机,恢复时执行sysupgrade -r /tmp/backup.tar.gz即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/638228.html





