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