User Tools

Site Tools


doc:appunti:linux:sa:if_rename

This is an old revision of the document!


Renaming network interfaces

In a modern Linux system, network interface drivers are compiled as modules. Generally there is a subsytem that provides loading kernel modules automatically. Debian GNU/Linux Etch uses udev for that.

Interface names (eth0, eth1, …) are assigned as they are discovered and kernel modules are loaded, unfortunately the order of discovering can sligtly vary across reboots. So you can find that after a reboot your system has swapped eth0 and eth1, with all the nasty consequences you can imagine.

I suggest two ways to assign interface names in a consisten way.

udev

In a Debian Etch box, check the /etc/udev/rules.d/z25_persistent-net.rules. This file is updated at bootstrap when new network interfaces are found. It contains a persistent mapping of MAC addresses to interface names.

In general, add a custom configuration file /etc/udev/rules.d/010_netinterfaces.rules with lines like this:

KERNEL=="eth*", SYSFS{address}=="00:12:34:fe:dc:ba", NAME="eth0"

In the above example we used the SYSFS{address} as a match for the rule, use this command to print all sysfs properties of the specified device that can be used in udev rules to match the specified device:

udevinfo -a -p /sys/class/net/eth0

ifrename

You configure this userspace program writing the configuration file/etc/iftab:

# Example /etc/iftab file
eth2           mac 08:00:09:DE:82:0E
eth3           driver wavelan interrupt 15 baseaddress 0x390
eth4           driver pcnet32 businfo 0000:02:05.0
# wildcard name: pick the lowest available name of air0, air1, air2, etc.
air*           mac 00:07:0E:* arp 1

The good thing of this program is that you can select intefaces by the name of the kernel module, by MAC address, by bus position and other methods. But beware that the standard Debian startup of ifrename runs the program once, when all the interfaces are already discovered and named. In this case it is not possible to swap two interface names, because when you try to rename the first interface, an error occurr: Error: cannot change name of eth1 to eth0: File exists.

Debian 8 Jessie

The udev cache file is named now /etc/udev/rules.d/70-persistent-net.rules, sometimes only one Ethernet card is automatically added to this file, some other times the cache file is not created at all.

To force the creation of that file just execute the command:

udevadm trigger --action=add

Debian 9 predictable network interface names

Esempio: enp3s0f1

  • en Ethernet network card
  • p3 PCI bus #3
  • s0 Slot #0
  • f1 Function #1 (eg. a dual porta LAN has two functions).
doc/appunti/linux/sa/if_rename.1485336272.txt.gz · Last modified: 2017/01/25 10:24 by niccolo