junio 11, 2007

Dispositivos persistentes con udev

Recientemente tras el clonado de una gentoo el interfaz de red eth0 había desaparecido misteriosamente.

Listando los interfaces:
# ifconfig -a
eth1 Link encap:Ethernet HWaddr 00:E0:7D:EA:14:6C
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:17

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

teql0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)


Se observaba que había sido renombrado a eth1 automaticamente a pesar de que en el arranque el kernel lo había cogido como eth0.

Resulta que el demonio udev controla la asignación y permite hacerlo mediante MAC, de esta forma al no encontrar la tarjeta con la MAC original en vez de levantar la nueva crea un interfaz numericamente distinto.

La configuración para quitar la dirección de red forzada se encuentra en "/etc/udev/rules.d/70-persistent-net.rules":
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.


# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:e0:7d:ea:14:6c", NAME="eth0"


Podemos configurar la linea correspondiente a eth0 o simplemente borrarla, arrancar net.eth0 y reinciar. Durante la parada del sistema udev se encargará de añadir la linea correctamente.

comentarios: