Wake-on-LAN pela VPN parou de funcionar? Corrija a entrada ARP
Os pacotes mágicos atravessam o túnel, mas o router descarta-os quando a entrada ARP expira. Compare três caminhos de entrega e fixe o endereço MAC em definitivo.
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.
| Method | What it needs | Where it breaks |
|---|---|---|
| Subnet-directed broadcast | A wake tool that accepts a broadcast address and a router that forwards it | Broadcast filtering, or a tool that only takes a MAC |
| Helper on the LAN | An always-on host such as the VPN server | No suitable host, or the host cannot reach the target VLAN |
| Permanent neighbour entry | Router shell access and the target MAC | NIC 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.23O 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 9A 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.