Modern Linux interface names like enp3s0 replaced the old, simple eth0 convention — confusing at first, but solving a genuine, previously-annoying problem.
enp3s0 en = ethernet p3 = PCI bus 3 s0 = slot 0 wlp2s0 wl = wireless p2s0 = same PCI bus/slot encoding
The Problem This Solves
Under the old eth0/eth1 convention, interface names were assigned in the order the kernel happened to detect network cards — an order that could genuinely change between reboots, especially with multiple NICs, silently swapping which physical port was “eth0” and breaking firewall rules or static configuration tied to that name.
Predictable Naming Fixes This
The new scheme derives the interface name directly from stable hardware information (PCI bus location, or MAC address for USB adapters) — the same physical port always gets the same name on every boot, regardless of detection order, which is exactly the property the old naming scheme lacked.
# If you genuinely need the old eth0-style naming (not usually recommended): # add net.ifnames=0 biosdevname=0 to kernel boot parameters