Apresentação e Mão na Massa
– Resumo:
O conceito de Wake on Lan (WOL) foi desenvolvido pela AMD em 1996 com a finalidade de “acordar” computadores através de evento na placa de rede causado pelo envio de uma sequência especial de pacotes que tem como destino o endereço MAC da placa de rede.
– Pré-requisitos:
Para que esse procedimento seja realizado com sucesso, algumas configurações são necessárias. O suporte ao WOL deve vir disponibilizado na placa mãe ou na placa de rede caso essa seja off-board. Não é possível integrar o suporte ao WOL em um equipamento que não tenha esse suporte nativo de fábrica.
Para que seu equipamento mantenha a placa de rede ativa mesmo com o computador desligado é preciso que você esteja usando uma placa-mãe ATX 20 ou 24 pinos com uma fonte também ATX capaz de prover ao menos 900mA de corrente, para que a BIOS seja ativada mesmo sem o start do sistema (acredito que todas as placas ATX de hoje tenham suporte nativo ao WOL e todas as fontes do mercado sejam capazes de prover 900mA à placa-mãe).
Mão na massa
– Configurando a BIOS:
As configurações da BIOS para ativar o WOL dependem de cada fabricante, mas geralmente estão nas opções de energia da placa onde se pode habilitar o LAN Event ou PME Event como enable, disable ou last state.
- Enable – WOL habilitado para ligar a máquina por eventos de rede;
- Disable – WOL desabilitado;
- Last state – WOL habilitado para ligar o computador caso esteja desligado e desligar caso esteja ligado. Mas para desligar o computador via WOL é preciso também algumas configurações no sistema operacional.
Feito isso, salve as configurações e reinicie a máquina. Como as configurações são feitas diretamente na BIOS o WOL não depende de sistema operacional para ligar o computador mas depende do sistema caso deseje também poder desligar a maquina via WOL, nesse caso eu indico que procure como fazer essa configuração em seu sistema levando em conta que a gama de sistemas é grande demais para abordarmos todos neste tutorial.
– Configuração do sender:
Vamos chamar a máquina que vai enviar os pacotes de sender, ok? No meu caso eu uso Ubuntu mas o aplicativo que faz o envio dos pacotes é compatível com quase todas as distribuições que conheço. O pacote se chama Etherwake um aplicativo simples de usar e de instalar. Para quem usa Ubuntu:
# apt-get install etherwake
Em outros sistemas pode ser instalado através do source disponível em: http://archive.debian.org/debian/pool/main/e/etherwake/etherwake_1.09.orig.tar.gz
Descompacte o pacote usando o comando:
$ tar -zxvf etherwake_x.xx.orig.tar.gz
Entre no diretório descompactado:
$ cd etherwake_x.xx.orig
E compile o código:
# gcc ether-wake.c
Renomeie o executável:
# mv a.out etherwake
Feito isso é só mover para o diretório /bin para ficar disponível de qualquer lugar do sistema.
Usando o aplicativo Etherwake e wake on coioti
Para enviarmos o pacote do sender para o alvo precisamos saber o endereço MAC do alvo. Então, digamos que o meu alvo tem uma placa com MAC 70-71-BC-4E-3A-DB e esteja ligado na mesma rede que meu sender e também esteja ligado à rede elétrica.
Então o comando ficaria assim
# etherwake 70:71:BC:4E:3A:DB
Assim o comando envia a sequência de pacotes ao alvo e a placa de rede aciona o start da placa-mãe através do evento que recebeu em seu endereço MAC.
O pacote etherwake ainda tem a opção -b de broadcast que envia o pacote de start para todas as máquinas da rede:
# etherwake -b
Até aqui tudo bem, vou na máquina alvo, pego o MAC da placa e habilito na BIOS, isso é fácil, mais e se eu tiver um parque com 400 máquinas?
Como fazer para gerenciar uma lista com todos os MACs de todas as placas ?
Complicado né? Foi com esse tipo de problema que me deparei quando comecei a implementar essa tecnologia em alguns clientes.
Decorar o endereço MAC de cada máquina com 6 dígitos hexadecimais é muito complicado, uma planilha eletrônica ficaria muito extensa e mesmo com os filtros se tornaria chato ter que digitar o MAC para cada máquina que pretendo enviar o comando do sender.
– Interface Wake-on-coioti
Por isso resolvi criar um mini aplicativo em shell script de código aberto e licença GPL para simplificar a vida de quem deseja implementar esta solução em sua rede. Eu chamei o aplicativo de Wake-on-coioti e está disponível neste link: https://docs.google.com/folder/d/0B82H-j3D_YFvNDNRTkhoZzdYN1U/edit
Usando essa interface é possível dar um “apelido” às máquinas, como por exemplo a máquina do Diretor Geral da empresa que tem seu hostname como Dirgeral e endereço MAC 70-71-BC-4E-3A-DB. Assim, pode ser adicionada ao banco do aplicativo com o apelido de dirgeral e na hora de acordar a máquina usaremos o comando:
# wake -i dirgeral
Sem se importar qual é realmente o endereço MAC da placa de rede.
Além disso é possível mandar os pacotes para todas as máquinas cadastradas em seu banco usando o parâmetro -t e fazer backup do banco de máquinas cadastradas.
– Instalando o Wake-on-coioti
Depois de baixar o wake-on-coioti, basta descompactar:
$ tar -zxvf Wake_on_Coioti_Vx.x.tar.gz
Entrar no diretório que foi criado:
$ cd Wake_on_Coioti_Vx.x
Verifique as permissões do executável install.sh e se por acaso não estiver com permissão de execução use o comando abaixo para torná-lo um executável:
$ chmod -x install.sh
Dica: Leia o arquivo de README para obter todas as informações sobre a versão e particularidades do aplicativo.
Depois execute o instalador como root:
# ./install.sh
Depois de instalado o aplicativo fica disponível em /bin e sua lista em /opt/te.
Para chamar o aplicativo basta digitar como root o comando wake seguido do parâmetro que deseja e o alvo. Use o paramento –help para obter todas as opções do aplicativo.
Para cadastrar uma máquina use o comando:
# wake -c
Para dizer ao programa que você quer cadastrar um novo computador. Digite o apelido que você deseja dar a esse computador e caso ele ainda não esteja cadastrado ele vai pedir o endereço MAC da máquina que deve ser digitado usando “:” (dois pontos) para separar os caracteres hexadecimais.
Com a máquina cadastrada podemos usar o comando:
# wake -i <apelido>
Para iniciar um computador ou:
# wake -t
Para iniciar todos os computadores cadastrados.
Existem outros comandos que fazem backup, apagam, listam e etc.
Use o:
# wake –help
Para visualizar todas as opções ou leia o README.txt que acompanha o pacote.
Espero ter ajudado.