"Wake On Lan" (WOL)

André Moreira (andre@dei.isep.ipp.pt)
Professor Adjunto do Departamento de Engenharia Informática do ISEP

O objectivo do WOL é usar a rede para activar um posto de trabalho que se encontra desligado. O termo desligado não é inteiramente correcto já que esta operação apenas é possível se a interface de rede mantiver algum tipo de actividade ("standby").

A nomenclatura usada para esta tecnologia varia de acordo com as fontes, assim além de WOL ("Wake On Lan") também se usa a designação RWU ("Remote Wake-Up").

A vantagem desta técnica reside no aumento das possibilidades no domínio da administração remota dos sistemas. Torna-se então possível ligar remotamente um computador, realizar actividades de manutenção (tais como instalar ou actualizar o sistema operativo) e depois desligar o mesmo. O facto de um posto de trabalho poder ser activado remotamente também pode ser visto como uma fraqueza sob o ponto de vista da segurança já que um sistema informático desligado é imune a ataques remotos.

Para impedir a activação remota por intrusos, existem duas técnicas que se podem aplicar: filtrar o endereço MAC de origem; definir uma "password" de activação.

APM (Advanced Power Management)

Com a introdução da tecnologia APM (Advanced Power Management) o controlo sobre a acção de ligar/desligar do equipamento passou para o BIOS/software, para isso foram desenvolvidas novas fontes de alimentação, conhecidas por fontes ATX. Para que o posto de trabalho possa ser ligado por software, uma parte do sistema mantem-se com alimentação eléctrica, no estado "standby".

A energia fornecida no estado "standby" deve ser muito reduzida e portando o sistema tem de reduzir o número de componentes activos e o consumo de cada um deles. Desde logo o CPU, a RAM, o disco e a maioria dos dispositivos periféricos ficam desligados. Na realidade apenas necessitam de se manter em funcionamento "standby" os componentes que eventualmente possam tomar a iniciativa de ligar o computador. Um deles é precisamente a interface de rede. (Obs.: algumas placas-mãe apenas fornecem a energia necessária ao estado "standby" em determinados conectores do barramento PCI).

Nem todas as interfaces de rede possuem a capacidade de activar o posto de trabalho a partir do estado "standby", a forma como a interface de rede comunica com a placa-mãe para activar o sistema não é sempre a mesma.

As especificações de barramento anteriores ao PCI 2.2 não possuiam sinal PME ("Power Management Event"), como tal o sinal destinado a activar o sistema tem de ser enviado à placa-mãe por um cabo auxiliar de 3 pinos "wake-on-lan".

Mesmo as placas-mãe PCI 2.2 dispõem em muitos casos do conector de 3 pinos "wake-on-lan" por forma a suportar interfaces de rede mais antigas. As interfaces de rede mais recentes não usam o cabo de 3 pinos "wake-on-lan" porque enviam o sinal directamente via barramento PCI pelo pino PME.

ACPI (Advanced Configuration and Power Interface)

Esta especificação, disponível nos sistemas mais recentes é uma evolução/expansão do APM que permite aos sistemas operativos controlar em maior detalhe a gestão de energia dos vários componentes. Nesse sentido aos dois estados anteriores "ligado" (S0) e "standby" (S5), são acrescentados vários estados intermédios:

  • S0 - "ligado": funcionamento normal
  • S1 - "sleep": CPU ligado e parado , RAM a funcionar
  • S2 - "sleep": CPU desligado , RAM a funcionar
  • S3 - "suspend to RAM" (standby mode) só a RAM a funcionar
  • S4 - "suspend to disk" (hibernate mode) RAM copiada para o disco e desactivada
  • S5 - "desligado" ("standby")

Estes vários modos são suportados pelos sistemas operativos mais recentes, tais como os sistemas da MicroSoft, desde o Windows 98. Os sistemas operativos da MicroSoft, em particular, não suportam directamente acordar do estado S5 (desligado/standby). Para ser possível acordar o posto do estado S5 pode ser necessário recorrer a "drivers" dos fabricantes em lugar dos da MicroSoft. Outra solução mais radical é, caso o BIOS o suporte, desactivar o ACPI, mantendo-se apenas as funcionalidades APM.

"Network Wake-up Events"

Existem duas vias de levar uma interface de rede com capacidade WOL, em "standby" a desencadear o processo de arranque do sistema onde se encontra instalada:

  • Alteração do estado da ligação de rede ("Link Status Event")
  • Recepção de uma trama com um padrão pré-estabelecido ("Wake Frame Event")

