você está aqui: Home  → Arquivo de Mensagens

Ligue seu micro remotamente (wake on lan)

Colaboração: Renato Mangini

Data de Publicação: 01 de Dezembro de 2007

Tenho uma configuração ideal para trabalhar em casa: um roteador+firewall, um PC com muito disco e um notebook. Porém, precisava com frequência acessar o meu computador de casa quando estava em viagem ou em algum cliente (por exemplo, para o repositório subversion, via SSH). Não gosto da idéia de deixar o computador ligado 24x7, pois baixo pouca coisa e acho um gasto de energia ($$) desnecessário.

Pois bem, para resolver esse problema configurei o tal Wake-on-LAN que muitos devem ter ouvido falar, para funcionar como Wake-on-WAN. Tem alguns caveats que descrevo abaixo, pois podem ser úteis para mais algúem.

Wake-on-LAN (WoL)

Se a sua placa-mãe suportar, o seu computador poderá ser ligado ao receber um pacote especial (chamado de Magic Packet) via UDP. O pacote deve conter uma sequência de bits predefinida (alguns 0xff) seguida do endereço MAC da sua placa de rede repetida três vezes. Ao reconhecer um pacote com esse formato chegando via protocolo UDP em uma determinada porta (geralmente 7 ou 9), a placa de rede aciona um dispositivo da sua placa-mãe e inicializa o computador. A placa de rede fica meio que hibernando enquanto o computador está desligado, e só responde a esse magic packet.

Mais informações sobre WoL na [Wikipedia http://en.wikipedia.org/wiki/Wake-on-LAN]

Quick-and-dirty WoL for (not-so) dummies

  1. Configurar a sua BIOS para permitir o WakeOnLan. Aproveite e confira qual a porta em que ele aceita os magic packets. Geralmente é a porta UDP 9.

  2. Configurar o seu roteador/firewall para, ao receber um pacote em uma porta arbitrária, redirecioná-lo para a porta correspondente do WoL. No meu caso, uso um roteador DLink DI-624. A porta aceita pela minha placa-mãe é a 9, e tive que fazer uma gambiarra para funcionar (veja observação abaixo). Se seu computador está ligado direto ao cable/ADSL modem, pode saltar esse passo;

  3. Arranjar um jeito de saber remotamente qual o IP da sua subrede. Uma idéia é usando um serviço de IP dinâmico, como o http://www.dyndns.com ou o http://www.no-ip.com . Alguns roteadores, como o DI-624, permitem configurar sua conta nesses serviços. Assim, se a energia acabar, quando o modem ADSL/cabo voltar um novo IP pode ter sido fornecido pelo seu provedor. O roteador, nesse caso, atualiza o DNS dinâmico automaticamente;

  4. Baixar e instalar no cliente (máquina que vai enviar o pacote) um programa que monta e envia o Magic Packet. Eu usei um [script em Perl http://gsd.di.uminho.pt/jpo/software/wakeonlan/], mas tem programas para várias outras linguagens. Para executá-lo, é necessário saber qual o IP ou nome da sua rede (veja item anterior), e o MAC address da sua placa de rede (digite ipconfig no Windows ou ifconfig no Linux).

Problemas com roteador/firewall

Se, por definição, a máquina que queremos ligar está desligada, então ela não obteve ainda um endereço IP e por isso não dá para configurar o roteador para fazer forwarding para o IP dela. A solução seria um broadcast para toda a rede, correto? (por isso que se chama Wake on LAN, e não Wake on WAN). O problema é que a maior parte dos roteadores não permite port forwarding para o endereço de broadcast da rede. O meu, inclusive, é um desses (Dlink DI-624).

Na tela de configuração avançada (Advanced->Virtual Server) do DI-624, tem um campo para endereço IP. Colocando o valor 192.168.0.255 (broadcast) gera um erro. Analisando a página, vi que a validação acontece no Javascript da página, e tentei arriscar olhando o formulário que é enviado. Mandei o formulário diretamente via GET e... adivinhem... funcionou! :-) Então, apesar da página de configuração não permitir, no software do roteador não há nenhuma restrição a broadcast, e funciona perfeito.

Para os preguiçosos, no caso do DI-624, basta acessar a seguinte URL (mude em pubPort e priPort os valores adequados para a sua configuração): http://192.168.0.1/adv_virtual.cgi?editRow=-1&delrow=-1&name=Wake+on+lan&ip=192.168.0.255&protocol=17&priPort=9&pubPort=1234&schd=0&hour1=0&min1=0&am1=0&hour2=0&min2=0&am2=0&day1=0&day2=0

Depois, confira em http://192.168.0.1/adv_virtual.html se apareceu uma regra de forwarding com o nome de "Wake on lan".

Li também que alguns roteadores permitem essa configuração por meio da interface telnet, mas não pela Web. Neste caso, basta logar via Telnet e tentar, conforme as instruções específicas do seu roteador.

Outra opção, caso o roteador tenha servidor telnet, é logar nele e tentar configurar uma entrada estática na tabela ARP.

Se não for possível fazer broadcast nem mudar a tabela ARP, aí desista. Provavelmente não terá jeito :-(



Veja a relação completa dos artigos de Renato Mangini