Stuur een wekpakket direct na het afsluiten en de pc komt terug; dezelfde opdracht de volgende ochtend doet niets. Niets in de VPN-configuratie is veranderd en de port-forward wijst nog steeds naar het juiste adres. Het verschil is tijd: de buurtabel van de router is de slapende machine vergeten, dus er is geen MAC-adres om in het frame te zetten. Die verloopdatum, niet de tunnel, verklaart de meeste Wake-on-LAN-fouten via een VPN.

De eerste wekactie werkt en de volgende niet

Een router stuurt een frame naar een privéadres door de bestemming in zijn buurtabel op te zoeken. Zolang de machine draait antwoordt hij op ARP, waardoor de koppeling vers blijft. Zodra hij uitschakelt antwoordt niets, verloopt de vermelding na een paar minuten, en latere frames naar dat adres worden weggegooid ook al blijven het IP en de port-forward geldig.

Het patroon vertelt je welke fout je hebt. Een wekactie die nooit werkt wijst op de levering: verkeerde poort, verkeerde bestemming of een firewall die het pakket weggooit voordat het de LAN bereikt. Een wekactie die één keer werkt en daarna urenlang faalt wijst op de buurvermelding. Een wekactie die werkt tot de DHCP-lease verandert wijst op de adressering, die een reservering oplost.

Controleer of het adres stabiel is voordat je ARP aanraakt. Krijgt de slapende machine na het verlopen van een lease een nieuw adres, dan is een vastgezette buurvermelding voor het oude adres tegelijk permanent en nutteloos. Stel eerst een DHCP-reservering in zodat het adres herstarts overleeft.

Wat het magische pakket van het netwerk nodig heeft

De payload is eenvoudig: 102 bytes van zes 0xFF-bytes gevolgd door het doel-MAC-adres zestien keer, meestal verzonden naar UDP-poort 9. Op een plat LAN gaat het als broadcast naar buiten, elke poort ontvangt het, en de uitgeschakelde netwerkkaart herkent zijn eigen adres.

Via een VPN komt het pakket bij de router aan als unicast naar een privéadres of als subnet-gericht broadcast. In het unicast-geval moet de router de bestemming omzetten naar een MAC-adres voordat hij het frame op de LAN kan zetten, en juist die omzetting mislukt terwijl de host slaapt.

Sommige tools sturen naar poort 7 in plaats van 9, en sommige apparaten blokkeren gericht broadcast standaard. Dat zijn leveringsfouten, geen ARP-fouten, dus controleer de bestemming en de poort voordat je de buurtabel wijzigt.

Drie routes naar een slapende host

Je hebt drie praktische manieren om het frame op de LAN te krijgen, en de juiste keuze hangt af van wat je beheert.

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

Kies de hulphost als die er is, want die broadcast op de link en heeft geen routeruitzondering nodig. Kies gericht broadcast als de router het al toestaat en de wektool een adres accepteert. Kies de statische vermelding als geen van beide beschikbaar is en je een opdracht op de router kunt uitvoeren.

Deze sluiten elkaar niet uit. Een permanente vermelding laat ook het unicast-pad de slaap overleven, wat handig is als de VPN-client alleen naar een specifiek adres kan sturen.

Maak de buurvermelding permanent

Op een router met een Linux-shell zet één opdracht de koppeling vast. De waarden hier horen bij een voorbeeld-LAN en moeten door je eigen waarden worden vervangen:

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

De status nud permanent houdt de vermelding over ARP-time-outs heen en gebruikt hem voor doorsturen terwijl de machine uit staat. De tweede opdracht bewijst dat de vermelding bestaat en toont de interface waartoe hij behoort, wat uitmaakt op routers met een aparte gastbrug of VLAN.

Maak hem herstartbestendig via de haak die de firmware biedt: een script in /jffs/scripts op Asuswrt-Merlin, een systemd oneshot-unit op een Linux-server als gateway, een Neighbor= stanza in systemd-networkd, of een vermelding in /etc/ethers die de lokale tools lezen. Een opdracht die je in een shell typt verdwijnt bij de volgende herstart, en dat is de meest voorkomende reden dat een werkende oplossing lijkt te stoppen met werken.

Test van buitenaf en weet wanneer hij weg moet

Zet de machine in slaapstand en wacht minstens tien minuten, lang genoeg om elke dynamische vermelding te laten verlopen. Stuur dan het wekverzoek vanaf de VPN-client en kijk naar beide kanten van de router:

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

De eerste opname bewijst dat het pakket uit de tunnel kwam; de tweede dat de router een frame op de LAN heeft gezet. Een geldig magisch pakket verschijnt als 102 bytes met de MAC herhaald, dus controleer de lengte én de bestemming. Verlaat het frame de LAN-brug en blijft de machine uit, dan zit het resterende probleem in het apparaat: snelstart, diepe slaapstand of een BIOS-instelling die de stroom naar de netwerkkaart afsluit.

Verwijder de vermelding wanneer de netwerkkaart verandert, en werk hem bij wanneer je de machine naar een ander adres verplaatst. Een permanente koppeling is een bewuste uitzondering, en een uitzondering die niemand onthoudt is de manier waarop een toekomstige laptop frames ontvangt die voor een afgedankte desktop bedoeld waren.

Gerelateerde artikelen