Em qualquer dos casos a interface de rede tem de ser configurada por forma a aceitar os eventos mencionados. Os sistemas operativos com suporte ACPI, quando transitam do estado S0 para outro, procedem a esta configuração. Em LINUX, o comando "ethtool" pode ser usado para alterar a configuração WOL de uma interface de rede "ethernet".

Em modo "standby" as interfaces de rede com capacidade WOL recebem continuamente tramas da rede (mesmo que para reduzir o consumo os LEDs se mantenham apagados), nestas tramas são automaticamente pesquisados determinados padrões de acordo com a informação de configuração previamente fornecida pelo "driver" à interface. Estes padrões ou assinaturas são constituidas por uma sequência de octetos e uma mascara de bits que indica quais os octetos relevantes.

Usando os padrões/assinaturas, em conjunto com a mascara de bits, torna-se possível um número muito grande de diferentes configurações.

Por exemplo se for incluido no padrão o endereço MAC de origem temos um mecanismo simples de controlo de acesso baseado no endereço MAC de origem, neste caso apenas a máquina com o endereço MAC definido pode desencadear o WOL. Outro procedimento de segurança comum consiste em acrescentar uma sequência secreta ao padrão, neste caso para se conseguir o WOL é necessário fornecer ao emissor da trama a sequência secreta anteriormente definida, esta sequência, normalmente de 4 ou 6 octetos é conhecida como "password" "SecureON".

"Magic Packet"

Proposto pela AMD ("Advanced Micro Devices") e pela HP ("Hewlett Packard"), este é o padrão/assinatura de "Wake Frame" mais divulgado e largamente suportado, trata-se de uma sequência de 6 octetos 0xFF seguida de 16 repetições do endereço MAC do nó que se pretende acordar. O comprimento total é portanto de 102 octetos, ao qual pode ainda ser acrescentado uma "password" "SecureON".

Este padrão de 102 octetos pode ocorrer em qualquer ponto do pacote, isto permite que possam ser usados os mais diversos protocolos encapsulados em tramas, por exemplo "datagramas" UDP. Ao usar protocolos de rede como o IP, torna-se possível fazer chegar estes padrões a nós residentes em redes IP às quais o nó emissor não está directamente ligado, isto consegue-se enviando para o endereço de "broadcast" da rede de destino (Obs.: por razões de segurança os "routers" podem bloquear o tráfego cujo destino é o endereço de "broadcast").

Outros "Wake Frames"

Além do "Magic Packet" é possível fornecer à interface de rede outros padrões, por exemplo, correspondendo a situações relacionadas com protocolos superiores:

  • "ARP Wake-Up" - Pedido ARP ("broadcast") de resolução do endereço IP do nó a acordar.
    assinatura = Protocolo ARP + endereço IP
  • "PING Wake-Up" - Pedido de ECHO ICMP dirigido para o endereço IP ("unicast") do nó a acordar.
    assinatura = Protocolos IP/ICMP + endereço IP
  • "NetBIOS Wake-Up" - Pedido NetBIOS ("broadcast") de resolução do nome do nó a acordar.
    assinatura = Protocolos IP/UDP/NetBIOS + nome NetBIOS

Relativamente ao "PING Wake-Up" é de referir que tratando-se de uma emissão IP "unicast", a respectiva entrada ARP terá de ser previamente definida.

Estas assinaturas baseiam-se na manutenção de endereços IP fixos, o que nem sempre se ajusta a um ambiente de rede com postos de trabalho a serem geridos por DHCP. Na realidade estas técnicas baseadas em endereços IP pretendem suportar a evolução do WOL num outro sentido. A arquitectura "OnNow" tem como objectivo generalizar a utilização dos modos "sleep" (S1 e S2), de tal forma que quando o sistema se torna necessário fique disponível num espaço de tempo muito curto (passa rápidamente ao estado S0). Este conceito abranje não apenas os postos de trabalho, mas também os servidores.

Se num posto de trabalho o evento que leva a uma transição para S0 é normalmente uma movimentação no rato ou numa tecla, num servidor será a chegada de um pedido pela rede. Neste contexto o "ARP Wake-Up" apresenta-se como um meio simples de conseguir este proposito, pois sempre que algum nó pretende comunicar por IP com o servidor vai ser gerado um pedido ARP que neste caso vai acordar o servidor. Se a passagem ao estado S0 for suficientemente rápida o servidor recebe então o pedido, processa-o e devolve a resposta. Mais tarde, após um periodo de inactividade poderá passa novamente ao estado S1 ou S2.