Wake On Lan – WoL y Wake on Wan

Wake on Lan, WoL, es una estándar de red que nos permite encender un equipo remotamente.

Para que el equipo se encienda :

  • El equipo debe soportar Wake on Lan ( WoL ) y tenerlo activado en la Bios y en la tarjeta de red.

Algunos equipos que no tienen la tarjeta de red integrada, suelen traer un cable de tres hilos que hay que conectar de la tarjeta de red a la placa base.

¿ Cómo verificamos si nuestra tarjeta de red tiene activado wake on lan ?

En windows abrimos las propiedades de la tarjeta de red y en opciones avanzadas nos fijamos en Configuración de la Reactivación

En linux, verificamos mediante ethtool cómo está configurado.

En este caso lo tenemos activado y con la opción de Magic Packet que veremos mas adelante.

[root@vmware ~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
Link detected: yes

las opciones son :

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.

La línea Supports Wake-on: pumbg nos dice que modos soporta nuestra tarjeta.

La línea Wake-on: g nos dice que opción tenemos activada.

La sintaxis para activar la opción de Magic Packet ( g ) sobre la interfaz de red eth0 es:

ethtool -s eth0 wol g

  • Necesitamos conocer la dirección MAC del equipo remoto.

Si no conocemos la dirección del MAC del equipo no podremos “despertarlo”.

En linux con un ifconfig veremos nuestra/s mac/s y en windows con un ipconfig /all o con un netsh lan show interfaces

C:\>netsh lan show interfaces

Hay 1 interfaces en el sistema:

Nombre            : LAN
Descripción      : Intel(R) 82567LM Gigabit Network Connection
GUID             : c8c94c-089e-c8c94c-c8c94cc8c94c
Dirección física: 00-24-E8-BB-87-A4
Estado            : Cable de red desconectado

  • Finalmente probarlo con una aplicación de wake on lan.

Magic Packet es la trama que llegará a nuestra tarjeta de red y encenderá el equipo si todo está bien configurado.

Magic packet es una trama a la dirección de broadcast de capa 2 con un payload de 6 bytes.

El payload contiene la dirección de brodcast y dieciséis repeticiones de la MAC que queremos despertar.

Si deseamos encender un equipo que no está en nuestra lan ( Wake on Wan ), podemos hacerlo conociendo la ip del host remoto o la ip del router/firewall remoto ( en este caso requiere un nat entrante o un pat – dependerá de la topología ), además de la mac del equipo que queremos encender.

En el caso de necesitar atravesar un nat entrante o pat, es posible que debamos especificar el puerto. Normalmente se usa el udp/7 o udp/9

Ejemplo de Wake on Lan / Wake on Wan :

Deseamos arrancar un equipo de nuestra lan desde internet.
Atravesaremos firewalls, routers, nats y finalmente el paquete enrutado será desencapsulado y observaremos la captura de tráfico.

Como software wakeonlan yo uso el rpm “wakeonlan” en un cliente linux

[root@despertador ~]# rpm -qa | grep wake
wakeonlan-0.41-0.fdr.1

Installed Packages
Name : wakeonlan
Arch : noarch
Version: 0.41
Release: 0.fdr.1
Size : 13 k
Repo : installed
Summary: Perl script to wake up computers through Magic Packets

Description:
This script sends ‘magic packets’ to wake-on-lan enabled ethernet

La sintaxis es sencilla :

[root@despertador ~]#  wakeonlan -h
Usage
wakeonlan [-h] [-v] [-i IP_address] [-p port] [-f file] [[hardware_address] …]

Options
-h
this information
-v
displays the script version
-i ip_address
set the destination IP address
default: 255.255.255.255 (the limited broadcast address)
-p port
set the destination port
default: 9 (the discard port)
-f file
uses file as a source of hardware addresses

En este ejemplo, especifico con -i el host o ip, el puerto udp/7 ( echo udp ), la mac del equipo que quiero encender :

[root@despertador ~]# wakeonlan -i despierta-ya.dyndns.org -p7 90:FB:A6:22:6B:3D
Sending magic packet to despierta-ya.dyndns.org:7 with 90:FB:A6:22:6B:3D

pixie# sh log
302015: Built inbound UDP connection 651889 for outside:X.X.X.X/4245 (X.X.X.X/4245) to inside:192.168.1.100/7 (Y.Y.Y.Y/7)

Veamos el nat entrante de la ip pública del firewall hacia el host a despertar por el udp/7 ( udp echo ):

static (inside,outside) udp interface echo 192.168.1.100 echo netmask 255.255.255.255 0 0

Atención:

Algunas tarjetas aunque tengan activada la opción de wake on lan, no anuncian su mac cuando el equipo está apagado aunque exista link, así que nos encontraremos con la necesidad de añadir una entrada estática de la mac del host en el switch.

Veamos la captura de tcpdump :

[root@despertador ~]# tcpdump -nni eth0 host despierta-ya.dyndns.org
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
18:38:23.048324 IP Z.Z.Z.Z.46171 > X.X.X.X.7: UDP, length 102

Y ahora veamos el payload :

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *