I recently spun up a CentOS Stream 10 Minimal VM in VMware so I could test some networked services. To my surprise, after installation I ran:
$ ip link show
1: lo: …
`
…and that was it. No eth0
, no ens33
, nothing but the loopback device. A quick lspci | grep -i eth
did show an old AMD PCnet-PCI II adapter, but CentOS wasn’t loading any driver for it—and worse, my bridged LAN had no DHCP server so even a loaded driver wouldn’t help.
Here’s a concise “restore-your-VM-network” recipe that worked for me every time. Drop these steps into your personal wiki or a Gist, and you’ll never get stuck without a NIC again 🤓.
1. Symptom
- Inside the VM:
bash
$ ip link show
1: lo: <…> UP …
-
lspci | grep -i eth
shows:
02:00.0 Ethernet controller: Advanced Micro Devices, Inc. [AMD] 79C97x (PCnet32 LANCE)
- No real interface (eg.
eth0
/ens*
) is ever created.
2. Root Cause
- Legacy NIC: VMware’s default PCnet-PCI II (pcnet32) adapter isn’t supported out-of-the-box by CentOS Stream Minimal.
- No DHCP: With the adapter in Bridged mode on a network lacking DHCP, the interface—once up—couldn’t grab an IP anyway.
3. The Fix
A. Switch VMware to NAT (Built-in DHCP)
- Power off your VM.
- Open VM → Settings → Network Adapter.
- Select NAT instead of Bridged.
- ✓ Check Connected and Connect at power on.
- OK, then Power on.
NAT mode uses VMware’s
vmnet8
network and a built-in DHCP server. You’ll always get a lease.
B. Verify the Guest Sees a NIC
bash
$ ip link show
1: lo: …
2: ens32:
link/ether 00:0c:29:54:92:e9 brd ff:ff:ff:ff:ff:ff
Your interface name may vary (
ens33
,enp0s3
, etc.).
C. Grab an IP via DHCP
First, test DHCP manually to confirm VMware↔DHCP communication:
bash
sudo ip link set ens32 up
sudo dhclient -v ens32
ip addr show ens32
You should now see something like:
bash
inet 192.168.128.10/24 brd 192.168.128.255 scope global dynamic ens32
And:
bash
ping -c3 8.8.8.8 # OK?
ping -c3 google.com # OK?
D. Create a Persistent NetworkManager Profile
To have your VM auto-connect on reboot, use nmcli
:
`bash
1) Remove any old/broken profile (if it exists)
sudo nmcli connection delete vm-dhcp || true
2) Add a new DHCP-based Ethernet connection
sudo nmcli connection add
type ethernet
con-name vm-dhcp
ifname ens32
autoconnect yes
ipv4.method auto
3) Bring it up now
sudo nmcli connection up vm-dhcp
`
Verify:
`bash
nmcli device status
DEVICE TYPE STATE CONNECTION
ens32 ethernet connected vm-dhcp
ip addr show ens32
shows your 192.168.x.x address
`
4. Confirm Everything Works
bash
ping -c3 google.com
If you get replies, congrats 🎉—you’ve restored full networking to your CentOS Stream Minimal VM!
Notes & Alternatives
-
Driver-only fix:
If you prefer to stick with the PCnet32 adapter, you can instead load its driver:
bash
sudo modprobe pcnet32
echo pcnet32 | sudo tee /etc/modules-load.d/pcnet32.conf
But you still need a DHCP server on your bridged network.
-
Bridged with DHCP:
If your physical LAN has a DHCP server and you really need bridged mode, switch back to Bridged after loading the driver or switching NIC type toe1000
/vmxnet3
.