Saltar la navegación

El nombre físico de las tarjetas de red

GNU/Linux asigna por defecto unos nombres únicos a las tarjetas de red. Las tarjetas ethernet suelen denominarse eth0, eth1, etc., las tarjetas wifi reciben el nombre de wlan0, wlan1, etc. A estos nombres se les denomina "nombres físicos de la tarjeta de red", y se encuentran en el fichero /etc/udev/rules.d/70-persistent-net.rules, desde el cual se pueden cambiar si quisiéramos, simplemente deberíamos modificar el contenido de la cadena NAME.

El formato de este fichero exige que cada interfaz de red esté definida en una sola línea y que las direcciones MAC estén en minúscula.

Es habitual manipular el fichero anterior cuando una tarjeta de red se estropea y la sustituimos por otra. La nueva tarjeta, al tener una MAC diferente, recibirá un nombre físico distinto a la estropeada, por lo que tenemos dos opciones, o modificamos la configuración de la red para adaptarla al nuevo nombre de la tarjeta o cambiamos el nombre físico de la nueva tarjeta, para que se llame como la estropeada.

Un ejemplo de contenido del fichero /etc/udev/rules.d/70-persistent-net.rules es el siguiente:

# cat /etc/udev/rules.d/70-persistent-net.rules 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:08.0 (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:37:d8:06", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:09.0 (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:af:b5:31", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:03.0 (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:28:42:d2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Cuando este fichero no existe, los nombres físicos de las tarjetas de red los va asignado el kernel de GNU/Linux conforme las va encontrando y puede que entre distintos arranques del sistema o distintas versiones del kernel (tras una actualización del kernel), los nombres varíen, haciendo, por ejemplo, que la tarjeta que antes era la eth0 ahora sea la eth2, acarreando los consecuentes problemas en la configuración de la red.

En Debian, el script /lib/udev/write_net_rules (se ejecuta al arrancar el sistema) es el que genera el fichero /etc/udev/rules.d/70-persistent-net.rules siguiendo las reglas indicadas en el fichero /lib/udev/rules.d/75-persistent-net-generator.rules. Este último fichero, suele llevar distintas reglas que evitan que el 70-persistent-net.rules se cree cuando Debian se virtualiza, concretamente, cuando se virtualiza con VirtualBox la regla es:

ENV{MATCHADDR}=="08:00:27:*",          ENV{MATCHADDR}=""

que como se ve, lleva el número que VirtualBox pone en sus tarjetas de red en la parte del fabricante dentro de la dirección MAC, los tres octetos más significativos. Simplemente comentando esta línea, y reiniciando el sistema, el fichero 70-persistent-net.rules se generará.

# ENV{MATCHADDR}=="08:00:27:*",          ENV{MATCHADDR}=""

NOTA:

La distribución Debian GNU/Linux trabaja con el gestor de dispositivos udev, y por tanto, la forma de asignar nombres físicos a las tarjetas de red es el descrito anteriormente, pero también podemos hacer lo mismo con el comando ifrename.

Para usar el comando ifrename debemos instalar el paquete del mismo nombre:

# aptitude install ifrenamee

A partir de aquí, si queremos que las interfaces de red tengan unos nombres determinados al arrancar el sistema, debemos especificarlos en el fichero /etc/iftab (no confundir con /etc/fstab), usando una línea con el siguiente formato para cada tarjeta:

nuevo_nombre mac dirección_mac

Por ejemplo:

lan   mac 08:00:27:30:be:70
wan mac a5:03:b7:90:e2:03
eth3 mac 80:10:72:03:eb:07

Con el contenido anterior en el fichero /etc/iftab, al arrancar el sistema, el script /etc/init.d/ifrename ejecutará el comando ifrename para que las interfaces se llamen: lan, wan y eth3. Evidentemente, para que la configuración lógica de red tenga éxito, el fichero /etc/network/interfaces debe ser coherente con estos nombres.

Es posible cambiar el nombre físico de las tarjetas de red sin tener que reiniciar el equipo, para lo cual, tenemos dos opciones, y siempre la tarjeta debe estar desactivada:

  • Estableciendo el nuevo nombre en el fichero /etc/iftab y ejecutamos ifrename. Por ejemplo, para cambiar wan por ppp:
# ifdown wan
# nano /etc/iftab
# ifrename
# nano /etc/network/interfaces
# ifup ppp
  • Cambiando el nombre directamente con el comando ifrename, pero cuando se reinicie el equipo, el nuevo nombre se perderá. Para el mismo ejemplo anterior:
# ifdown wan
# ifrename -i wan -n ppp
# ip address add 192.168.0.2/24 dev ppp
# ip link set ppp up

En este último caso configuramos la tarjeta con el comando ip para que al reiniciar el equipo se restaure la situación anterior con el nombre wan, que es el que permanece en /etc/iftab y en /etc/network/interfaces.

Licencia: licencia de software libre GPL