How to Revert to Traditional eth0 Naming Convention in Xubuntu 15.10 by Disabling Predictable Network Interface Names


2 views

Since systemd version 197, Linux distributions have adopted predictable network interface names like enp3s0 or wlp2s0. While this brings consistency across reboots, it breaks legacy applications expecting eth0/wlan0 naming.

Edit the GRUB configuration:

sudo nano /etc/default/grub

Find the line beginning with GRUB_CMDLINE_LINUX and add:

net.ifnames=0 biosdevname=0

Update GRUB and reboot:

sudo update-grub
sudo reboot

For more permanent control, create a custom udev rule:

sudo nano /etc/udev/rules.d/70-persistent-net.rules

Add content like this (adjust MAC address):

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", NAME="eth0"

For systems with multiple NICs, you might need to create additional rules:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:56", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:57", NAME="eth2"

After reboot, check interface names:

ip link show

Or the traditional way:

ifconfig -a

If interfaces don't rename properly:

  • Check for typos in MAC addresses
  • Verify the udev rules file permissions (should be 644)
  • Test rules with: udevadm test /sys/class/net/eth0
  • Check system logs: journalctl -xe

VM environments often have changing MAC addresses. Either:

  1. Configure static MACs in your VM settings
  2. Use wildcard rules for certain VM NIC patterns

Since systemd v197, Linux distributions started using predictable network interface names (like enp3s0) instead of the traditional eth0 scheme. While this brings some advantages in complex server environments, it breaks legacy applications hardcoded to expect eth* device names.

Edit the GRUB configuration file:

sudo nano /etc/default/grub

Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and append:

net.ifnames=0 biosdevname=0

Update GRUB and reboot:

sudo update-grub
sudo reboot

For more control, create a udev rules file:

sudo nano /etc/udev/rules.d/70-persistent-net.rules

Add content like this (adjust for your MAC address and desired interface name):

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:4b:xx:xx:xx", NAME="eth0"

After reboot, check your interfaces:

ip link show

Or the traditional way:

ifconfig -a
  • If interfaces don't rename: check for typos in MAC addresses
  • Some virtualization environments might need additional parameters
  • NetworkManager may require restart after changes

While this solution works, consider updating your applications to handle dynamic interface names for better future compatibility. Modern applications should use network interface enumeration rather than hardcoded names.