I want to rename on Fedora 22 a network interface managed by systemd-networkd (version 219) from the system-assigned name enp2s0 into wan. For that I created the following file /etc/systemd/network/80-wan.link:


However, that have no effect on the system. After rebooting the name is still enp2s0. I see with udevadm that udev picked up the file for configuration but ignored the supplied name:

~> udevadm info /sys/class/net/enp2s0 
P: /devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: ID_BUS=pci
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MODEL_ID=0x8168
E: ID_NET_LINK_FILE=/etc/systemd/network/80-wan.link
E: ID_NET_NAME_MAC=enxMacAddress
E: ID_PATH=pci-0000:02:00.0
E: ID_PATH_TAG=pci-0000_02_00_0
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp2s0
E: TAGS=:systemd:

Also there is no mentioning of the new name wan in any logs even after activating udev debugging output. What I am doing wrong?

up vote 4 down vote accepted

At least on Debian stretch, it seems like you need to update-initramfs -u && reboot for *.link files in /etc/systemd/network/ to take effect for existing interfaces.

It seems like the network interfaces get renamed very early during boot from within the initramfs, before the *.link files in /etc/systemd/network are available... and once the interface has been renamed once (/sys/class/net/*/name_assign_type=4), then the the udev-builtin-net_setup_link will no longer emit ID_NET_NAME because should_rename returns false.

Are you using systemd-networkd? I think the .link files are only relevant if you are (instead of the default NetworkManager or legacy initscripts). (I admit I haven't looked deeply into it yet, though.)

I think what you want is a .rules file in /etc/udev/rules.d, something like

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="mac-address", NAME="wan"

(where mac-address is your actual hex MAC address, of course).

This file needs to be ordered before /usr/lib/udev/rules.d/80-net-setup-link.rules, so the upstream docs suggest /etc/udev/rules.d/70-my-net-names.rules.

  • 1
    Yes, I use systemd-networkd. Its docs gives an example of renaming and I do not see why my case does not work. – Igor Bukanov May 17 '15 at 6:46

For some bad reasons it seems that networkmanager has priority over networkd(who could imagine that?). You can test this as follows:

  • systemctl stop NetworkManager
  • unplug the network interface
  • ip addr

Result: /etc/systemd/network/*.link rules are honored

If you start NetworkManager and repeat the test /etc/systemd/network/*.link is not honored anymore. I tested this with the MACAddressPolicy=random directive

The comment with the solution 'update-initramfs' worked fine here, thanks!

the UDEV method (1st comment) is a different (and older) method to change device names (but should probably still work).

You can also set some boot options to disable network device renaming: (GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" and then issuing the correct command for regenerating the grub configuration). This will only get you back to 'eth0', and numbering might get messed up when you add a second ethernet device...

  • 1
    Please don’t post an answer to say that other answer(s) worked (and please take the site Tour, and learn the difference between “comments” and “answers”).  You seem to be adding some information that isn’t in the other answers; please edit your answer to focus on that and make it clearer and more complete. – Scott Jun 20 at 17:07

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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