viernes, 21 de octubre de 2011

Encender un ordenador remotamente

Hola de nuevo.
En este tutorial lo que pretendo es mostrar como encender un pc desde otro pc, claro está, siempre que haya una conexión entre ellos (internet, lan local, etc).
Explicaré todos los pasos necesarios para que podáis conseguir hacer esto.

Lo primero es lo primero, información, ya que no todos sabéis de informática, es mejor que el tutorial comience..... así. XD

Un poco de información:
Cuando un pc se apaga, la fuente de alimentación o batería mantiene la corriente en la placa base a bajo nivel.

Normalmente las placas se valen de esto para mantener la fecha y hora del sistema aún cuando la pila de la placa está agotada, pero hay mas cosas que puede hacer la placa, como encender el pc mediante cualquier pulsación del teclado o mediante la activación de un determinado evento en una tarjeta PCI.

Casi todas la placas de hoy en día permiten el arranque mediante estas opciones añadidas a la BIOS (Pequeño chip que controla la placa base).

Comprobaciones:
A nosotros lo que nos interesa es hacer que el pc se encienda a travez de la tarjeta de red, así que lo primero que tenemos que hacer en el pc que queremos arrancar remotamente, es saber si soporta esta cualidad.
Encendemos el pc, y durante el arranque de este accedemos a la BIOS presionando la tecla 'suprimir' o 'DEL', aunque en muchas placas no sirven estos botones y hay que utilizar otros, estos suelen indicarse durante el arranque con frases como "Press F2  for BIOS Setup", en tal caso presionaríamos F2 y accederíamos a la BIOS.

Una vez dentro, tendríamos que buscar la sección POWER y activar la opción de "despertar por PCI" que en la BIOS puede aparecer como Power On by PCI Devices o el Power On by PCI Cards

Bien, si tenemos estas opciones significa que la placa permite encender remotamente, así que la habilitamos colocando su valor a ENABLE (Habilitado).

Ok, ahora vamos asta la opción exit, y salimos guardando los cambios "Exit and save configuration"

Configuración de tarjeta:
Ahora, ya tenemos activada la opción en nuestra BIOS, pero queda comprobar si nuestra tarjeta de red es capaz de quedarse  'despierta' cuando el ordenador se apaga y avisar a la placa para que se encienda el pc cuando alguien le da la orden.
Esta capacidad se conoce como WOL, que son las siglas de Wake On Lan (despertar/levantar por LAN) y vamos a ver si nuestra tarjeta lo soporta accediendo a nuestro maravilloso mundo que es la terminal de linux.
Lo dicho, encendemos nuestro sistema Linux del pc que queremos arrancar remotamente, y abrimos una terminal.

Lo primero que necesitamos es conocer si nuestra tarjeta soporta la opción WOL, así que instalaremos una pequeña aplicación que nos servirá tanto como para comprobar esto, como para activarlo.

scorpyo@toshiba:~$ sudo apt-get install ethtool

Con eso se instalará el programa ethtool.
Cuando termine la instalación comprobamos cual es nuestra tarjeta de red así:

scorpyo@toshiba:~$ ifconfig

Esto nos devolverá algo como:
eth0      Link encap:Ethernet  direcciónHW 60:4b:a6:50:74:ea  
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:65802 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:65893 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:10748466 (10.7 MB)  TX bytes:4209197 (4

Bien, lo que os he resaltado en azul, es importante.

eth0 Ese es el nombre asignado a la tarjeta de red, en vuestro caso puede ser eth0 o eth1...
60:4b:a6:50:74:ea Es la dirección MAC de la tarjeta de red, que es único.

Debéis apuntar la dirección MAC, ya que la usaremos para despertar la tarjeta desde otro ordenador.

Ahora que ya sabemos como se llama nuestra tarjeta (en mi caso eth0) pues comprobamos si la tarjeta soporta wol usando ethtool así:

scorpyo@toshiba:~$ sudo ethtool eth0
[sudo] password for scorpyo:
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 pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 10Mb/s
    Duplex: Half
    Port: MII
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: d
    Current message level: 0x00000033 (51)
    Link detected: no

De nuevo, os resalto la información importante en azul.
Si os aparece el parámetro Wake-on: d vamos por buen camino, aunque la d significa que está desactivado.

Vamos a activarlo de la siguiente manera:


scorpyo@toshiba:~$ sudo ethtool -s eth0 wol g

Y para comprobar que ahora está activado:

scorpyo@toshiba:~$ sudo ethtool eth0
 
[sudo] password for scorpyo:
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 pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 10Mb/s
    Duplex: Half
    Port: MII
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000033 (51)
    Link detected: no

Como veis, ahora está activada con la opción "g" esto hace que la tarjeta despierte con un MagicPacket (paquete mágico).

El MagicPacket es una señal que se le manda a la dirección MAC que comienza con FF FF FF FF FF FF y sigue con 16 repeticiones de la dirección MAC que queremos despertar.

La opción wol puede activarse de muchas otras maneras, pero la que nos interesa a nosotros es esta. Para mas info sobre esto usar el "man ethtool"

Perfecto, ahora ya hemos hecho que la tarjeta sepa que ha de quedarse a la escucha siempre y cuando apaguemos el pc de forma adecuada, es decir, sin tirar del cable o sacar la batería, o sin apagar a lo bestia desde el botón.... jejeje.

Encendiendo el pc remotamente: 

Para hacer esto es fundamental que el ordenador que queremos encender, esté apagado... jjajajaja ¿claro no? 

Ahora en serio, para arrancar el pc solo necesitamos usar el comando wakeonlan y saber su dirección mac (que ya la apuntamos más arriba) 

Primero instalamos la aplicación, aunque casi seguro que ya la tenéis instalada...

scorpyo@toshiba:~$ sudo apt-get install wakeonlan

Lo segundo y último, es despertar el pc.

Si estamos en su misma red, bastará con:

scorpyo@toshiba:~$ sudo wakeonlan  60:4b:a6:50:74:ea

Y si estamos desde internet en otro lugar del mundo.. jejeje tenemos que hacerlo añadiendo antes de la mac, la dirección ip del router en el que está conectado el pc, o la dirección ip del pc si este se conecta a internet directamente sin router.

scorpyo@toshiba:~$ sudo wakeonlan 82.125.12.14 60:4b:a6:50:74:ea

Y eso os devolverá algo como:

Sending magic packet to 255.255.255.255:9 with 60:4b:a6:50:74:ea

Y el pc, debe de comenzar a arrancar el solito...

Por cierto, normalmente no debe de haber problema atravesando el router, pero si experimentáis problemas al despertar el pc como que no os obedece podéis configurar el router para que os mande los paquetes entrantes por el puerto 9 hacia la dirección de difusión que suele ser la 192.168.0.255

Espero que os haya servido.

1 comentario:

Deja aquí tu mensaje...