Como obter o Wake-on-LAN funcionando?

5

Eu tenho um PC atrás de um roteador com um endereço IP dinâmico que eu quero configurar para o wake-on-LAN.

Como faço para enviar o pacote mágico para o PC? Configuro meu roteador para encaminhar a porta UDP 6 para o PC? Como eu enviaria o pacote de outro PC na rede? Que tal um PC fora da rede?

Isso é possível?

Atualização: aqui está uma tela de configuração pertinente do meu roteador. Alguma esperança?

link

    
por Nathan Osman 18.07.2010 / 17:59

5 respostas

3

O ARP estático é completamente desnecessário

Você conseguiu a primeira parte correta. Para obter o pacote WOL na rede, encaminhe o pacote vindo de uma porta específica para o endereço de broadcast da rede local (255.255.255.255) ou qualquer que seja o intervalo de sub-rede que você deseja que o acesso WOL seja ativado.

O endereço MAC de destino do pacote deve ser definido como transmissão via Ethernet ou FF: FF: FF: FF: FF: FF. O tipo de ethernet do pacote deve ser 0x0842 (Wake On Lan).

Então, para onde vai o MAC do computador que está sendo acordado?

No pacote mágico em si. Os pacotes WOL só foram realmente destinados a serem enviados através de uma rede local. Eles são cegos para qualquer protocolo acima da camada de link. Para contornar essa limitação, eles transmitem (transmissão ethernet não transmissão IP) para todos os computadores na rede e cada computador lê o pacote mágico para ver se ele está sendo chamado.

O conteúdo do pacote mágico contém 16 cópias do endereço MAC do computador que está sendo despertado.

A estrutura do quadro é a seguinte:

DA -> SA -> Type -> Magic Packet

Onde:

DA = FF:FF:FF:FF:FF:FF
SA = [whatever the source MAC is]
Type = 0x0842
Magic = [The actual destination MAC repeated 16x]

Se você quiser testar se os pacotes estão no formato certo, use o seguinte filtro no Wireshark:

ether dst FF:FF:FF:FF:FF:FF and ether proto 0x0842

Basicamente, o aplicativo WOL precisa ser capaz de criar um pacote que imita o endereço Ethernet Destination. Existem ferramentas on-line que podem fazer uma coisa dessas, mas eu não estou familiarizado com elas.

Observação: O motivo pelo qual eu sei muito sobre isso é porque sou o autor do analisador de WOL para SharpPcap (invólucro pcap em c #). Se houver demanda suficiente, eu poderia estender meu aplicativo de console para incluir o envio de pacotes (atualmente apenas sniffs) e torná-lo disponível como um projeto OSS.

Atualização: @ Anderson Anderson fez um bom ponto que eu esqueci de mencionar. Transmitir pacotes recebidos em uma LAN geralmente é uma má ideia. Esta solução funcionará, mas é apenas um truque para contornar as limitações do protocolo Wake On Lan.

A técnica que descrevi funcionará para qualquer computador na rede local como a WOL foi projetada, mas poderia potencialmente abrir sua rede para ser usada como um amplificador de ataque (Smurf / Fraggle / Papasmurf) se alguém para enviar um pacote especialmente criado para a porta WOL.

A abordagem de Evan Anderson é tecnicamente mais segura, mas é limitada a unicast.

    
por 13.01.2012 / 22:13
6

Parece que alguma leitura do WOL está provavelmente em ordem primeiro. Algumas leituras adicionais sobre Ethernet, ARP e UDP / IP provavelmente também estão em ordem.

O comportamento do WOL em um cliente é acionado por um "pacote mágico". O pacote mágico pode ser encapsulado em qualquer tipo de transporte (UDP sobre IP, IPX, etc). A sequência de bytes do pacote mágico só precisa estar na carga útil de um pacote que a placa de rede a ser despertada receberá.

Enviar solicitações WOL na LAN é fácil. Obter um utilitário para fazer pacotes mágicos (como mc-wol para Windows) e disparar.

O envio de solicitações de WOL da Internet é mais problemático. Você está no caminho certo com o encaminhamento de uma porta UDP da Internet para a LAN, mas há outras preocupações.

Você tem um problema com solicitações de WOL unicast da Internet da seguinte maneira: O endereço MAC do computador cliente WOL não estará na tabela ARP do roteador porque, como o cliente WOL está desligado, essa entrada ARP envelheceram. Quando o roteador recebe uma porta de pacote IP encaminhada para o endereço IP do cliente WOL enquanto o cliente WOL está desligado e seu endereço MAC está fora da tabela ARP, o roteador não poderá entregar o pacote ao cliente. Você precisará de um roteador com capacidade ARP estática para fazer isso funcionar.

A rota de transmissão é ainda menos provável. Como você provavelmente não tem uma sub-rede pública atrás do seu roteador, mas está usando o NAT para compartilhar um único endereço IP público em sua LAN, não há como endereçar remotamente um pacote ao endereço de broadcast de sub-rede da sua sub-rede LAN. o roteador (se pudesse encaminhar broadcasts direcionados) geraria uma camada 2 transmitida com o pacote WOL para permitir que o cliente WOL "a visse".

WOL na sua LAN será fácil. O WOL na Internet não é tão simples.

    
por 18.07.2010 / 23:28
1

Em vez de repetir por que você vai ter problemas, eu simplesmente descreverei como superei os problemas que Evan já explicou.

Meu firewall / roteador é baseado em Linux, o que significa que eu posso executar comandos nele. Para ativar as máquinas na LAN, primeiro conecto o SSH ao firewall e, em seguida, executo um script Perl que cria o pacote mágico e o envia para a LAN. O endereço MAC do destino pode ser transmitido como um parâmetro de linha de comando ou codificado, conforme apropriado.

Claro que se você não conseguir executar comandos no seu roteador, precisará encontrar um meio alternativo.

    
por 18.07.2010 / 23:42
0

Como Evan e John já cobriram, é improvável que o WoL na Internet funcione.

Você precisa de algum tipo de dispositivo dentro do firewall que possa enviar os pacotes em seu nome. Nós usamos um aplicativo da web hospedado em nossa intranet. Parece que não é uma opção, então há apenas outras três opções que vêm à mente:

  • Deixe um dispositivo de baixa potência, como um thin client baseado em Linux, do ebay ativado para as necessidades de ativação do seu PC.
  • Se tiver um PC com plataforma Intel com vPro, compre um certificado e você poderá ativar o PC através do processador de serviços em vez de WoL.
  • Eu mesmo não fiz isso, mas acredito que algumas unidades UPS (Uninterruptible Power Supply) fornecem a capacidade de ligar e desligar portas. Não tenho certeza do que é uma unidade capaz de fazer isso, mas provavelmente vale a pena investigar.
por 19.07.2010 / 04:38
0

Descobri recentemente que a porta encaminhando uma porta UDP para x.x.x.255 funcionava em um roteador, mas não em outro.

Eu adicionei uma entrada ARP estática no roteador através do telnet arp add x.x.x.y FF:FF:FF:FF:FF:FF para um IP interno% não utilizadox.x.x.y para FF:FF:FF:FF:FF:FF (o MAC transmitido) conforme observado aqui e a porta encaminhada a porta UOL do WOL para esse IP não utilizado, que funciona para mim para o WOL a partir da Internet.

    
por 26.10.2011 / 22:59