云计算百科
云计算领域专业知识百科平台

VMWare虚拟机无法联网问题

一、问题现象与问题产生原因

1. 问题现象

在 VMware 中安装Ubuntu虚拟机,网络模式选择 NAT,系统启动后发现无法联网,具体表现为:

  • 无法访问外网

  • ip addr 中只有 lo 或者 ens33 没有 IPv4 地址

  • 网卡驱动已加载,但始终无法获取 IP

  • 使用 nmcli 指令查看网络状态

nmcli device status

显示:

ens33 ethernet 未托管 lo loopback 未托管

即使手动执行:

sudo ip link set ens33 up

或重新配置 netplan、NetworkManager,问题依旧存在。


2. 问题产生的原因(核心)

该问题并不是网卡、驱动或 NAT 配置错误,而是 NetworkManager 在虚拟机环境中进入了“设备未托管状态”。

(1)什么是“未托管”?

“未托管”表示:NetworkManager 不再管理该网络接口

也就是说:

  • 不会为接口申请 DHCP

  • 不会分配 IP

  • 不会配置路由和 DNS

即使 NetworkManager 服务在运行,接口也不会被真正启用。


(2)为什么会出现这种情况?

在 VMware + Ubuntu(尤其是 Server / Minimal 镜像) 中,以下因素叠加,容易导致该问题:

  • 虚拟网卡属于模拟设备(如 e1000)

  • netplan、NetworkManager、ifupdown 混合存在

  • 系统无桌面环境,NetworkManager 无法完整工作

  • NetworkManager 判断接口“不适合托管”,从而放弃管理

一旦 NetworkManager 进入设备级全未托管状态,继续修改配置文件或使用 nmcli 通常无法恢复。


二、解决方法(推荐方案)

思路说明

对于 虚拟机 / 服务器 / 无 GUI 环境,NetworkManager 并非最佳选择。

此类环境中,systemd-networkd 更简单、更稳定、更适合,因此采用 切换网络管理方式 的方案解决问题。


1. 停用 NetworkManager

sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager


2. 启用 systemd-networkd

sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd

确认服务状态(活跃状态才行):

systemctl status systemd-networkd


3. 配置 ens33 使用 DHCP

创建配置文件:

sudo nano /etc/systemd/network/20-ens33.network

写入内容:

[Match] Name=ens33
[Network] DHCP=yes


4. 重启网络并拉起接口

sudo systemctl restart systemd-networkd
sudo ip link set ens33 up


5. 验证结果

ip addr show ens33

若看到类似内容:

inet 192.168.xxx.xxx/24

说明 DHCP 获取成功。

测试网络连通性:

ping -c 3 8.8.8.8 ping -c 3 www.baidu.com


三、总结

  • 本问题并非 NAT、驱动或网卡故障

  • 本质原因是 NetworkManager 在虚拟机环境中未接管网络设备

  • 在服务器或虚拟机环境中,systemd-networkd 是更稳定可靠的选择

  • 当出现 未托管 且无法恢复时,切换网络管理方式是最有效的解决方案

赞(0)
未经允许不得转载:网硕互联帮助中心 » VMWare虚拟机无法联网问题
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!