Esta receta explica cómo evitar que las interfaces de red cambien arbitrariamente de nombre.

Motivación

Es frecuente tener distintos interfaces de red en un mismo equipo, por ejemplo, un portátil tiene ethernet, firewire, wireless y mil historias más. O incluso un equipo que esté funcionando de pasarela puede tener distintos tipos de red en uno y otro interfaz, siendo estos de la misma tecnología. Normalmente no ocurre, pero puede suceder que “bailen” los interfaces, es decir: ayer el RJ-45 era eth0 y el firewire eth1 y hoy resulta que el firewire es eth0 y el RJ-45 es eth1. Esto nos puede causar más de un problema o quebradero de cabeza.

Con este documento pretendemos establecer de una vez por todas quién es eth0 y quién eth1.

El problema

Necesitamos una forma de identificar un dispositivo, esto podremos hacerlo por el driver que usa, la dirección MAC, la dirección base del driver, la línea IRQ que usa el driver, el ARP (tipo de enlace), la información del bus, y en tarjetas wireless, por el tipo de protocolo.

Voy a tratar en este documento la identificación por driver que usa y, a modo de ejemplo, por dirección MAC.

Ingredientes

Sólo dos programitas: ifrename y ethtool, los debianeros ya saben:

# apt-get install ifrename ethtool

Con ifrename podrás nombrar los dispositivos como quieras y con ethtool podrás ver qué drivers usan tus interfaces.

Averiguar qué interfaces tienes

Si quieres obtener información sobre tus interfaces basta con teclear:

$ ifconfig

Aquí podrás ver direcciones MAC, protocolos del canal, etc. Si quieres identificar interfaces con la MAC pues con esto ves qué interfaz tiene tal o cual MAC. Para saber que driver es una u otra interfaz:

$ ethtool -i interfaz

Va, un ejemplo…

$ ethtool -i eth0
driver: 8139too
version: 0.9.27
firmware-version:
bus-info: 0000:00:12.0

Como ves, la interfaz eth0 es la que “crea” el driver 8139too. También puedes ver la información del bus, otra forma de identificar una interfaz.

Configurar los nombres de las interfaces

Pues si tienes una fstab (File System TABle), ¿por qué no tener una iftab (InterFaz TABle)?, pues nada, haz una en /etc. En ella indica cómo se va a llamar la interfaz, qué atributo la identifica y cual debe ser el valor de ese atributo para esa interfaz. Para que nos entendamos:

 $ vi /etc/iftab

Y creamos lo siguiente (este es el que uso en mi portátil):

eth0 driver 8139too
eth1 driver ip1394

Ahora supón que tienes dos drivers iguales, pues lo haces con la MAC:

eth0 mac 12:34:56:78:90:AB
eth1 mac AB:90:78:56:34:12

Puedes especificar varios atributos…

eth0 driver ip1394 mac 12:34:56:78:90:AB
eth1 driver wavelan interrupt 15
air* mac 00:07:0E:* arp 1

Como ves esto tiene muchas posibilidades… ya sólo queda reiniciar (si la configuración que has hecho es distinta de la que tenías en el momento de hacerla).

Referencias

  • Página “man” de ifrename
  • Página “man” de iftab


blog comments powered by Disqus