miércoles, 8 de septiembre de 2010

Wake on LAN / encendido remoto del pc a través de red / Debian Ubuntu Gentoo

Cuándo manejamos servidores, muchas veces nos puede venir bien ya sea por "dificultad de acceso físico" o por simple comodidad, el poder encenderlos remotamente; esto es posible con Wake-on-LAN.

En mi caso, tengo un muy pequeño script en bash, en mi computadora habitual (de aquí en adelante llamado CB) , para encender remotamente el pc configurado con WOL (de aquí en adelante CW).


Procedimiento para CW :

Accedemos a la BIOS del sistema y activamos en el menú correspondiente el Wake up on LAN/Wake up on Ring, Power on by PCI , este paso variará dependiendo del modelo de placa y BIOS de nuestro sistema. También configuraremos la gestión de energía en S1, S3 , S1&S3 o S5 (G2) si lo permite; para mas info aquí.

Guardamos cambios de la configuración de la BIOS y reiniciamos.

Iniciamos el sistema operativo como normalmente, abrimos terminal como superusuario y:

# aptitude install ethtool

# ethtool eth0


(nota: eth0 lo sustituiremos por nuestra interf. de red correspondiente)

el comando anterior nos dará una salida parecida a:


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: pg
Wake-on: g

Current message level: 0x000000c5 (197)
Link detected: yes


Vemos que la tarjeta nos soporta el Wake on LAN, si miramos la salida del man ethtool:


wol p|u|m|b|a|g|s|d...
Sets Wake-on-LAN options. Not all devices support this. The
argument to this option is a string of characters specifying
which options to enable.
p Wake on phy activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket(tm)
s Enable SecureOn(tm) password for MagicPacket(tm)
d Disable (wake on nothing). This option clears all previous
options.


nosotros posteriormente utilizaremos el WOL enviando un paquete mágico con el wakeonlan (opción g).

Si en la línea: Wake-on: g os aparece Wake-on: d es porque tenéis el WOL desactivado. Lo activaremos para la opción g (recordamos, paquete mágico) con:


# ethtool -s eth0 wol g


en el fichero /etc/network/interfaces añadiremos la línea up ethtool -s eth0 wol g justo después de la configuración de vuestra interf. de red. por ejemplo un cat de mi fichero es:


# The loopback network interface
auto lo
iface lo inet loopback

# Xarxa interna
allow-hotplug eth0
iface eth0 inet static
up ethtool -s eth0 wol g
address 192.168.1.102
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255
#Xarxa externa
allow-hotplug eth1
iface eth1 inet static
.
.
.


Procedimiento para CB :


# aptitude install wakeonlan


la instrucción para enviar un magic packet con el wakeonlan es:


wakeonlan MAC


donde MAC es la dirección MAC de la tarjeta de red configurada anteriormente (pc CW); si no la conocemos podemos obtenerla con un # ifconfig

Si queremos hacer un script que nos facilite un poco el proceso:


# nano -w /usr/bin/wake-CW


añadimos:


#!/bin/bash
wakeonlan MAC


guardamos y cerramos.

damos permisos de ejecución:


# chmod u+x /usr/bin/wake-CW


para enviar el paquete bastará con:


wake-CW


Nota: si lo que necesitamos es encenderlo remotamente desde una red externa, la instrucción sera de la forma: wakeonlan -p 9 MAC ; también recordar que será necesario abrir el puerto en/los firewall.

Un saludo.