Inicio / Blog's y documentación / Blogs / jmedina

En GNU/Linux en la mayoría de las instalaciones el nombre de interfaz de red Ethernet principal es eth0, cada distribución define su propio mecanismo para mapear una interfaz de red con la dirección MAC de la NIC.

Si por alguna razón se cambia la interfaz de red, se cambia la MAC, o por cuestiones raras después de re iniciar el sistema nos damos cuenta de que ya no existe eth0 o que en un sistema con dos o más interfaces de red se intercambiaron los nombres y hemos perdido la conectividad.

En este articulo explicaré como definir un nombre fijo o persistente a una interfaz de red, el nombre de la interfaz estará mapeado a la dirección MAC de la NIC, de esta forma, independientemente de como el sistema detecte las tarejetas, la interfaz con x MAC siempre tendrá el mismo nombre de interfaz.

En Ubuntu Server se usa udev como mecanismo para definir los nombres persistentes para diferentes dispositivos, a continuación les explico un caso común de cambio de interfaz de red.

Nuestro sistema siempre funcion con eth0 conectado a la LAN, la interfaz fisica se daño y la remplazamos con una nueva, después de reiniciar el sistema nos damos cuenta de que no tenemos red, aquí un procedimiento común para diagnosticar la red en GNU/Linux.

- Verficiar si la interfaz eth0 esta activa:

# ifconfig
 lo Link encap:Local Loopback
 inet addr:127.0.0.1 Mask:255.0.0.0
 inet6 addr: ::1/128 Scope:Host
 UP LOOPBACK RUNNING MTU:16436 Metric:1
 RX packets:58 errors:0 dropped:0 overruns:0 frame:0
 TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0
 RX bytes:4020 (4.0 KB) TX bytes:4020 (4.0 KB)

Como podemos eth0 no esta activa, veamos todas las interfaces de red disponibles en el sistema:

# ifconfig -a
 eth1 Link encap:Ethernet HWaddr 00:1d:72:e7:ce:f4
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:544089 errors:0 dropped:0 overruns:0 frame:0
 TX packets:415730 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000
 RX bytes:492809586 (492.8 MB) TX bytes:102066321 (102.0 MB)
 Interrupt:17

Note que eth0 no existe y en su lugar vemos una interfaz eth1, esto es porque el sistema udev tiene almacenada una configuración donde la MAC de la vieja NIC estaba mapeada a eth0, y como instalamos una nueva tarjeta reservo eth0 para la otra NIC y asigno eth1 a la nueva.

Para mantener nuestras configuraciones anteriores de red y sigamos usando eth0 para la nueva NIC, configuraremos udev para realizar el mapeo.

Editamos el archivo de mapeo de interfaces de red de udev:

# vim /etc/udev/rules.d/70-persistent-net.rules

La configuración anterior esta así:

# PCI device 0x10ec:0x8168 (r8169)
 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="40:61:86:0d:2c:e7", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 # PCI device 0x14e4:0x1684 (tg3)
 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:72:e7:ce:f4", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Veamos que hay dos configuraciones una para eth1 y eth1, para resolver el problema podemos eliminar la configuración anterior para eth0 y en la linea que mapea la interfaz tg3 a eth1, realice los cambios:

Cambiar:

 NAME="eth1"

Por

 NAME="eth0"

Al final su archivo va a quedar:

# PCI device 0x14e4:0x1684 (tg3)
 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:72:e7:ce:f4", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Verifique su archivo /etc/network/interfaces para ver que aun esta su configuración de red para eth0.Si tiene un sistema con multiples interfaces de red y se intercambiaron los nombres puede usar ethtool(8) o mii-tool(8) para indentificar cada interfaz por el enlace fisico y así identifique el MAC de cada interfaz.

Se recomienda que reinicie el sistema para que todo arranque correctamente y que los servicios que dependen de la red inicien con la red apropiada.

Uno de los promeros diagnosticos para verificar si un servidor Linux tiene conectividad es verificar el enlace fisico a nivel Ethernet, en GNU/Linux podemos verificar y cambiar ciertos parametros a nivel Ethernet para una NIC usando el program ethtool.

Para verificar el enlace fisico de la interfaz de red eth0 use ethtool:

# ethtool eth0
 Settings for eth0:
 Supported ports: [ TP ]
 Supported link modes: 10baseT/Half 10baseT/Full
 100baseT/Half 100baseT/Full
 1000baseT/Half 1000baseT/Full
 Supports auto-negotiation: Yes
 Advertised link modes: 10baseT/Half 10baseT/Full
 100baseT/Half 100baseT/Full
 1000baseT/Half 1000baseT/Full
 Advertised auto-negotiation: Yes
 Speed: 100Mb/s
 Duplex: Full
 Port: Twisted Pair
 PHYAD: 1
 Transceiver: internal
 Auto-negotiation: on
 Supports Wake-on: g
 Wake-on: g
 Current message level: 0×000000ff (255)
 Link detected: no

La información importante es la de “Link detected“, como podemos ver en el ejemplo podemos ver que no hay enlace fisico, puede revisar la conectividad desde el cable, patch panels o switches, una interfaz de red con enlace fisico se debe ver:

# ethtool eth0
 Settings for eth0:
 Supported ports: [ TP ]
 Supported link modes: 10baseT/Half 10baseT/Full
 100baseT/Half 100baseT/Full
 1000baseT/Half 1000baseT/Full
 Supports auto-negotiation: Yes
 Advertised link modes: 10baseT/Half 10baseT/Full
 100baseT/Half 100baseT/Full
 1000baseT/Half 1000baseT/Full
 Advertised auto-negotiation: Yes
 Speed: 100Mb/s
 Duplex: Full
 Port: Twisted Pair
 PHYAD: 1
 Transceiver: internal
 Auto-negotiation: on
 Supports Wake-on: g
 Wake-on: g
 Current message level: 0×000000ff (255)
 Link detected: yes

Si la prueba de enlace fisico pasa ahora puede empezar a usar ping :).

En algunas distribuciones no se incluye el programa ethtool ya que incluyen el programa mii-tool(8) que también lo puede usar para validar la conectividad fisica, por ejemplo:

# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok

 

Referencias:

man ethtool(8)
man mii-tool(8)
man ping(8)

Este es mi blog personal en Compugraf, el objetivo es que sirva como una bitácora con experiencias, tips, noticias relacionadas al software libre y GNU/Linux. Me pueden contactar en:

E-mail: jmedina[aRR0Ba]e-compugraf.com

IM (MSN/Gtalk): jmedina[aRR0Ba]e-compugraf.com

Mis Galerias

Lun Mar Mié Jue Vie Sáb Dom
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30