Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Wake On LAN: SSH VNC RDP
Wake On LAN: SSH VNC RDP
Hoy en día hay mucha gente que tiene en casa un ordenador conectado a Internet casi siempre
encendido y al que se puede acceder desde cualquier lugar, normalmente por SSH en sistemas
UNIX (aunque también hay servidores SSH para sistemas Windows, son menos frecuentes,
porque las posibilidades que tenemos en la shell de Windows son muy limitadas) y por VNC o
RDP en Windows. En muchos casos, es bastante normal que además de ese ordenador
siempre encendido se tenga algún otro que sólo se enciende cuando se está en casa.
Pero hay veces que, estando lejos, nos puede interesar encender ese otro ordenador de forma
remota porque necesitamos un fichero que tenemos en él o necesitamos hacer algo en él. Para
esas situaciones, lo mejor es tener el Wake on LAN (WoL) preparado en esa máquina y las
utilidades necesarias para activarlo en la máquina que no solemos apagar.
El WoL es posible en los PCs actuales gracias a las fuentes de alimentación ATX que, cuando
el ordenador está apagado, siguen alimentando a ciertas partes de la placa base permitiendo
asimismo el Wake on Ring y la posibilidad de arancar el PC sólo pulsando una tecla del teclado
o que se encienda a una determinada hora.
Requisitos Hardware
Para que una tarjeta de red pueda hacer un WoL, es necesario que la tarjeta bien soporte el
estándar PCI 2.2, bien sea unida con un cable a un conector específico de la placa base:
En las placas base más modernas, con uno o más interfaces de red ya integrados en la propia
placa, no necesitamos hacer nada a nivel de hardware para que el WoL funcione.
Configurar la BIOS
Por tanto, el primer paso tras verificar que el hardware es apto, es configurar la BIOS para que
permita que dispositivos PCI despierten al ordenador. Las opciones tienen el siguiente aspecto
en las BIOS, y tenemos que permitir el Power On by PCI Devices o el Power On by PCI Cards:
# ethtool eth1
Settings for eth1:
Supported ports: [ MII ]
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: MII
PHYAD: 9
Transceiver: external
Auto-negotiation: on
Supports Wake-on: g
Wake-on: g
Link detected: yes
Antes de apagar el PC para probar el WoL, es necesario anotar la dirección MAC para poder
usarla en el sistema donde vamos a lanzar la petición. Para ello, desde la línea de comandos,
en Windows podemos ejecutar ipconfig /all, comando que, entre otras cosas, nos mostrará para
todos los interfaces la Physical Address. En Linux podemos ejecutar ifconfig ethX, que
también nos mostrará, entre otras cosas, la HWaddr para el interfaz elegido.
Es importante tener en cuenta que si la tarjeta no se queda configurada para el WoL, no
funcionará. Esto puede ocurrir en la mayoría de los casos en los que apaguemos el PC de
forma incorrecta (por botonazo).
Options:
-b Send wake-up packet to the broadcast address.
-D Increase the debug level.
-i ifname Use interface IFNAME instead of the default 'eth0'.
-p <pw> Append the four or six byte password PW to the packet.
A password is only required for a few adapter types.
The password may be specified in ethernet hex format
or dotted decimal (Internet address)
-p 00:22:44:66:88:aa
-p 192.168.1.1
# wakeonlan
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
See also
wakeonlan(1)
Si ejecutamos por ejemplo etherwake 00:11:d8:c4:59:5e sin más opciones mientras en el PC
que debería estar apagado ejecutamos un tcpdump vemos el paquete llega en forma de
paquete ethernet raw:
12:17:01.636887 00:50:63:b5:0c:32 (oui Unknown) > 00:11:d8:c4:59:5e (oui Unknown),
ethertype Unknown (0x0842), length 116:
0x0000: ffff ffff ffff 0011 d8c4 595e 0011 d8c4 ..........Y^....
0x0010: 595e 0011 d8c4 595e 0011 d8c4 595e 0011 Y^....Y^....Y^..
0x0020: d8c4 595e 0011 d8c4 595e 0011 d8c4 595e ..Y^....Y^....Y^
0x0030: 0011 d8c4 595e 0011 d8c4 595e 0011 d8c4 ....Y^....Y^....
0x0040: 595e 0011 d8c4 595e 0011 d8c4 595e 0011 Y^....Y^....Y^..
0x0050: d8c4
Sin embargo, con el wakeonlan, lo que vemos es un paquete UDP al puerto de discard (9)
# wakeonlan 00:11:D8:C4:59:5E
Sending magic packet to 255.255.255.255:9 with 00:11:D8:C4:59:5E
Para finalizar
Resumen de los que necesitamos para que el WoL funcione:
● Que el hardware lo permita
● Configurar la BIOS
● Configurar el interfaz de red para que acepte las peticiones de WoL
● Dejar el PC correctamete apagado
● Enviar la petición desde otro sistema
Curiosidades relacionadas:
● Niko y Matthieu se han hecho un circuitillo conectado al conector del WoL para
despertar el ordenador cuando ellos quieran.
● Cuando apagamos el PC los ventiladores se apagan de golpe, pero los componentes
siguen calientes. Como esto no es sano, hay dispositivos que usando el conector WoL
alimentan durante un rato más los ventiladores hasta que se enfrien.
● Documentos y programas para programar el temporizador de arranque de la BIOS:
MythTV ACPI Wakeup, NVRAM WakeUp para Linux, CMOSTimer para Windows.
Ahora con un simple wakeonlan desde una máquina de Internet externa a la red
despertaríamos a la máquina en cuestión. El tener configurada en el router la resolución
dinámica de la IP pública que el ISP le ha dado al router (con DynDNS o con cualquier otro
proveedor de este tipo de servicios) nos ayuda muchísimo para no necesitar saber siempre
dicha IP pública en el caso de que sea dinámica:
# wakeonlan -i pruebawol.dyndns.org -p 6789 00:11:D8:C4:59:5E
Sending magic packet to pruebawol.dyndns.org:6789 with 00:11:D8:C4:59:5E
Si quisiéramos ahorrarnos la molestia de alterar la tabla de ARP del router manualmente, en
este router en concreto funciona el poner una IP de broadcast en la tabla de mapeo de NAT:
Tras esto, el mismo comando wakeonlan de antes despertaría la máquina sin necesidad de
ningún cambio en el interfaz de línea de comandos del router.
Para finalizar la actualización, comentar que cuando estaba buscando qué comando usar para
alterar la tabla ARP del router, he encontrado este excelente tutorial en ADSLZone: WAKE ON
LAN/WAN (Encender remotamente un ordenador) (tienen más tutoriales sobre el 660HW), que
además de aportar muchos detalles muy interesantes comenta cómo modificar el autoexec.net
para que la entrada de la tabla ARP permanezca incluso después de reiniciar el router. En
cualquier caso, creo que la opción de la IP de broadcast es mucho más sencilla, aunque mucho
menos instructiva también.