User Tools

Site Tools


Sidebar

No ai soldati italiani all'estero

Indice

Eventi

Energia

Rigacci.Org usa energia elettrica da fonti rinnovabili, grazie al gruppo di acquisto Merci Dolci.

Merci Dolci - Energia Rinnovabile

Software libero!

Petizione contro i brevetti software

Faunalia: Soluzioni GIS professionali

Debian

www.gnu.org www.kernel.org

doc:appunti:linux:sa:if_rename

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).

Per disabilitare questa funzione, chiamata Predictable Network Interface Names è possibile aggiungere l'opzione kernel net.ifnames=0 ad esempio in /etc/default/grub, opzione GRUB_CMDLINE_LINUX.

Se è installato la helper utility di udev chiamata biosdevname, è opportuno passare al kernel anche il parametro biosdevname=0.

Avendo attivato l'opzione net.ifnames=0 può essere comunque desiderabile una persistenza nell'assegnare il nome all'interfaccia , considerato che il kernel assegna i nomi legacy eth0, eth1, etc. in base all'ordine di rilevamento hardware, che è non deterministrico. È possibile quindi creare un file /etc/udev/rules.d/70-network.rules con l'assegnamento statico in base al MAC address, ad esempio

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:30:67:9a:75:0b", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:18:e7:22:0b:f7", NAME="eth1"

Debian 9 Network Interface Naming

doc/appunti/linux/sa/if_rename.txt · Last modified: 2018/09/03 11:07 by niccolo