01 enero 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 <interfaz para el envío> <MAC address del equipo remoto>

o bien

wakeonlan -i <interfaz para el envío> <MAC address del equipo remoto>

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 ;)

3 comentarios:

Anónimo dijo...

Me parece muy bueno este howto sobre WoL. Actualmente estoy haciendo un trabajo sobre WoL y necesito saber cómo hay que apagar el ordenador para que se pueda encender por este método ¿Sirve un simple shutdown o habría que decirle que lo deje en stand-by?

kirazuel dijo...

Hola Carlos, gracias ante todo :)

Para que la placa base reciba la señal que la NIC envía al recibir el Magic Packet y pueda arrancar el equipo es necesario que esté recibiendo energía, es decir, que esté conectado a la red eléctrica y el interruptor de la fuente de alimentación esté en ON, osea, como suele estar siempre que está apagado :)

Teniendo en cuenta esa pequeña salvedad, un shutdown normal permite que la tarjeta de red quede a la escucha. No, no es necesario dejarlo en stand-by.

Anónimo dijo...

Muchas gracias por tu respuesta, un saludo.

PD: Las palabras de verificación de blogger cada vez se complican más ¡He tenido que actualizar porque no la entendía ni yo!