news 2026/5/28 6:25:16

【踩坑实录】VMware中OpenKylin虚拟机网络失联的深度分析与排查全过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【踩坑实录】VMware中OpenKylin虚拟机网络失联的深度分析与排查全过程

一、事故背景

昨晚虚拟机还好好的,今天下午准备在 VMware 中的 OpenKylin 系统里安装 Claude Code,刚登录进去发现:网络彻底断了

任务栏右下角飘着刺眼的红字——维护模式

快捷操作面板里网络显示"未连接",有线网络设置里 ens33 网卡开关是灰的,点一下又弹回去。就此开始了长达数小时的排查之旅。


二、环境说明

项目内容
宿主机Windows + VMware Workstation Pro 17
虚拟机系统OpenKylin(开放麒麟)
网络模式NAT(VMnet8,子网 192.168.255.0)
网卡名称ens33(别名 enp2s1)
宿主机上网方式手机热点

三、排查过程与失败记录

3.1 第一反应:重启 NetworkManager

sudo systemctl restart NetworkManager nmcli device status

结果:ens33 显示"未托管"(unmanaged),重启没有任何效果。


3.2 尝试手动连接

nmcli device connect ens33

报错:

错误:添加/激活新连接失败:Connection 'ens33' is not available on device ens33 because device is strictly unmanaged

关键词:strictly unmanaged。这说明不是简单的断线,而是 NetworkManager 被明确配置为不管理这块网卡。


3.3 定位配置文件问题

cat /etc/NetworkManager/NetworkManager.conf

输出中发现:

[ifupdown] managed=false

找到了!managed=false导致 NetworkManager 拒绝接管任何通过/etc/network/interfaces管理的网卡。

尝试修复:

sudo sed -i 's/managed=false/managed=true/' /etc/NetworkManager/NetworkManager.conf sudo systemctl restart NetworkManager

结果:依然 unmanaged,修改没有生效。


3.4 怀疑 conf.d 目录有覆盖配置

sudo grep -r "unmanaged\|managed=false" /etc/NetworkManager/

结果:无输出。配置文件里已经没有 unmanaged 相关设置了,但问题依旧。

说明 NetworkManager 在运行时缓存了旧配置,或者还有其他机制在起作用。


3.5 强制 reload 并重新托管

sudo nmcli general reload sudo nmcli device set ens33 managed yes nmcli device status

结果:仍然显示"未托管"。nmcli device set命令在这个状态下无法持久化。


3.6 尝试退出维护模式

sudo systemctl default sudo systemctl isolate graphical.target systemctl get-default

输出:

graphical.target

系统默认目标已经是 graphical.target,理论上不在维护模式——但界面上依然显示"维护模式"红字。这说明"维护模式"是 OpenKylin 自己的界面提示,并不完全等同于 systemd 的 rescue/emergency target。


3.7 删除连接重建

由于终端无法输入中文,尝试:

sudo nmcli connection delete ens33

报错:

错误:未知的连接 "ens33" 错误:无法删除未知连接:'ens33'

连接配置文件已经不存在了,但网卡依然是 unmanaged 状态,陷入了死循环。


3.8 绕过 NetworkManager,手动配置 IP

既然 NetworkManager 不肯接管,直接用ip命令手动配置:

sudo ip link set ens33 up sudo ip addr add 192.168.255.100/24 dev ens33 sudo ip route add default via 192.168.255.2 ping 8.8.8.8

结果:路由添加时报错Nexthop has invalid gateway,ping 依然不通。

原因分析:ens33 状态为 DOWN,即使添加了 IP,网卡物理层没有 up,网关也无法到达。


四、根本原因深度分析

经过完整排查,总结出以下几个根本原因叠加导致了此次故障:

原因一:维护模式破坏了网络服务状态

OpenKylin 进入维护模式后,部分系统服务被强制停止。NetworkManager 虽然进程还在,但其对网卡的控制状态没有随着退出维护模式而恢复。这是 systemd 与 NetworkManager 之间的状态同步问题。

原因二:managed=false的历史遗留

OpenKylin 基于 Ubuntu/Debian 体系,默认使用ifupdown插件管理网络。/etc/NetworkManager/NetworkManager.conf中的managed=false是该体系的历史遗留配置——意思是"凡是在/etc/network/interfaces中定义的网卡,NetworkManager 不接管"。

这本是正常配置,但在维护模式破坏网络状态后,叠加这个配置,导致恢复网络的所有 nmcli 命令全部失效。

原因三:连接配置文件丢失

/etc/NetworkManager/system-connections/有线连接 1.nmconnection文件在某个时刻(可能是维护模式中或之后的误操作)被删除或损坏,导致 nmcli 找不到可用的连接配置,无法激活。

原因四:网卡持续处于 DOWN 状态

2: ens33: <BROADCAST,MULTICAST> state DOWN

网卡没有 UP,即使手动配置 IP 和路由,底层链路不通,所有网络操作都会失败。这是最底层的问题,应该最先解决。


五、正确的解决思路(复盘)

如果重来一次,正确的排查顺序应该是:

第一步:先把网卡 UP

sudo ip link set ens33 up

第二步:修改 managed=false 为 true

sudo sed -i 's/managed=false/managed=true/' /etc/NetworkManager/NetworkManager.conf

第三步:重新加载 NetworkManager

sudo systemctl restart NetworkManager sudo nmcli general reload

第四步:重建连接配置

sudo nmcli connection add type ethernet ifname ens33 con-name "eth0" ipv4.method auto sudo nmcli connection up "eth0"

第五步:验证

ip addr show ens33 ping 8.8.8.8

六、经验教训

  1. 维护模式不要随便进:OpenKylin/Ubuntu 系维护模式会影响网络服务状态,退出后不会自动完全恢复。
  2. 排查网络问题要从底层开始:先检查网卡是否 UP(ip link show),再检查 IP(ip addr),再检查路由(ip route),最后才是上层的 NetworkManager。
  3. managed=false是陷阱:在 Debian 系系统中,这个配置会让 nmcli 的所有操作都失效,遇到 "strictly unmanaged" 报错第一时间去查这个配置。
  4. nmcli 依赖连接配置文件:没有.nmconnection文件,nmcli 无法激活连接,需要先connection addconnection up
  5. 虚拟机网络故障优先检查宿主机:NAT 模式下,宿主机有网,虚拟机配置正确就能有网,不要在虚拟机里找手机热点。

七、总结

这次故障的核心是:维护模式 + managed=false + 连接配置丢失 + 网卡 DOWN四个问题同时出现,每一个单独都好解决,叠加在一起让排查走了很多弯路。

希望这篇踩坑记录能帮到同样在 OpenKylin 或其他国产 Linux 系统上遇到类似问题的同学。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 6:24:26

SpringBoot 消费者并发控制:线程池配置

在分布式项目中&#xff0c;MQ消息堆积、消费延迟、服务卡顿是线上最常见的疑难问题。绝大多数人第一反应是“加机器”&#xff0c;但真正的核心问题从来不是机器不够&#xff0c;而是消费者并发线程池配置不合理。很多同学开发直接使用SpringBoot默认的消费者线程池&#xff0…

作者头像 李华
网站建设 2026/5/28 6:18:03

5步搭建智能音频中心:YoRadio开源网络收音机终极实战指南

5步搭建智能音频中心&#xff1a;YoRadio开源网络收音机终极实战指南 【免费下载链接】yoradio Web-radio based on ESP32-audioI2S library 项目地址: https://gitcode.com/GitHub_Trending/yo/yoradio 你是否厌倦了传统收音机的限制&#xff1f;是否渴望拥有一个既能播…

作者头像 李华