问题描述
笔者在安装了 VMware16 后,出现了宿主机托盘中的wifi图标消失、宿主机无法上网、设备管理器中wifi网卡出现43代码错误等情况。在网上搜索良久,找到的解决方法大多为卸载 VMware16 然后清除注册表中的VMware记录等操作,参考性不是很大。
解决问题前需要知道的知识
设备能够上网的前提是网卡能正常工作。可通过windows系统中的 设备管理器 来进行查看网卡的状态,如下如所示:
由上图可知:vmware16 会在windows机器上安装两个虚拟网卡VMnet1和VMnet8(这两个虚拟网卡保证了虚拟机能够使用网络服务,但也会带来问题,后面会解释)
注:一般而言,网卡是不会轻易坏掉的,在vmware16安装后,设备管理器中与wifi相关的网卡可能会报错,但如果你尝试更新wifi网卡,系统又会提示你已经安装了。(此时不用担心,wifi网卡肯定是正常的,报错是 vmware16 所导致的)
通过在终端中输入 ipconfig 命令可以查看所有网卡的使用情况,比如在下图中可以看到两个虚拟网卡和wifi网卡各自所在的网段。
采用 wifi 上网时,wifi网卡(也就是上图中的【无线局域网适配器WLAN】)会处理携带网络请求的数据包,所以要确保数据包能够被正常发送到 wifi 网卡所在的 ip。
通过 route print 命令可以查看本台机器上的路由表状态,路由表中包含了数据包会被哪个网卡处理的信息,如下图所示:
宿主机无法使用网络的原因大概率是:虚拟网卡占用了原来的WiFi网卡,导致所有的请求数据包都被发送到了不具备联网功能的虚拟网卡上,体现在路由表中就是 router print 命令执行后,输出的结果中没有wifi网卡所在的网段信息。
解决方法
知道了wifi网卡和虚拟网卡各自的功能,接下来可以开始解决问题了。
步骤1:禁用 虚拟网卡VMnet1和VMnet8
在设备管理器中,右键相应的网卡,将其禁用
注意要把两个虚拟网卡全部禁用
步骤二:关机,长按电源键20秒左右
关机后需要拔掉电脑的电源线、扩展坞、无线鼠标等外部设备,然后长按电源键20秒
(好吧,这一步其实也挺玄学的,我找不到啥科学依据,但亲测有效)
步骤三:开机
按照我的情况,开机后wifi就正常了,可以通过下面两个命令查看wifi网卡是否恢复正常:
# 查看 本机 ip 及网卡状态
ipconfig
# 查看路由表信息
route print
步骤四:手动开启虚拟网卡
在设备管理器中,启用之前的两个虚拟网卡
总结
由于我不是专业的网络工程师,所以我只能大致推断此问题的原因:vmware在初次安装后,会将虚拟网卡设置为默认网卡,在路由表中所有的ip发出的数据都会被定向到虚拟网卡。但由于虚拟网卡并不具备上网能力,所以宿主机就会体现出无网络的状态。
禁用虚拟网卡+关机是为了让路由表恢复到正常的状态(也就是将数据包请求重新定向到wifi网卡上)。
手动启用虚拟网卡后,与虚拟机相关的路由信息会插入到原有路由表的尾部,这样就不会影响到之前正常的路由配置。