9

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:

[Match]
MACAddress=mac-address
[Link]
Name=wan

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_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MODEL_ID=0x8168
E: ID_NET_DRIVER=r8169
E: ID_NET_LINK_FILE=/etc/systemd/network/80-wan.link
E: ID_NET_NAME_MAC=enxMacAddress
E: ID_NET_NAME_PATH=enp2s0
E: ID_OUI_FROM_DATABASE=Shuttle Inc.
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_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: IFINDEX=2
E: INTERFACE=enp2s0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp2s0
E: TAGS=:systemd:
E: USEC_INITIALIZED=24183

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

8

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.

| improve this answer | |
  • It's the same situation on Ubuntu 18.04 (and probably later too). Thanks for the fix. – user381521 Jan 18 at 6:15
3

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.

| improve this answer | |
  • 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
2

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

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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