"Hablaré con el corazón abierto en palabra de voluntad
y
razón de sentimiento."
---Si quieres construir un barco, no empieces por buscar madera, cortar tablas o distribuir el trabajo. Evoca primero en los hombres y mujeres el anhelo del mar libre y ancho---

martes, 16 de enero de 2007

Wake On LAN: Arrancando equipos de forma remota

Wake On LAN es un estándar de redes que permite encender un equipo de forma remota, mediante el envío de un Magic Packet, un paquete especial que recibe la tarjeta de red.

Activar y usar Wake On LAN en nuestros equipos con Linux es muy sencillo (¿qué tarea de redes no lo es en *NIX?), y el software necesario lo tenemos en los repositorios de Debian.

Hay que decir que es necesario que la tarjeta de red soporte WOL, pero todas las tarjetas medianamente modernas lo soportan. También ha de estar la opción habilitada en la BIOS.

En primer lugar echaremos mano de ethtool, una herramienta sumamente útil que nos permite ver o modificar las características y configuración de la tarjeta de red. Lo vamos a usar en el equipo que queremos "despertar".

takashi:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x000000c5 (197)
Link detected: yes



Como vemos, la tarjeta soporta WOL (Supports Wake-on: pumbg), además de otros modos. También vemos que el modo está desactivado (Wake-on: d, por disabled). Para activarlo sólo tendremos que ejecutar

ethtool -s eth0 wol g

y ahora veremos cómo la función se ha activado (Wake-on: g). Por algún motivo, la mayoría de los drivers de red en Linux no dejan la tarjeta en modo WOL, y la opción se vuelve a desactivar durante el shutdown. Si os ocurre esto, podéis incluir un script en /etc/init.d (por ejemplo /etc/init.d/wol) para que se active el modo:

#!/bin/bash
ethtool -s eth0 wol g

Le dais permisos de ejecución y lo enlazais con los que se han de ejecutar durante el apagado (runlevel 0):

ln -sf /etc/rc0.d/K20wol /etc/init.d/wol

En el otro lado, el del equipo que tiene que enviar el Magic Packet, debemos instalar el software que envíe la señal. Podemos optar por etherwake o por wakeonlan. El modo es bien sencillo:

etherwake -i

o bien

wakeonlan -i

Si no especificamos la interfaz con la opción -i, el Magic Packet será enviado a través de la interfaz eth0.

También podeis crear el archivo /etc/ethers donde incluir pares MAC/alias, y poder de esta forma sustituir la dirección MAC del equipo remoto por un alias.

Así, cada vez que necesiteis hacer algo en otro equipo de vuestra red, no tendreis ni que levantaros a encenderlo: WOL + SSH y a tirar millas ;)