Envie um pacote de despertar logo após o encerramento e o PC volta; o mesmo comando na manhã seguinte não faz nada. Nada da configuração da VPN mudou, e o encaminhamento de porta continua a apontar para o endereço certo. A diferença é o tempo: a tabela de vizinhos do router esqueceu a máquina adormecida, por isso não tem endereço MAC para colocar na trama. É essa expiração, e não o túnel, que explica a maioria das falhas de Wake-on-LAN através de uma VPN.

O primeiro despertar funciona e o seguinte não

Um router reencaminha uma trama para um endereço privado procurando o destino na sua tabela de vizinhos. Enquanto a máquina está ligada responde a ARP, por isso o mapeamento mantém-se fresco. Quando se desliga, nada responde, a entrada expira ao fim de alguns minutos e as tramas seguintes para esse endereço são descartadas, embora o IP e o encaminhamento de porta continuem válidos.

O padrão diz-lhe qual é a falha. Um despertar que nunca funciona aponta para a entrega: porta errada, destino errado ou uma firewall que descarta o pacote antes de ele chegar à LAN. Um despertar que funciona uma vez e depois falha durante horas aponta para a entrada de vizinho. Um despertar que funciona até a concessão DHCP mudar aponta para o endereçamento, que uma reserva resolve.

Confirme que o endereço é estável antes de mexer no ARP. Se a máquina adormecida receber um endereço novo quando a concessão expira, uma entrada de vizinho fixa para o endereço antigo será permanente e inútil ao mesmo tempo. Configure primeiro uma reserva DHCP para que o endereço sobreviva aos reinícios.

De que precisa o pacote mágico da rede

A carga útil é simples: 102 bytes formados por seis bytes 0xFF seguidos do endereço MAC de destino dezasseis vezes, normalmente enviados para a porta UDP 9. Numa LAN plana sai como difusão, todas as portas a recebem e a placa de rede desligada reconhece o seu próprio endereço.

Através de uma VPN o pacote chega ao router como unicast para um endereço privado ou como difusão dirigida à sub-rede. No caso de unicast o router tem de resolver o destino num endereço MAC antes de colocar a trama na LAN, e é precisamente essa resolução que falha enquanto o anfitrião dorme.

Algumas ferramentas enviam para a porta 7 em vez da 9, e alguns equipamentos bloqueiam a difusão dirigida por predefinição. São falhas de entrega, não de ARP, por isso verifique o destino e a porta antes de alterar a tabela de vizinhos.

Três caminhos para um anfitrião adormecido

Tem três formas práticas de levar a trama à LAN, e a escolha certa depende do que controla.

MethodWhat it needsWhere it breaks
Subnet-directed broadcastA wake tool that accepts a broadcast address and a router that forwards itBroadcast filtering, or a tool that only takes a MAC
Helper on the LANAn always-on host such as the VPN serverNo suitable host, or the host cannot reach the target VLAN
Permanent neighbour entryRouter shell access and the target MACNIC replacement or address change

Escolha o anfitrião auxiliar quando existir, porque difunde no link e não precisa de exceção no router. Escolha a difusão dirigida quando o router já a permite e a ferramenta de despertar aceita um endereço. Escolha a entrada estática quando nenhuma das duas estiver disponível e puder executar um comando no router.

Estas opções não se excluem. Uma entrada permanente também faz com que o caminho unicast sobreviva ao sono, o que é útil quando o cliente VPN só pode enviar para um endereço específico.

Torne a entrada de vizinho permanente

Num router com shell Linux, um único comando fixa o mapeamento. Os valores aqui pertencem a uma LAN de exemplo e devem ser substituídos pelos seus:

ip neigh replace 192.168.50.23 lladdr 3c:7c:3f:12:9a:4e dev br0 nud permanent
ip neigh show dev br0 | grep 192.168.50.23

O estado nud permanent mantém a entrada durante os tempos limite ARP e usa-a para reencaminhar enquanto a máquina está desligada. O segundo comando prova que a entrada existe e mostra a interface a que pertence, o que importa em routers com uma ponte de convidados ou VLAN separada.

Torne-a resistente a reinícios através do mecanismo que o firmware oferecer: um script em /jffs/scripts no Asuswrt-Merlin, uma unidade oneshot do systemd num servidor Linux como gateway, uma Neighbor= stanza no systemd-networkd, ou uma entrada em /etc/ethers que as ferramentas locais leiam. Um comando escrito numa shell desaparece no reinício seguinte, e é a razão mais comum para uma correção que funcionava parecer deixar de funcionar.

Teste a partir de fora e saiba quando removê-la

Coloque a máquina a dormir e espere pelo menos dez minutos, o suficiente para qualquer entrada dinâmica expirar. Depois envie o pedido de despertar a partir do cliente VPN e observe os dois lados do router:

tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9

A primeira captura prova que o pacote chegou pelo túnel; a segunda prova que o router colocou uma trama na LAN. Um pacote mágico válido aparece como 102 bytes com o MAC repetido, por isso verifique o comprimento e o destino. Se a trama sair da ponte LAN e a máquina continuar desligada, o problema restante está no dispositivo: arranque rápido, suspensão profunda ou uma definição do BIOS que corta a alimentação da placa de rede.

Remova a entrada quando a placa de rede muda, e atualize-a quando deslocar a máquina para outro endereço. Um mapeamento permanente é uma exceção deliberada, e uma exceção de que ninguém se lembra é a forma como um futuro portátil acaba por receber tramas destinadas a um computador de secretária reformado.

Artigos relacionados