ArticlesRocky Linux

renaming-network-interfaces-without-rebooting

Introduction

When running a server that requires high availability, a user may not have the luxury to perform a reboot after making a configuration change.

The following guide will explain how to rename a network interface, without the need for a reboot.

Problem

A customer had asked CIQ how to alter the names of network interfaces whilst avoiding a reboot on their server.

Resolution

Prerequisites

Access to the root user account or a user with escalated privileges.

Method 1 - ip link set

To temporarily change the name of an interface, use the ip link set command.

Bring the network interface that you wish to rename down:

sudo ip link set <INTERFACE_NAME> down

Rename the interface:

sudo ip link set <INTERFACE_NAME> name <NEW_INTERFACE_NAME>

Enable the newly renamed interface:

sudo ip link set <NEW_INTERFACE_NAME> up

Please note your changes will be lost if you reboot your server.

Method 2 - udev rules by MAC Address

Check under /etc/udev/rules.d/ that you have a 70-persistent-net.rules file. If the file is not there, create it with touch /etc/udev/rules.d/70-persistent-net.rules

Confirm the interface you wish to edit by using ip -brief address show. You will see a similar output as in the below example:

[root@Rocky-Linux-9-5-Test-Machine ~]# ip -brief address show
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp8s0           UP             <PUBLIC_IP>/24

Open /etc/udev/rules.d/70-persistent-net.rules with your text editor of choice and modify the NAME field of the interface you wish to change. A before and after example follows:

Before:

[root@Rocky-Linux-9-5-Test-Machine ~]# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="<PUBLIC_IP_HERE>", NAME="enp8s0"

After:

[root@Rocky-Linux-9-5-Test-Machine ~]# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="<PUBLIC_IP_HERE>", NAME="new-name-1"

Bring the network interfaces down with ip link set <INTERFACE_NAME> down. In the author's case, the interface was enp8s0:

ip link set enp8s0 down 

Use the udevadm control command to reload the udev rules and request device events from the kernel with udevadm trigger:

udevadm control --reload-rules; udevadm trigger --subsystem-match=net --action=add

Confirm that the network interface was renamed with ip -brief address show. The author correctly found this to be the case:

[root@Rocky-Linux-9-5-Test-Machine ~]# ip -brief address show
lo               UNKNOWN        127.0.0.1/8 ::1/128 
new-name-1       DOWN           <PUBLIC_IP>/24

Bring the link back up using ip link set <NEW_INTERFACE_NAME> up. Please see the following example:

ip link set new-name-1 up 

Observe that the interface is up and has been renamed without requiring a reboot:

[root@Rocky-Linux-9-5-Test-Machine ~]# ip -brief address show
lo               UNKNOWN        127.0.0.1/8 ::1/128 
new-name-1       UP             <PUBLIC_IP>/24

Even if the machine is rebooted, the changes will still be present.

Notes

With the above methods presented, the customer was able to rename their interfaces without needing to reboot their server.

References & related articles

udevadm man page: https://linux.die.net/man/8/udevadm

udev rules introduction: https://opensource.com/article/18/11/udev