Wake-on-LAN over VPN holder op med at virke? Ret ARP-posten
Magiske pakker krydser tunnelen, men routeren kasserer dem, når dens ARP-post udløber. Sammenlign tre leveringsveje, og fastgør derefter MAC-adressen permanent.
Send en vækkepakke lige efter nedlukning, og pc'en kommer tilbage; samme kommando næste morgen gør ingenting. Intet i VPN-konfigurationen er ændret, og portvideresendelsen peger stadig på den rigtige adresse. Forskellen er tid: routerens nabo tabel har glemt den sovende maskine, så den har ingen MAC-adresse at sætte på rammen. Den udløbne post, ikke tunnelen, forklarer de fleste Wake-on-LAN-fejl over en VPN.
Den første vækning virker, den næste ikke
En router videresender en ramme til en privat adresse ved at slå destinationen op i sin nabo tabel. Så længe maskinen kører, svarer den på ARP, så tilknytningen forbliver frisk. Når den slukkes, svarer intet, posten udløber efter få minutter, og senere rammer til den adresse kasseres, selv om IP og portvideresendelse stadig er gyldige.
Mønstret fortæller dig, hvilken fejl du har. En vækning, der aldrig virker, peger på leveringen: forkert port, forkert destination eller en firewall, der kasserer pakken, før den når LAN. En vækning, der virker én gang og derefter fejler i timer, peger på naboposten. En vækning, der virker indtil DHCP-leasen skifter, peger på adresseringen, som en reservation retter.
Bekræft, at adressen er stabil, før du rører ARP. Får den sovende maskine en ny adresse, når en lease udløber, vil en fastlåst nabopost til den gamle adresse være permanent og ubrugelig på samme tid. Opsæt først en DHCP-reservation, så adressen overlever genstart.
Hvad den magiske pakke har brug for fra netværket
Nyttelasten er enkel: 102 byte af seks 0xFF-byte efterfulgt af mål-MAC-adressen seksten gange, normalt sendt til UDP-port 9. På et fladt LAN går den ud som broadcast, hver port modtager den, og det slukkede netværkskort genkender sin egen adresse.
Over en VPN ankommer pakken til routeren som unicast til en privat adresse eller som subnet-rettet broadcast. I unicast-tilfældet skal routeren opløse destinationen til en MAC-adresse, før den kan sætte rammen på LAN, og netop den opløsning fejler, mens værten sover.
Nogle værktøjer sender til port 7 i stedet for 9, og nogle enheder blokerer rettet broadcast som standard. Det er leveringsfejl, ikke ARP-fejl, så tjek destination og port, før du ændrer nabo tabellen.
Tre veje til en sovende vært
Du har tre praktiske måder at få rammen ind på LAN, og det rigtige valg afhænger af, hvad du kontrollerer.
| 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 |
Vælg hjælpeværten, når der er en, fordi den broadcaster på linket og ikke kræver nogen routerundtagelse. Vælg rettet broadcast, når routeren allerede tillader det, og væk-værktøjet understøtter en adresse. Vælg den statiske post, når ingen af dem er tilgængelige, og du kan køre en kommando på routeren.
Disse udelukker ikke hinanden. En permanent post gør også unicast-vejen i stand til at overleve søvn, hvilket er nyttigt, når VPN-klienten kun kan sende til en bestemt adresse.
Gør naboposten permanent
På en router med Linux-shell fastlåser én kommando tilknytningen. Værdierne her tilhører et eksempel-LAN og skal erstattes med dine egne:
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.23Tilstanden nud permanent holder posten gennem ARP-timeouts og bruger den til videresendelse, mens maskinen er slukket. Den anden kommando beviser, at posten findes, og viser den grænseflade, den hører til, hvilket betyder noget på routere med en separat gæstebro eller VLAN.
Gør den genstartsbestandig gennem det hook, firmwaren tilbyder: et script i /jffs/scripts på Asuswrt-Merlin, en systemd oneshot-unit på en Linux-server som gateway, en Neighbor= stanza i systemd-networkd, eller en post i /etc/ethers, som de lokale værktøjer læser. En kommando, der tastes i en shell, forsvinder ved næste genstart, og det er den mest almindelige grund til, at en fungerende løsning ser ud til at holde op med at virke.
Test udefra og vid, hvornår den skal fjernes
Sæt maskinen til at sove, og vent mindst ti minutter, længe nok til at enhver dynamisk post udløber. Send derefter væk-anmodningen fra VPN-klienten, og hold øje med begge sider af routeren:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9Den første optagelse beviser, at pakken kom fra tunnelen; den anden beviser, at routeren satte en ramme på LAN. En gyldig magisk pakke viser sig som 102 byte med MAC'en gentaget, så tjek længden såvel som destinationen. Forlader rammen LAN-broen, og bliver maskinen slukket, ligger det resterende problem på enheden: hurtig start, dyb søvn eller en BIOS-indstilling, der afbryder strømmen til netværkskortet.
Fjern posten, når netværkskortet skiftes, og opdater den, når du flytter maskinen til en anden adresse. En permanent tilknytning er en bevidst undtagelse, og en undtagelse, ingen husker, er hvordan en fremtidig bærbar ender med at modtage rammer beregnet til en pensioneret stationær.