I'm trying to figure out how to restore the simple interface names in Ubuntu 16.04. I.e. enp3s0 renamed to eth0.

  • I have tried to modify the GRUB configuration. I have tried editing /etc/udev/rules.d/10-network.rules, but both methods did nothing for me. Help is greatly appreciated.

    /etc/udev/rules.d/10-network.rules: (I hid the mac address names.)

    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="XX:XX:XX:XX:XX:XX″,KERNEL=="enp0s0″, NAME="eth0″
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="XX:XX:XX:XX:XX:XX″,KERNEL=="wlx02c5c1866772″, NAME="wlan0″
  • And I changed this line in the GRUB configuration (/etc/default/grub) ...


    to look like this:


1 Answer 1


Tested on VBox with Ubuntu 16.04, enp0s3eth0

Option 1:

  1. Override udev rule

    sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
  2. Update RAMDisk

    sudo update-initramfs -u

Option 2:

  1. Create a systemd link file

    sudo vim /etc/systemd/network/10-eth.link
  2. Let's define name related to MAC: (There are many options, see the linked reference)

  3. Update RAMDisk

    sudo update-initramfs -u

Option 3:

  1. Add net.ifnames=0 to boot parameters

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0"
  2. Update grub

    sudo update-grub

Reference: systemd: Predictable Network Interface Names, Thanks @mikewhatever .

  • 1
    Option 2 appears to be the most resilient to upgrades because it only makes changes to the network devices you're concerned about. Option 1 and 3 both have side-effects that may change other devices/interfaces. However, I can't seem to get option 2 to work after a 14.04.3 to 16.04 upgrade. I may be missing a systemd service. dmesg lists the interfaces being renamed from ethX to enpXsY but not back again so I suspect a systemd service is needed to be enable for option2 to work. To be clear, I'm doing option 2 in isolation. Do you have any idea what service is required for option 2? Aug 15, 2016 at 2:57
  • @tudor, I think this is the related /lib/udev/rules.d/80-net-setup-link.rules, seems systemd using a udev rule actually as explained here (man systemd.link) freedesktop.org/software/systemd/man/systemd.link.html . and the next seems also related for boot parameter option3: /lib/udev/rules.d/73-usb-net-by-mac.rules
    – user.dz
    Aug 15, 2016 at 5:04
  • 1
    I've corrected Option 2 cause it doesn't work the way you thought it did. Try using different name, say, eth5 and you'll realise that eth0 is just default name you get if you don't run update-initramfs -u
    – poige
    Mar 8, 2019 at 8:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.