sábado, 25 de abril de 2015

Como ligar seu computador remotamente usando Wake on LAN


Um dia desses, eu estava pensando em como posso ter acesso a vários recursos do meu PC mesmo quando estou fora de casa. Posso ter um servidor de FTP para acessar arquivos, posso ter controle sobre meus downloads, até controle total sobre a máquina via VNC. Basta registrar um DNS, ajeitar os serviços e pronto, controle total!
Mas e se a máquina estiver desligada?
Bom, posso ligar pra casa e pedir para alguém simplesmente ligar meu PC. Tá, mas e se não houver ninguém em casa!? Aí ferrou, né?
Calma que existe solução.

Muitos já devem ter ouvido falar no recurso Wake-on-LAN, que permite disparar um comando pela rede para acordar uma máquina. Um detalhe interessante sobre o recurso é que ele não funciona só quando a máquina está “dormindo” (quando você manda “Suspender”, este é o chamado estado S3), mas funciona também quando ela está “Hibernando” ou realmente desligada (estados S4 e S5, respectivamente).
A única pegadinha, porém, é que para que o recurso funcione, a máquina precisa ter sido ligada pelo menos uma vez. Ou seja, você liga o computador normalmente, usa e manda desligar; depois disso você pode mandar um comando de Wake on LAN que ele vai LIGAR o computador.
Isso acontece porque mesmo desligada (mas ainda alimentada), a máquina está em “stand by” (espera) e ao detectar “pacote mágico” (é sério, o negócio é chamado de “magic package”), o controlador de rede (seja ele onboard ou offboard) pode gerar uma interrupção que acorda a máquina.
Sim, outro detalhe é que para isso funcionar, o suporte a ErP (ou EuP), uma norma europeia que diz que equipamentos em stand by devem consumir menos de 1w, deve estar desabilitado. Eu lembro de ter feito uns testes rápidos com um medidor de consumo quando estava pesquisando sobre o EuP e realmente, com o recurso habilitado o consumo era inferior a 1w; mas com ele desabilitado, o consumo em stand by de um PC típico era algo em torno dos 3w, nada preocupante.
Um último detalhe antes de começarmos, o objetivo desse tutorial é que você possa ligar seu PC a partir de um smartphone (ou tablet, com iOS ou Android) a partir de qualquer lugar (DO MUNDO!!) então vamos acompanhar cada etapa do processo para garantir que o “pacote mágico” chegue até o seu computador e ele ligue.

Começando…
Bom, pra começar precisamos ativar o suporte ao Wake on LAN no BIOS Setup da sua placa mãe, pois a maioria vem com esse recurso desabilitado por padrão. Para isso, na maioria das placas mãe basta ficar apertando freneticamente a tecla Del (Delete) como um louco durante a inicialização do computador, para não perder o breve momento onde ela realmente pode ser acionada. Em algumas placas é a tecla F2 que deve ser abusada.
Uma vez dentro do setup você deve ver uma tela como estas abaixo:



