Frequently Asked Question
Why is my network interface called enp0s3 instead of eth0?
Classic kernel names (eth0, eth1, wlan0) are assigned in the order the
kernel probes devices, which is not deterministic. Add a USB Ethernet adapter,
reboot, and what used to be eth0 might now be eth1, a configuration
nightmare for anything but a single-NIC laptop. Since systemd version 197
(2013), udev assigns predictable names derived from firmware and hardware
topology: enp0s3 means Ethernet (en) on PCI bus 0 slot 3, wlp3s0 means
wireless on PCI bus 3 slot 0, eno1 means an on-board Ethernet with firmware
index 1, and so on.
The benefit is that the name stays the same across reboots and through
hot-plugging. The cost is that names are uglier and not portable between
identical-looking hardware. You can opt back into classic naming by passing
net.ifnames=0 biosdevname=0 on the kernel command line or by adding udev rules
to rename interfaces, useful on servers where you want every machine in a fleet
to use eth0 regardless of hardware quirks.