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.

Further reading and video