jueves, 17 de noviembre de 2011

Un poco más de la configuración de red en Linux

Sin entrar en detalle de cómo configurar un interfaz de red desde la línea de comandos, ni tampoco explicar la sintaxis y significado de los campos de los archivos de configuración de red (/etc/network/interfaces, /etc/resolv.conf, /etc/hostname, ...), comentaré algunas triquiñuelas sobre la configuración de la red. Triquiñuelas que en alguna ocasión pueden causarnos quebraderos de cabeza, sobre todo cuando el sistema no responde como esperamos. Al tajo!

La siguiente imagen es un ejemplo del archivo de configuración de red /etc/network/interfaces


Independientemente de cómo esté configurada cada interfaz de red, fijémonos en las líneas que aparecen resaltadas:
  • allow-hotplug   eth0
  • auto   eth1
Primer problema... ¿qué significa “allow-hotplug”? Porque lo más normal es que aparezca “auto”. Podríamos traducirlo por “permitir hotplug”... Pero.. ¿qué narices significa “hotplug”? Hago un copia y pega (http://www.escomposlinux.org/lfs-es/lfs-es-6.1/chapter06/hotplug.html):
El paquete Hotplug contiene guiones que reaccionan a eventos hotplug (conexión de dispositivos en caliente) generados por el núcleo. Dichos eventos corresponden a cada cambio en el estado del núcleo visible en el sistema de ficheros sysfs, por ejemplo, la adición o eliminación de hardware.
Por ejemplo, cuando conectas un USB el núcleo detecta que el dispositivo está conectado y genera un evento hotplug para poder utilizarlo.

Bueno, ahora ya conocemos el significado de “hotplug”. Y en nuestro caso “allow-hotplug eth0” en el archivo de configuración /etc/network/interfaces vendría a decir que podemos conectar y desconectar la tarjeta de red (llamada eth0 por el sistema) en caliente, y que el sistema detectaría dichos cambios. Esto nos puede venir bien si estamos trabajando con Linux instalado en una máquina virtual.

¿Para qué cuento todo ésto? Pues porque ultimamente he tenido problemillas al intentar al jugar con los comandos:
# /etc/init.d/networking restart
# service networking stop
# service networking start

Qué son los indicados para reiniciar la red. Sin embargo puede que no respondan bien pues no generan un evento hotplug, así que en nuestro ejemplo el interfaz eth0 no se levantará. Para evitar tener que reiniciar el sistema podemos usar los comandos ifup o ifdown, para activar y desactivar un interfaz de red.
Para activar un interfaz con ésto debería ser suficiente:
# ifup  
# ifup   eth0

Pero dando un paso adelante tenemos las siguientes posibilidades:
# ifup   -a
  • Activa todos los interfaces definidos con “auto” en /etc/network/interfaces
# ifup  --allow=hotplug eth0
  • Solo activa los interfaces definidos en /etc/network/interfaces con una línea "allow-hotplug". Cuidado! Delante de allow hay dos guiones.
# ifdown   -a
  • Desactiva todos los interfaces de red que están activos
Una opción interesante del comando ifconfig es:
# ifconfig  -a
  • Muestra todos los interfaces de red que están actualmente disponibles, aunque estén desactivados
Links interesantes: