domingo, 2 de noviembre de 2008

NetworkManager: Forzar el reinicio de las interfaces de red

Hay diversas estrategias para intentar recuperar nuestras interfaces de red (reiniciar interfaz de red) cuando se encuentrán inaccesibles. Podemos necesitar forzar el "down" de una interfaz de red cuando el NetworkManager no es capaz de arrancar porque otro proceso tiene bloqueado la tarjeta de red o simplemente la tarjeta está en un estado inconsistente o bloqueado. La idea es conseguir algo similar a lo que hace el comando ifdown (shutdown interface) / ifup.


a) En el caso de disponer de una tarjeta wifi y de un interruptor (normalmente en los portátiles), podemos realizar un apagado físico del dispositivo usando dicho interruptor y volver a encenderla.

b) Podemos probar directamente en el icono del NetworkManager , haciendo click con el botón derecho y pulsando sobre a "Activar red" para activar/desactivar toda nuestras redes. O en el caso de la wifi "activar inalámbrico"

c) Combinar las dos opciones anteriores, apagando tanto la tarjeta a nivel físico (interruptor) como el NetworkManager

d) Podemos "matar" y reiniciar el NetworkManager usando el comando:
(pidof NetworkManager | xargs kill -9 ) || NetworkManager
o simplemente
(pkill NetworkManager) || NetworkManager

donde pidof nos devuelve el pid (identificador del proceso) y en el caso de pkill mata un proceso por su nombre, en lugar de por el pid como hace el kill normal.

e) La última opción, pero no por ello la peor, consiste en usar el script de arranque /etc/init.d/network . Las opciones son las habituales:

/etc/init.d/network stop : realiza un "shut down" del NetworkManager,de todas las interfaces y del servicio network
/etc/init.d/network start : aranca el NetworkManager, las tarjetas de red y el servicio
/etc/init.d/network reload : realiza sucesivamente un stop y luego un start, es equivalente a reiniciar el servicio
/etc/init.d/network force-reload : fuerza un reload

Ejemplo:
Si estamos conectado a una red inalámbrica e intentamos poner la tarjeta inalámbrica en modo "Monitor":
iwconfig wlan0 mode Monitor

nos saldrá el mensaje de error:
Error for wireless request " Set Mode" (8B06):
SET failed on device wlan0 ; Device or resource busy.

Esto se debe a que el NetworkManager tiene ocupada la tarjeta inalámbrica. Asi que seguimos la estrategia (b):
click derecho en el NetworkManager y pulsamos "Activar inalámbrico" para desactivarla. Cuando esté desactivada podremos poner la tarjeta en modo monitor.

El ejemplo contrario. Si tras usar algún programa como kismet, no podemos volver a modo managed (iwconfig wlan0 mode Managed) o no funciona el NetworkManager usaremos alguna de las estrategias explicadas anteriormente. Por ejemplo como root ejecutaremos:

/etc/init.d/network reload

Y todo debería volver a la normalidad.

No hay comentarios: