Encendido desde la red (wakeup on LAN)

Hoy en día hay mucha gente que tiene en casa un PC conectado a Internet casi siempre encendido y al que se puede acceder desde cualquier lugar, normalmente por SSH en sistemas UNIX. En muchos casos, es bastante normal que además de ese PC 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 PC de forma remota porque necesitamos un archivo 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 PC está apagado, siguen alimentando a ciertas partes del metherboard 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 PC y tenemos que permitir el Power On by PCI Devices o el Power On by PCI Cards.

Configurar la tarjeta de red en el sistema operativo

En GNU/Linux, para hacer esto mismo, la herramienta más indicada es el ethtool. Este comando nos permite mostrar o cambiar parámetros de la mayoría de los drivers de las tarjetas Ethernet incluidos en kernels >=2.4.

# 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: d
        Link detected: yes

Para cambiar los parámetros de WoL, tenemos varias opciones que podemos consultar en el man ethtool, en función de bajo qué circunstancias queremos que el PC despierte:

       wol p|u|m|b|a|g|s|d...
              Set  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.

Lo mejor para asegurarnos de que el PC sólo se despertará cuando nosotros queramos y no por otro tipo de tráfico que podría aparecer en la red, es elegir que despierte con un MagicPacket, que es una trama ethernet que comienza con FF FF FF FF FF FF y sigue con 16 repeticiones de la dirección MAC. Si la MAC fuera 01:02:03:04:05:06, el paquete mágico contendría en el campo de datos:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506010203040506010203040506010203040506
010203040506010203040506

Por tanto, activamos el WoL para MagicPacket:

# ethtool -s eth1 wol g

# 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.

Encender la PC

para encender la PC simplemente utilizamos el comando:

# wol FF:FF:FF:FF:FF:FF
Waking up FF:FF:FF:FF:FF:FF...
donde FF:FF:FF:FF:FF:FF es la MAC del PC que deseamos encender

=-=-=-=-=
Powered by Blogilo

Anuncios

2 comentarios to “Encendido desde la red (wakeup on LAN)”

  1. KSEL Says:

    ksel@mia:~$ wol 00:0a:e6:29:bb:9f
    No command ‘wol’ found, did you mean:
    Command ‘wml’ from package ‘wml’ (universe)
    Command ‘wwl’ from package ‘wwl’ (universe)
    Command ‘col’ from package ‘bsdmainutils’ (main)
    Command ‘owl’ from package ‘owl’ (universe)
    Command ‘sol’ from package ‘aisleriot’ (main)
    Command ‘w2l’ from package ‘writer2latex’ (universe)
    wol: command not found

  2. vampird Says:

    en openSUSE “zypper in wol”, en debian supongo que “apt-get install etherwake wakeonlan”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: