Skip to content
PolyVirt

VMXNET3 interfaces are renamed on migration and take the network down with them

What this check detects

Linux guests with a VMXNET3 or E1000 adapter, where the target platform will present a different virtual NIC model.

RVTools tab
vNetwork
Columns read
Adapter, Mac Address, Switch

Why it matters

Linux uses predictable network interface names, derived from the device’s position on the PCI bus and the driver that claims it. A VMXNET3 adapter typically appears as ens192 or ens160. Move that VM to a KVM-based platform and the same NIC becomes a VirtIO device on a different bus address, so the kernel names it ens18, enp0s18, or something else entirely.

Nothing has failed at this point. The NIC works, the driver loads, the link comes up. But the configuration that assigns the IP address refers to the old name — /etc/netplan/00-installer-config.yaml, /etc/sysconfig/network-scripts/ifcfg-ens192, or a NetworkManager connection profile bound to an interface name. None of it matches, so none of it applies. The VM boots with a working NIC and no address on it.

The recovery is console access, which is precisely what is scarce during a migration window. A wave of forty Linux VMs that all come up unreachable is a long night, and it is entirely avoidable with a change made before the move rather than after.

The same class of problem hits DHCP reservations. Migration tooling frequently generates a new MAC address rather than preserving the VMware OUI, and any reservation keyed to the old MAC stops matching. The VM gets a pool address instead of its reserved one, and anything referring to it by IP breaks.

How to resolve it

Ubuntu / Debian with netplan

  1. Before migrating, change the netplan configuration to match on MAC address rather than interface name, using a match: block with macaddress:, and set set-name: to pin a stable name.
  2. Alternatively, switch the interface to DHCP for the duration of the migration and restore static configuration afterwards.
  3. Apply with netplan try so a mistake rolls itself back.

RHEL / CentOS / Rocky with NetworkManager

  1. Rebind the connection profile to the hardware address: nmcli connection modify <name> 802-3-ethernet.mac-address <mac>, then clear connection.interface-name.
  2. Confirm with nmcli -f GENERAL.STATE connection show <name> after a reboot, before the migration is scheduled.

Any Linux guest — belt and braces

  1. Add a udev rule at /etc/udev/rules.d/70-persistent-net.rules matching the MAC and assigning the expected name. This survives the platform change regardless of distribution.
  2. Ensure the migration preserves the original MAC address. Both Proxmox and AHV allow it to be set explicitly at VM creation; do this rather than accepting a generated one.
  3. Where a DHCP reservation exists, verify the MAC on the target matches the reservation before releasing the maintenance window.

Windows guests

  1. Windows binds configuration to the adapter GUID rather than a name, so a new virtual NIC appears as a fresh adapter with DHCP enabled and the old static configuration hidden against a device that is no longer present.
  2. Record the IP configuration before migrating. Reapply it to the new adapter, then remove the ghost adapter with devmgmt.msc in show-hidden-devices mode.

Related rules