setup-asussetup-msi setup-gb
(para referência, a primeira imagem é de uma placa Asus, a Segunda uma MSI e a terceira uma Gigabyte)
Procure uma tela de “Power Management” ou algo parecido e lá dentro deve haver uma opção como “Wake on LAN” ou “Wake on PME”, ou “Power up by PCI/PCIE”. Na dúvida consulte o manual da sua placa mãe para saber o nome exato e onde fica a opção.
setup-asus-efi
(Placas “chiques” como a minha ASUS P8Z77-V LX permitem capturar um screenshot do setup, assim eu não preciso tirar uma foto toda torta da tela pra mostrar pra vocês…)
O próximo passo é anotar o “MAC Address” da sua placa de rede. Existem vários métodos, o que eu acho mais fácil é abrir uma janela do prompt de comandos (chame a janela de Executar no menu iniciar ou apertando “tecla Windows +R” e digite CMD) e digite IPCONFIG /ALL
executar
Procure o campo “Endereço Físico”:
ipconfig
Anote essa sequência de letras e números em um papel, você vai precisar dela várias vezes.
Se você quiser, já pode testar se o Wake on LAN funciona.
Mas como?
Como o objetivo é acordar a máquina a partir do celular, você já pode baixar o aplicativo que dispara o pacote mágico. No iOS eu uso o “mWOL” (Mocha WOL link para a App Store https://itunes.apple.com/en/app/mocha-wol/id422625778?mt=8 ) e no Android um aplicativo simplesmente chamado Wake on LAN (link para a Play Store https://play.google.com/store/apps/details?id=net.mafro.android.wakeonlan&hl=en ) ambos gratuitos.
A configuração não tem muito mistério, basta colocar o MAC Address (sem os : ou – de separação, o app adiciona sozinho), escolher a porta 9 (normalmente são usadas a porta 9 ou 7, por segurança escolha sempre a mesma) e colocar o IP de broadcast da sua rede local (assumo que você esteja conectado via WiFi mas na mesma rede que o PC que será acordado), que é o último IP da faixa que você usa. Como a maioria dos roteadores usa por padrão o endereço 192.168.1.1, ou 192.168.0.1; o broadcast será 192.168.1.255 ou 192.168.0.255. No app para iOS você nem precisa digitar esse endereço, basta marcar a opção WOL on LAN (como no screenshot abaixo), que ele irá procurar automaticamente o endereço da sua rede local.
appioslocal appandroid255
E para você não ter que desligar o seu PC para testar, existe um aplicativinho que monitora sua rede local. Infelizmente não lembro onde o achei para dar os créditos ao autor, mas o disponibilizo aqui para garantir sua disponibilidade. http://www.doompc.com/download/WakeOnLanMonitor.zip
Basta abrir o programa, escolher que porta ele deve “escutar” e clicar em Start; então mande o pacote através do aplicativo e você deve ter uma tela como essa abaixo:
wolmonitor
Como dá pra ver ali, o tal “pacote mágico” é composto simplesmente por FF FF FF FF FF, seguido pelo MAC Address da placa de rede em questão repetido 16 vezes.
Uma vez verificado que o sistema funciona, você pode experimentar desligar (ou suspender) o PC e acordá-lo com o aplicativo. Pode ir, eu espero :)
Acordando o PC pelas Internets
Certo, então já podemos acordar nosso computador enquanto estamos em casa. Agora como fazer isso através da Internet? Bom, enviar o pacote é fácil. Já temos o aplicativo, basta descobrir o IP da sua conexão, desconectar do WiFi (ficando apenas com a conexão de dados do celular) e mandar o pacote.
Descobrir o IP da conexão é fácil, também há vários métodos, um dos mais simples é acessar o site www.meuip.net
Óbvio que anotar o seu endereço IP, além de pouco prático, pode ser inútil caso ele mude, já que assim como eu, você deve ter uma conexão de IP dinâmico.
O ideal é registrar um endereço com um nome fácil de lembrar e arranjar um jeito de associar seu IP a esse endereço. Para isso existem vários serviços de DNS dinâmico, inclusive gratuitos. Um dos mais conhecidos, e o que vou usar nesse exemplo, é o dyndns.
Crie uma conta (gratuita) em https://account.dyn.com/entrance/ , então vá em My Hosts -> Add Host Services (ou clique aqui para ir direto à página: https://account.dyn.com/dns/dyndns/add.html ).
hostsdyndns
Digite o nome desejado no campo de hostname, escolha um domínio (eu prefiro o dyndns.org porque é o mais fácil de lembrar), de modo que o seu endereço será hostname.dominio (o do exemplo abaixo será “meuendereco.dyndns.org”) e no campo IP Address em vez de digitar o seu IP, basta clicar no link logo abaixo (Your current location’s IP address is xxx.xxx.xxx.xxx) que o site preenche o campo pra você.
criandohost
Pronto, agora você já tem um endereço nas Internets! Mas para garantir que o pacote vai chegar até sua máquina usando esse endereço precisamos acertar mais dois detalhes:
1-      Arranjar um jeito de manter esse cadastro atualizado, pois se seu modem/roteador for reiniciado é bem provável que seu IP mude.
2-      Configurar o seu roteador para redirecionar o pacote recebido da Internet para a sua máquina na rede local.
Bom, o primeiro é relativamente fácil. A maioria dos roteadores pode fazer isso automaticamente. Basta você cadastrar os dados da sua conta no dyndns que ele mantém seu IP vinculado com o endereço registrado.
roteadordyndns
(Exemplo de configuração do dyndns (opção System Tools -> DDNS) no meu poderoso roteador Tenda.)
Porém, eu observei um problema com essa solução. A maioria dos roteadores (o meu inclusive) fica atualizando o endereço desnecessariamente em intervalos curtos e regulares (o meu faz a cada 15 minutos), em vez de verificar e só atualizar se o IP tiver mudado. E o pessoal do dyndns não gosta disso… Depois de um tempo eu recebi um email dizendo que se eu continuasse fazendo isso, minha conta (gratuita) seria banida…
As contas pagas não tem essa limitação. Mas como não estou muito disposto a pagar por esse serviço no momento, preciso de uma alternativa. Lembrando que nem todos os roteadores tem esse comportamento, mas se for o seu caso, segue a solução que eu adotei:
A própria Dyn(DNS) oferece um aplicativo (disponível para Windows, Linux e OSX) que pode fazer isso (de forma inteligente) pra você. Está disponível em: http://dyn.com/support/clients/
Coloque seu nome de usuário e senha, ele vai mostrar seus endereços registrados, marque qual você quer que ele autentique. Marque também a opção para que o programa seja executado sempre que o seu PC iniciar e pronto, com isso você não deve ter dores de cabeça com mudanças de IP, nem com a sua conta.
programadyn
Certo, agora vamos configurar o seu roteador para repassar o pacote mágico vindo da Internet para o seu computador.
Cada roteador é diferente e por mais exemplos que eu dê, sempre vai haver algum mais ou menos complicado. Sem o caso de alguns roteadores disponibilizados pelo provedor, que não permitem praticamente nenhuma configuração…
Enfim, vou mostrar como fazer isso no meu Tenda e procurar explicar da maneira mais completa possível para que você consiga fazer no seu (mesmo que seja diferente). Na dúvida, tenha a mão o manual do seu roteador e procure onde ficam opções semelhantes às que eu indicar.
Primeiro precisamos acessar a interface de configuração do roteador. Na grande maioria dos casos basta abrir um navegador e acessar o seu endereço na rede local (a maioria usa 192.168.1.1) e digitar um login para entrar. Normalmente o nome de usuário é “admin” e a senha também é “admin” ou basta o usuário admin e deixar a senha em branco, etc. Verifique no manual do seu roteador. Geralmente o roteador possui uma etiqueta em baixo com essas informações.
gateway
Para descobrir o endereço dele, você também pode apelar para o ipconfig (através do prompt de comando, como antes) e basta procurar o endereço do “Gateway Padrão”.
Uma vez dentro do painel de configuração, precisamos encontrar onde “fixar” um endereço IP da rede local para a sua placa de rede. Assim mesmo que seu computador esteja configurado para “pegar endereço IP automaticamente” (por DHCP) ele sempre pegará o mesmo endereço; e outro computador da rede nunca usará esse mesmo endereço.
Procure por uma opção parecida com “IP Binding”, costuma ficar perto da configuração do “Servidor DHCP”. Lá você pode associar (bind) um endereço IP a um MAC Address, no caso o da sua placa de rede, que você anotou antes.
Exemplo:
ipbinding
Aqui realmente não tenho como ajudar muito, pois há muitas variações. Dependendo do seu roteador, procure por algo como “retenção de endereço IP” ou “reservar endereço IP”, algo assim. No exemplo ali (em inglês), a opção está em DHCP Server -> DHCP List & Binding.
Escolha um endereço e lembre dele, pois agora vamos redirecionar as portas usadas para mandar o pacote Wake on LAN.
Ainda no painel de configuração do seu roteador, procure pela opção de “Servidores Virtuais” (Virtual Servers) ou Redirecionamento de Portas (Port Forwarding), costuma ficar perto do Firewall.
Então crie uma regra indicando que a porta 7 ou 9 (é mais comum o uso da porta 9 para isso) deve ser encaminhada para o IP que você reservou para o seu computador (na parte de IP Binding). O protocolo usado para esse comando é o UDP, mas na dúvida eu permiti o redirecionamento de ambos (UDP e TCP, opção Both no tipo de protocolo).
virtualserver
(Normalmente você tem opção de definir um intervalo (range) de portas em cada regra. Você pode colocar a mesma porta em ambos campos, ou definir a porta inicial e a final (Start Port e End Port) e todo esse intervalo será coberto (redirecionado) por essa regra. No exemplo eu coloquei no intervalo as portas 7 a 9.)
Pronto, agora basta aplicar, salvar e (geralmente) reiniciar o roteador. Procure por uma opção de Save and Restart no painel de configuração do roteador (quantas vezes eu já mandei o roteador reiniciar sem ter salvado as configurações primeiro e depois tive que fazer tudo de novo…).
Testando!
Bom, se fizemos tudo corretamente, o recurso já deve estar funcionando, só precisamos testar!
Abra novamente o Wake on Lan Monitor, escolha a porta 9. Pegue seu celular, certifique-se que você não está conectado à sua rede local pelo WiFi e que sua conexão de dados (4G, 3G, meio G…) esteja funcionando. Nas configurações do aplicativo, coloque o endereço que você registrou no dyndns, o MAC Address, a porta 9 e (no caso do app para iOS), desmarque a opção de WOL on LAN.
appiosnet appandroidnet
Se tudo der certo, o Wake on Lan Monitor deve exibir algo assim: observe que o pacote vem de um endereço diferente do usado na sua rede local (como 192.168…). Se você não quiser usar o celular pra isso, ou não puder na hora; há outra opção: essa página permite enviar o pacote: http://www.dslreports.com/wakeup
wakeup
Feito isso é só lembrar de configurar os serviços que você quiser acessar remotamente, como servidor de arquivos, VNC, etc. De redirecionar as respectivas portas para o IP do seu computador, e para acessar basta digitar o endereço do dyndns, dois pontos e a porta redirecionada. Exemplo. ftp://meuendereco.dyndns.org:21 (para um servidor de FTP) ou meuendereco.dyndns.org:1234 (para um VNC, por exemplo, pode ser sem HTTP:// ou FTP://)
Bom, pessoal. É isso, espero que este guia tenha ajudado. Comentários ou dúvidas podem ser feitos abaixo, ou no fórum: www.doompc.com/forum

Creditos: http://www.doompc.com/2013/07/03/como-ligar-seu-computador-remotamente-usando-wake-on-lan/