M1安装VMware Fusion13后无法连接虚拟网络/dev/vmnet8问题
问题
先说环境:Mac M1 Pro,macos Ventura 13.2.1 系统。
要安装软件版本:VMware Fusion13.0.1,安装后报错无法将“Ethernet0”连接到虚拟网络“/dev/vmnet8”
。
尝试重启电脑无果,尝试重新安装无果,经过一番搜索,发现大多数都是windows的解决方案,而且基本上没有 13 版本和 M1 的解决方案,自己尝试新建虚拟网络设备和重新添加网络适配器均无果,去官方的论坛里面查了查,没有得到一个有效的解决方案,搜了一下论坛的相关问题不是特别多,所以我猜测应该不是软件的 bug,可能是我自己的特例,尝试自己研究一下。
查找原因
首先分析问题原因,报错找不到 /dev/vmnet8
设备,这应该是一个虚拟网卡,使用 ifconfig -a
命令查询虚拟网卡,发现的确是没有。
问题切入点有了,检查是什么原因导致的,猜测应该是在创建虚拟机的时候会创建虚拟网卡,重新打开虚拟机几次,使用火绒剑监控系统操作,均未找到创建虚拟网卡的操作。
后来搜索的过程中,发现大家都会检查 vmnet 服务是否启动,查了一下,发现我的服务压根没有启动,所以猜测可能是 vmnet 服务在启动过程中发生了问题,可能报错了,但是因为是后台启动,没有发现。
我先去查了 Mac 的系统日志,因为没有报错,后台服务的日志可能在系统日志里面,但是没有查询到。
又猜测可能是在安装虚拟机的时候就创建了虚拟网络设备,遂使用火绒剑监控虚拟机安装操作,找到了这个脚本,猜测可能是服务初始化相关的服务。
发现在安装时会执行这个脚本,使用root权限手动执行
发现无法创建 vmnet1 设备的报错,接近问题核心了,查看脚本内容,看看都做了什么。
发现是通过 vmnet-cli
程序启动网络服务的,先使用 --configure
执行了一遍,后使用 --start
参数执行,猜测这里可能报错了,手动执行一遍。
发现的确是执行失败了,由于 vnmet-cli
程序是二进制程序,无法看到内部做了什么,去火绒剑过滤一下 vmnet
程序关联的操作,发现了这个下面的操作。
结合报错信息,猜测 vmnet-cli
这个程序会通过图中 ping 几个 ip 地址的操作判断当前的几个ip段是否被占用,如果被占用,则报错失败(实际上是没有被占用的)执行过程中也发现这个程序运行了好几秒后才报错的,正好看到这里 ping 了好多个 ip 段,正好时间能对上。
手动执行一下 ping 请求 ip 地址。
问题根源
发现竟然是通的,但是这几个 ip 段的确没有被用到,后来想到可能是 ClashX 的原因,关掉增强模式,再 ping 一下。
发现不通了,应该是通过 ping 命令检测 ip 段是否被占用导致了误判,重新安装 VMware Fusion13,安装成功,开启虚拟机,成功开启,没有报错,查看 vmnet 相关服务。
成功开启服务,查看 vmware 日志,成功创建虚拟网卡,ifconfig
查看一下虚拟网卡,成功创建虚拟网卡!
最终验证了猜测是对的,vmnet-cli 会通过 ping 几个 ip 段来确定这几个 ip 段有没有被占用,如果被占用,则报错,无法启动 vmnet 相关服务并且虚拟机连接网络设备会报错。
总结
所以最终的解决方案是:安装 VMware Fusion13 的时候关掉 ClashX 的增强模式,由于我目前不清楚的原因,它的虚拟网络设备 tun0 会将一些不存在的 ip 段也正常响应 ping 命令,安装好之后再重新打开增强模式,无任何其他影响,问题解决!
参考链接
无
本文章首发于个人博客 LLLibra146’s blog
本文作者:LLLibra146
更多文章请关注:
版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!
本文链接:
https://blog.d77.xyz/archives/2663d26f.html