如果你在VMware里装好Ubuntu,兴冲冲打开终端准备开始折腾,结果输入 ip addr 一看,ens33下面光秃秃的,只有 state DOWN 或者压根没显示 inet 字段,第一反应基本都是:网卡废了?还是系统坏了?这个问题在VMware + Ubuntu的组合里出现频率极高,几乎每个玩虚拟化的人都至少撞见过一次。
先说结论:ens33没有IP,绝大多数情况不是网卡硬件坏了,也不是Ubuntu系统装坏了,而是虚拟网络链路里某个环节没就位。 这个“某个环节”可能发生在VMware宿主机侧的虚拟网络服务、虚拟机的网卡连接状态、虚拟机内部的网络管理后端、DHCP客户端进程这几个层面中的任意一个。麻烦之处在于,这几个环节是串联的,任何一个掉链子,最终表现都一模一样——ens33上没有任何IPv4地址。
这篇文章会把这个问题从头到尾拆一遍:先讲清IP是怎么一步步分配到ens33上的,再给你一条从宿主机到虚拟机内部的完整排查路径,最后给出六个可以直接照抄的解决办法,以及后续怎么配置才能让这个坑不再反复出现。适合VMware Workstation Pro用户、Ubuntu 18.04及以上版本的系统管理员,以及所有被虚拟网卡折磨过的运维和开发者。
1. 从ens33这个名字说起:IP分配到底走了一条什么链路
1.1 ens33不是随便叫的,它代表了虚拟机的第二块PCI网卡
在老的Linux系统里,网卡叫 eth0、eth1,这是内核按探测顺序命名的。但从systemd和udev的预测性命名规则(Predictable Network Interface Names)普及之后,网卡名开始反映硬件物理位置。ens33 这个名字拆开看:en 表示以太网,s 表示热插拔PCIe插槽,33 是PCI总线上的槽位号。
在VMware Workstation里,这个33对应的就是虚拟机主板上虚拟PCI设备的一个槽位号。这也是为什么你在“虚拟机设置 → 网络适配器”里移除一块网卡再加一块新的,重启后网卡名可能变成 ens34、ens37 之类的——因为新设备挂到的PCI槽位变了,udev的名字自然跟着变。
了解这个命名规则有什么用?很重要。很多“ens33没有IP”的问题,底层其实是“网卡设备节点变了”或者“udev规则里还在按老名字绑定配置”,导致Netplan配置里的 ens33 对不上实际存在的网卡名。后面聊解决办法时会专门展开。
1.2 从VMware到ens33的完整IP分配链路
一个正常工作的Ubuntu虚拟机,要拿到IP,需要整条链路全部通畅:
code复制VMware虚拟网络服务(NAT/DHCP)
↓
虚拟机网络适配器(已连接、模式正确)
↓
Guest OS内核识别网卡驱动(vmxnet3/e1000等)
↓
udev按PCI槽位命名(ens33)
↓
网络管理后端接管(Netplan/systemd-networkd 或 NetworkManager)
↓
DHCP客户端发起广播请求
↓
VMware内置DHCP服务响应,下发IP
这条链路上任何一环出问题,最终都表现为 ip addr 里 inet 字段为空。但注意,不同环节出问题,修复方式差异极大:如果宿主机DHCP服务没起来,你在虚拟机里把网络配置翻个底朝天也没用;如果Netplan配置写的接口名和实际接口不对应,你重启十次网络服务也没用。
1.3 VMware + Ubuntu为什么是“重灾区”
相比之下,CentOS/RHEL系的NetworkManager体系相对稳定,Windows Guest基本无感,Ubuntu却特别容易出这个问题,原因是它搞了个双层抽象:Netplan负责在 yaml 配置文件里描述网络拓扑,然后选择后端渲染成systemd-networkd的配置或NetworkManager的配置。抽象层越多,出问题的组合就越多,比如:
- Netplan配置里
dhcp4: false却没有任何address字段 - Netplan的renderer是networkd,但实际接管网卡的却是NetworkManager,两边互相踩
- 系统升级或快照回滚后,Netplan配置和当前实际网卡名不同步
- VMware挂起/恢复后,DHCP租约过期但客户端没有重新续约
这些情况我都实际遇到过,下面逐个给解决方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 有序排查:从宿主机服务到虚拟机内部的完整检查清单
2.1 宿主机侧:VMware的两个网络服务常被低估
很多人习惯一上来就进虚拟机改配置,但我的经验是第一步先在宿主机确认两个Windows服务是否正常运行。VMware Workstation安装后,会在Windows服务里注册以下两个关键服务:
| 服务名 | 显示名称 | 作用 |
|---|---|---|
| VMware NAT Service | VMware NAT Service | 负责NAT模式的IP转发、子网通信 |
| VMware DHCP Service | VMware DHCP Service | 负责给NAT/仅主机模式的虚拟机动态分配IP |
在Windows里按 Win + R 输入 services.msc,找到这两个服务,确认状态是“正在运行”,启动类型是“自动”。如果其中任何一个停了,虚拟机的NAT网络绝对起不来,表现就是ens33没有IP,甚至可能连 link up 都做不到。如果服务处于停止状态,直接右键启动,再回到
