Wake-on-LAN per VPN deixa de funcionar? Corregeix l'entrada ARP
Els paquets màgics travessen el túnel, però el router els descarta quan caduca la seva entrada ARP. Compara tres vies de lliurament i fixa l'adreça MAC de manera permanent.
Envia un paquet de despertar just després d'apagar i l'ordinador torna; la mateixa ordre l'endemà al matí no fa res. No ha canviat res de la configuració de la VPN i la redirecció de port continua apuntant a l'adreça correcta. La diferència és el temps: la taula de veïns del router ha oblidat la màquina adormida, així que no té cap adreça MAC per posar a la trama. Aquesta caducitat, i no el túnel, explica la majoria de fallades de Wake-on-LAN per VPN.
El primer despertar funciona i el següent no
Un router reenvia una trama a una adreça privada consultant la destinació a la seva taula de veïns. Mentre la màquina funciona respon a ARP, així que la correspondència es manté fresca. Quan s'apaga, res no respon, l'entrada caduca al cap d'uns minuts i les trames posteriors per a aquesta adreça es descarten tot i que la IP i la redirecció de port continuen sent vàlides.
El patró et diu quina fallada tens. Un despertar que no funciona mai apunta al lliurament: port equivocat, destinació equivocada o un tallafoc que descarta el paquet abans que arribi a la LAN. Un despertar que funciona un cop i després falla durant hores apunta a l'entrada de veí. Un despertar que funciona fins que canvia la concessió DHCP apunta a l'adreçament, que una reserva corregeix.
Confirma que l'adreça és estable abans de tocar ARP. Si la màquina adormida agafa una adreça nova quan expira la concessió, una entrada de veí fixada per a l'adreça antiga serà permanent i inútil alhora. Configura primer una reserva DHCP perquè l'adreça sobrevisqui als reinicis.
Què necessita el paquet màgic de la xarxa
La càrrega útil és simple: 102 bytes formats per sis bytes 0xFF seguits de l'adreça MAC de destinació setze vegades, normalment enviats al port UDP 9. En una LAN plana surt com a difusió, tots els ports la reben i la targeta de xarxa apagada reconeix la seva pròpia adreça.
A través d'una VPN el paquet arriba al router com a unidifusió a una adreça privada o com a difusió dirigida a la subxarxa. En el cas d'unidifusió el router ha de resoldre la destinació a una adreça MAC abans de posar la trama a la LAN, i aquesta resolució és exactament el que falla mentre l'amfitrió dorm.
Algunes eines envien al port 7 en lloc del 9, i alguns aparells bloquegen la difusió dirigida per defecte. Són fallades de lliurament, no d'ARP, així que revisa la destinació i el port abans de canviar la taula de veïns.
Tres rutes cap a un amfitrió adormit
Tens tres maneres pràctiques de portar la trama a la LAN, i l'elecció correcta depèn del que controlis.
| 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 |
Tria l'amfitrió auxiliar quan n'hi hagi, perquè difon a l'enllaç i no necessita cap excepció al router. Tria la difusió dirigida quan el router ja la permeti i l'eina de despertar accepti una adreça. Tria l'entrada estàtica quan cap de les dues estigui disponible i puguis executar una ordre al router.
No són excloents entre si. Una entrada permanent també fa que la ruta d'unidifusió sobrevisqui al repòs, cosa útil quan el client VPN només pot enviar a una adreça concreta.
Fes permanent l'entrada de veí
En un router amb shell de Linux, una sola ordre fixa la correspondència. Els valors d'aquí pertanyen a una LAN d'exemple i s'han de substituir pels teus:
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.23L'estat nud permanent manté l'entrada durant els temps d'espera d'ARP i l'usa per reenviar mentre la màquina està apagada. La segona ordre demostra que l'entrada existeix i mostra la interfície a la qual pertany, cosa que importa en routers amb un pont de convidats o una VLAN a part.
Fes que sobrevisqui a un reinici amb el mecanisme que ofereixi el firmware: un script a /jffs/scripts a Asuswrt-Merlin, una unitat oneshot de systemd en un servidor Linux que faci de passarel·la, una Neighbor= stanza a systemd-networkd, o una entrada a /etc/ethers que llegeixi l'eina local. Una ordre escrita en un shell desapareix al reinici següent, i aquesta és la raó més habitual per la qual una correcció que funcionava sembla deixar de funcionar.
Prova-ho des de fora i sàpigues quan treure-ho
Posa la màquina a dormir i espera almenys deu minuts, prou temps perquè caduqui qualsevol entrada dinàmica. Després envia la petició de despertar des del client VPN i observa les dues bandes del router:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9La primera captura demostra que el paquet ha arribat des del túnel; la segona demostra que el router ha posat una trama a la LAN. Un paquet màgic vàlid apareix com a 102 bytes amb la MAC repetida, així que comprova la longitud i també la destinació. Si la trama surt del pont LAN i la màquina continua apagada, el problema restant és al dispositiu: inici ràpid, repòs profund o un paràmetre del BIOS que talla l'alimentació de la targeta de xarxa.
Treu l'entrada quan canviï la targeta de xarxa i actualitza-la quan moguis la màquina a una altra adreça. Una correspondència permanent és una excepció deliberada, i una excepció que ningú recorda és com un futur portàtil acaba rebent trames destinades a un sobretaula jubilat.