Wake-on-LAN que funciona: ligar o PC pela rede, de casa e de fora
Configure BIOS, placa de rede e sistema para o pacote mágico ligar o PC, teste na rede local e acorde a máquina de fora sem abrir porta para a internet.
Você está no trabalho, precisa de um arquivo que ficou no PC de casa e o aplicativo de Wake-on-LAN no celular diz "pacote enviado". Nada liga. A resposta curta: o pacote mágico é um broadcast da rede local e só funciona se a placa de rede continuar alimentada e escutando enquanto o PC está desligado. Isso exige três ajustes (BIOS, driver e sistema) e, para acordar de fora, um aparelho sempre ligado dentro de casa que envie o pacote por você.
O caso que atravessa este guia: um desktop chamado estudio, ligado por cabo ao roteador, IP 192.168.0.20, MAC 3C:7C:3F:12:AB:9E, e um Raspberry Pi sempre ligado em 192.168.0.5. A meta é ligar o estudio pelo celular, de qualquer lugar, sem expor nada à internet.
Por que o pacote não chega ou não acorda
O "pacote mágico" é um quadro simples: seis bytes FF seguidos do MAC da placa repetido dezesseis vezes, normalmente enviado por UDP para a porta 9 do endereço de broadcast da rede (192.168.0.255 no exemplo). Toda placa da rede recebe. Só a que reconhece o próprio MAC dentro dele reage.
Daí vêm as três falhas clássicas:
- A placa está sem energia. Com o PC desligado, alguém precisa manter a interface de rede alimentada. Se a BIOS corta tudo (opções como ErP ou "economia profunda"), não há quem escute.
- O sistema desligou a escuta. No desligamento, Windows e Linux dizem à placa em que modo ficar. Se o driver não pede "acordar por pacote mágico", ela dorme surda.
- O pacote não chega à rede certa. Broadcast não atravessa roteador. Mandado da internet para o seu IP público, ele morre no roteador de casa, que não sabe a qual máquina entregar uma placa desligada sem IP ativo.
Repare que o alvo é o MAC, não o IP. Uma máquina desligada não tem conversa de IP com ninguém. Por isso o IP fixo ajuda depois, para conectar, mas não é o que acorda.
Como configurar a máquina que vai acordar
- BIOS/UEFI. Procure "Wake on LAN", "Power On By PCI-E" ou "Resume by LAN" e ative. Se existir "ErP Ready" ou "Deep Sleep", desative: essas opções cortam a energia da placa para baixar o consumo em espera. Os nomes mudam por fabricante; o manual da placa-mãe diz qual é o seu.
- Driver no Windows. Abra o Gerenciador de Dispositivos, entre no adaptador Ethernet e, na aba Gerenciamento de Energia, marque "Permitir que este dispositivo ative o computador" e "Permitir apenas um pacote mágico para ativar o computador". Na aba Avançado, ative "Wake on Magic Packet" se existir.
- Inicialização rápida do Windows. Em muitas máquinas, ela faz o desligamento virar uma hibernação parcial, e o comportamento da placa muda. Se o PC acorda da suspensão mas não do desligado, teste com a inicialização rápida desligada nas opções de energia.
- Linux. Confira e ative com
ethtool, e torne permanente no gerenciador de rede (exemplo abaixo). - Anote o MAC da placa cabeada, não do Wi-Fi. Wake-on-LAN por Wi-Fi existe em poucos equipamentos e falha com frequência. Use cabo.
No Linux do estudio, a verificação e a ativação ficam assim:
$ sudo ethtool eno1 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: d
$ sudo ethtool -s eno1 wol g
$ sudo ethtool eno1 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: g
# tornar permanente no NetworkManager
$ nmcli connection show
$ sudo nmcli connection modify "Conexão cabeada 1" 802-3-ethernet.wake-on-lan magic
O d significa desativado e o g significa pacote mágico. Se a linha "Supports" não tiver g, a placa ou o driver não suporta, e nenhum ajuste de software resolve.
Como enviar o pacote mágico na rede local
Antes de pensar em acesso remoto, prove que funciona dentro de casa. Desligue o estudio pelo menu, espere um minuto e envie o pacote do Raspberry Pi. Ferramentas prontas resolvem (wakeonlan e etherwake existem nos repositórios das distribuições comuns), mas o pacote é tão simples que vale ver por dentro:
#!/usr/bin/env python3
# acordar.py
import socket
import sys
def acordar(mac, broadcast="192.168.0.255", porta=9):
limpo = mac.replace(":", "").replace("-", "")
if len(limpo) != 12:
raise ValueError("MAC inválido: " + mac)
pacote = bytes.fromhex("FF" * 6 + limpo * 16)
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(pacote, (broadcast, porta))
if __name__ == "__main__":
acordar(sys.argv[1])
print("pacote enviado para", sys.argv[1])
$ python3 acordar.py 3C:7C:3F:12:AB:9E
pacote enviado para 3C:7C:3F:12:AB:9E
Use o broadcast da sua rede. Se a rede for 192.168.1.0/24, o broadcast é 192.168.1.255. Mandar para 255.255.255.255 também costuma funcionar, mas em máquinas com mais de uma interface o pacote pode sair pela errada.
Se não ligou, descubra se o pacote chegou. Em outra máquina Linux da mesma rede, rode sudo tcpdump -i eth0 -n udp port 9 e envie de novo. Se o tcpdump mostra o pacote, a rede está entregando e o problema está no estudio (BIOS ou driver). Se não mostra, o problema está no envio: broadcast errado, interface errada ou isolamento de clientes no roteador.
Como acordar de fora sem abrir porta
O atalho que aparece em fórum é redirecionar a porta UDP 9 do roteador para o broadcast da rede. Muitos roteadores nem permitem, e os que permitem deixam qualquer pessoa da internet mandar tráfego para dentro da sua rede. Não vale o risco para um botão de ligar.
O desenho sóbrio usa o Raspberry Pi como ponte:
- Instale uma VPN no Pi (WireGuard ou um serviço de malha como o Tailscale). O celular entra na VPN; nada fica exposto sem autenticação.
- Pelo celular, já na VPN, abra uma sessão SSH com chave no Pi. Se ainda usa senha, veja como configurar chave SSH antes.
- Rode
python3 acordar.py 3C:7C:3F:12:AB:9Eno Pi. O pacote sai de dentro da rede, como no teste local. - Espere o boot e conecte no
estudiopelo IP fixo, reservado no DHCP do roteador.
Alguns roteadores têm a função de Wake-on-LAN no próprio painel. Funciona, desde que o painel não esteja exposto à internet com senha fraca, o que é mais perigoso do que o PC ligado.
Erros comuns
- Testar só pelo Wi-Fi do PC. A maioria das placas sem fio não escuta desligada. Você conclui que "Wake-on-LAN não funciona" quando o problema é o meio.
- Deixar ErP ou economia profunda ligado na BIOS. A placa fica sem energia e o LED da porta de rede apaga junto com o PC. Sem LED, sem escuta.
- Usar o MAC errado. Notebook com dock, placa-mãe com duas portas, adaptador USB: cada um tem MAC próprio. O pacote para outro MAC é ignorado em silêncio.
- Tirar o PC da tomada ou desligar o filtro de linha. Sem energia em espera, nada acorda. Parece óbvio até alguém desligar a régua à noite.
- Redirecionar porta do roteador para a rede interna. Você troca uma conveniência por uma porta aberta permanente que pouca gente monitora.
- Atualizar o driver e esquecer de conferir. Atualização do Windows às vezes volta as opções de energia ao padrão. O que funcionava mês passado para de funcionar.
Checklist
- Wake-on-LAN ativo e ErP desativado na BIOS.
- Opções de energia do adaptador marcadas no Windows, ou
Wake-on: gnoethtoolno Linux. - Configuração persistente no NetworkManager, conferida depois de reiniciar.
- MAC da placa cabeada anotado e conferido.
- LED da porta de rede aceso com o PC desligado.
- Teste local com o PC desligado pelo menu, não só suspenso.
- Acesso de fora por VPN até um aparelho interno, sem porta aberta para broadcast.
Desligue o PC agora e olhe a porta de rede atrás do gabinete: o LED continua aceso? Se apagou, nenhum aplicativo vai acordar essa máquina, e o próximo passo é a BIOS. Se acende, a pergunta seguinte é outra: você precisa mesmo dela ligada o tempo todo, ou só quando pede?
Referência: https://www.youtube.com/watch?v=DOep-8oqZJ8