最近在VMware 16中安装了Ubuntu 20.04.1 LTS桌面版,网络使用的是NAT模式,但是一直无法上网。最开始一直纠结于No Wi-FI Adapter Found这个问题,后来发现真正的问题所在其实和这个没关系,最后通过手动配置VMware中虚拟机的IP地址解决了NAT无法上网的问题。

No Wi-FI Adapter Found

最开始一直纠结这个问题:No Wi-FI Adapter Found
在这里插入图片描述

一直以为虚拟机里面上不了网是因为没有WIFI Adapter。然后就以No Wi-FI Adapter Found作为问题的关键词疯狂查找,试了各种方法,包括查本机的无线网卡,然后去找相应的驱动,然后想尽办法弄到VMware中的虚拟机中去安装。结果都不行。

什么是Wi-FI Adapter?Wi-FI Adapter就是无线网卡。VMware的虚拟化技术是虚拟出一台计算机,看起来和真实的一台机器也差不多,但是VMware无法将主机的硬件也虚拟化。主机有200G的空间,现在这个虚拟机的运行也要占用空间,假设这个虚拟机运行占用了10G空间,这是主机实打实的分配给虚拟机的,不是凭空虚拟出来的,这个硬件是不能共享的,如果当主机自身的空间都不够的时候,VMware还能成功虚拟出一台虚拟机吗,显然是不能的。同样的:我的主机有无线网卡,但是无线网卡只有一个,是我的主机在用,那就没有多余的无线网卡分配给虚拟机,因此虚拟机是没有无线网卡的。Vmware虚拟出一个虚拟机的时候,无法按照我主机的无线网卡配置给虚拟机也虚拟出一个真正可用的无线网卡。

说到底就是:虚拟机中根本就没有安装无线网卡,自然会出现No Wi-FI Adapter Found这个问题,除非我们往真实的笔记本上再插一个无线网卡,然后使用这个空闲的网卡来作为虚拟机的无线网卡,这样虚拟机才可以使用无线上网功能。

当我们使用NAT模式的网络时,Vmware会虚拟出一个以太网网卡,这个能说明Vmware可以虚拟硬件吗?

当然是不能。VMware虚拟出来的这个Adapter并不是真正意义上的网卡,虚拟出来的网卡不能提供真实网卡所具有的全部功能,它主要是提供地址转换的作用,虚拟机通过虚拟出来的以太网网卡来连接主机的真实网络,这个虚拟出来的以太网网卡只提供一个地址转换的作用。

来看看NAT网络转换的一个原理示意图。图片来源
在这里插入图片描述
通过NAT地址转换,虚拟机内也能上网。虚拟机看起来好像是连接上了VMnet8这个虚拟的以太网网卡,但实际上这根本不是网卡,我们的真实的主机能通过安装的以太网的网卡来连接互联网,这个虚拟的以太网卡能让虚拟机连接上我们的电脑,然后将我们的电脑的网络进行转换供虚拟机使用,说到底虚拟机还是在使用我主机的网络,虚拟机并不是通过这个虚拟的以太网卡来直接上网的。
在这里插入图片描述

问题以及解决方案

那为什么我用NAT模式无法上网呢?

最开始连不上网的时候一直这么提示:Activation of network connection failed
在这里插入图片描述
虚拟机中也一直提示:Activation of network connection failed
在这里插入图片描述

然后回到Vmware中的虚拟机,通过ifconfig命令可以查看到如下内容。

下面的usb0是我通过USB线连接手机,然后再连接虚拟机,通过USB来共享手机的网络。认真看了一下这张图,我发现了问题所在。通过usb共享网络,我能正常上网,然后发现usb的这个网络的ip地址,子网掩码这些都是有的,但是ens33这个无线网卡却没有,只有一个Mac地址,连IP地址都没有,ens33显然无法上网。
在这里插入图片描述
然后我查看了一下我配置的VMnet8的IP地址以及子网掩码。

在我的Windows电脑上查看了一下VMnet8这个网络连接。
在这里插入图片描述
点击VMware Virtual Ethernet Adapter for VMnet8的属性,可以看到VMware Virtual Ethernet Adapter for VMnet8的IP地址。
在这里插入图片描述
在VMware的网络设置中还可以看到VMnet8的网关地址等内容
在这里插入图片描述

然后尝试着给我的虚拟机手动配上IP地址以及子网掩码,网关地址这些内容。这些操作都可以在虚拟机的命令行中进行操作,但是我下面是在ubuntu的图形化界面中进行配置的。

打开设置,在网络这一栏点击如下内容。
在这里插入图片描述
IPv4 Method由DHCP修改为手动。然后在IPv4这一栏进行如下配置。由于我在VMnet8中配置的IP地址是192.168.76.1,连接VMnet8的虚拟机都必须与这个IP地址处于同一子网下,也就是说应该配置成192.168.76.x的形式,我这里将虚拟机的IP地址设置为192.168.76.10DNS服务器的IP地址设置为和网关(Gateway)相同就可以,均设置为VMware中配置的192.168.76.2.
在这里插入图片描述
为了以防万一,我还是使用了reboot命令重启了一下虚拟机。然后再次使用ifconfig命令查看,会发现ens33的IP地址已经配置好了。
在这里插入图片描述
图标这个地方也显示网络连接成功了。
在这里插入图片描述
然后ping一下百度,发现也可以ping通。
在这里插入图片描述
主机和VMware中的虚拟机也可以ping通了。
在这里插入图片描述
我的这个问题终于解决了!

验证VMnet并不是真正的网卡

我关闭了一切需要上网的应用。然后在VMware的虚拟机中ping百度这个网站。
在这里插入图片描述
然后打开我主机的任务管理器,查看性能状况。

会发现VMware Virtual Ethernet Adapter for VMnet8没有发生过任何数据的发送与接收,也就是说这个虚拟的网卡根本就没有连接上互联网,或者是说它根本就没有使用过网络。
在这里插入图片描述
只有我真实主机的无线网卡这里才有数据的接收,也就是说明我主机的那块真正意义上的物理网卡才是作为网卡在时刻工作着的,虚拟网卡也是使用的我主机的网络,它本身并不承担任何上网的工作。
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