This is note about getting the “Predictable Network Interface Names” in Linux.

Usually the ‘name’ should start with ‘enp’ or ‘ens’ (e.g. enp9s0).

  • en = Ethernet
  • p9 = PCI slot 9
  • s0 = Port 0

Another example: ens3

  • en = Ethernet
  • s = Hotplug slot
  • 3 = Port 3

Some diffs:

  • enoX: onboard device index number
  • ensX: Usually means PCI-E hotplug slot number
  • enpXsY: PCI bus number + port number
  • ethX: Traditional pattern, not really predictable
  • wlanX: Wireless

Summary

SystemPrimary Command(s) in TerminalGUI Location (if applicable)Notes
Ubuntuip link show, ip a, nmcli device statusSystem Settings → NetworkUses predictable names (e.g., enpXsY) or traditional (ethX).
Fedoraip link show, ip a, nmcli device statusSettings → NetworkUses predictable names. net-tools (for ifconfig) may not be default.
Debianip link show, ip aDesktop dependent (e.g., GNOME Settings → Network)Uses predictable names.
Alpine VMip link show, ip aN/A (typically headless)Lightweight; ifconfig via apk add net-tools.
TrueNAS SCALEip link show, ip aWeb UI: Network → InterfacesLinux-based.
TrueNAS COREifconfig -aWeb UI: Network → InterfacesFreeBSD-based; names like em0, igb0.
Proxmox VEip link show, ip aWeb UI: Node → System → NetworkDebian-based; predictable names or ethX. /etc/network/interfaces.

Ubuntu, Debian, Fedora

Newer (like 20.04, 22.04, 24.04 +)

ip link show
 
# Or, use the one getting the IP addr:
ip addr

Older (not sure the specific versions)

ifconfig -a

Or check the kernel:

ls /sys/class/net

Alpine VM

# Install required pkg first
apk add iproute2
# Then use the same command
ip link show

TrueNAS

Core:

ifconfig

Scale:

ip link show
# or, check kernel
ls /sys/class/net

Proxmox

UI or after installation:

# Contains the interfaces already explicitly configured.
cat /etc/network/interfaces

Because proxmox is based on debian:

# This works
ls /sys/class/net
 
# This also works
ip link show