Etherwake + wake on coioti

Apresentação e Mão na Massa

Olá amigos do VOL! Este é o meu primeiro artigo aqui no site e vou falar sobre uma tecnologia já antiga (1996) e que quase não se ouve falar dela, mas pode ser útil a muitos administradores de rede e usuários domésticos. Ela se chama WOL (Wake on Lan – Acordado pela rede).

– 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.
Linux: Etherwake + wake on coioti

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.

Rolar para cima