Você precisa encaminhar a porta UDP 9 para o endereço de broadcast em sua rede (192.168.1.255, ou similar).
Eu configurei wake on lan
service no meu servidor. Tudo funciona bem na rede local:
root@server$: poweroff
user@local$ wakeonlan AA:BB:CC:DD:EE:FF
e o servidor acorda.
AA:BB:CC:DD:EE:FF
é um endereço MAC do meu server
, que tem o IP 192.168.1.2
e o nome do host: example.com
. Ele está conectado ao roteador, que tem o IP 192.168.1.1 (public: xxx.xxx.xxx.xxx)
Quando o servidor está ativo, posso pingar:
ping example.com
ou faça o login via ssh:
ssh [email protected]
Até agora, tudo bem. Agora sou capaz de despertar o servidor da área local, mas como acordar o servidor da localização remota?
Eu tentei: user@local$ wakeonlan -i xxx.xxx.xxx.xxx AA:BB:CC:DD:EE:FF
, mas não funciona (nada acontece;).
Eu tenho que configurar meu roteador de alguma forma para encaminhar pacotes mágicos? Como?
Após a resposta do Ragnar , a solução pareceu muito fácil.
Mas na verdade, foi um pouco complicado.
Meu roteador é Linksys WAG200g
, que não suporta Wake on LAN por padrão. Além disso, não permite encaminhar trigêmeos acima de 254
(meu endereço de broadcast era 192.168.1.255
).
A solução foi encaminhar a porta UDP 7
para o endereço do servidor, que era 192.169.1.2
, e depois chamar:
wakeonlan -i example.com -p 7 AA:BB:CC:DD:EE:FF
Também instalei um novo firmware:
que é uma ótima atualização de opções de roteador (por exemplo, adiciona a opção Wake on LAN).
Eu também mudei minha máscara de rede de 255.255.255.0
para 255.255.255.128
, então minha transmissão agora é 192.168.1.127
e passa as regras de validação do roteador.
Aqui está o script que eu uso para conectar-me à máquina e ativá-lo, se necessário:
#!/bin/bash
## This sends magic packets to Wake on Lan
## please note, you must formard port 7 to the target machine on your router
## host to wake up
host="example.com"
## mac address of the machive to wake up
mac="AA:BB:CC:DD:EE:FF"
## user to login
user="administrator"
echo "Looking for $host..."
wget -q --tries=2 --wait=1 --waitretry=5 http://$host/
if [ $? -ne 0 ];
then
echo "$host is not available."
echo "Waking up $host."
wakeonlan -p 7 -i $host $mac
echo "$host is booting up. Please wait..."
sleep 30
wget -q --waitretry=5 --wait=5 http://$host/
echo ^G
echo $host is up! Lucky you!
fi
ssh "$user@$host"
Não se esqueça de instalar: wakeonlan
Você precisa encaminhar a porta UDP 9 para o endereço de broadcast em sua rede (192.168.1.255, ou similar).