Pošlete probouzecí paket hned po vypnutí a počítač se vrátí; stejný příkaz druhý den ráno neudělá nic. V konfiguraci VPN se nic nezměnilo a přesměrování portu pořád míří na správnou adresu. Rozdíl je v čase: routerova tabulka sousedů zapomněla spící stroj, takže nemá MAC adresu, kterou by vložil do rámce. Právě toto vypršení, a ne tunel, vysvětluje většinu selhání Wake-on-LAN přes VPN.

První probuzení funguje, druhé ne

Router přeposílá rámec na privátní adresu tak, že cíl hledá ve své tabulce sousedů. Dokud stroj běží, odpovídá na ARP, takže mapování zůstává čerstvé. Jakmile se vypne, nic neodpovídá, záznam po několika minutách vyprší a pozdější rámce na tuto adresu se zahazují, i když IP i přesměrování portu zůstávají platné.

Vzor vám řekne, kterou závadu máte. Probuzení, které nikdy nefunguje, ukazuje na doručení: špatný port, špatný cíl nebo firewall, který paket zahodí dřív, než dorazí do LAN. Probuzení, které jednou zabere a pak hodiny selhává, ukazuje na záznam souseda. Probuzení, které funguje do změny lease DHCP, ukazuje na adresování, které řeší rezervace.

Než se dotknete ARP, ověřte, že je adresa stabilní. Pokud spící stroj po vypršení lease dostane novou adresu, připnutý záznam souseda pro starou adresu bude zároveň trvalý i zbytečný. Nejprve nastavte rezervaci DHCP, aby adresa přežila restarty.

Co magický paket od sítě potřebuje

Užitečné zatížení je jednoduché: 102 bajtů z šesti bajtů 0xFF, za nimiž šestnáctkrát následuje cílová MAC adresa, obvykle odesílané na UDP port 9. V ploché LAN vychází jako broadcast, každý port jej přijme a vypnutá síťová karta rozpozná vlastní adresu.

Přes VPN dorazí paket do routeru jako unicast na privátní adresu nebo jako broadcast směřovaný do podsítě. V unicast případě musí router přeložit cíl na MAC adresu, než může rámec vložit do LAN, a právě toto překlad selhává, dokud hostitel spí.

Některé nástroje posílají na port 7 místo 9 a některá zařízení standardně blokují směrovaný broadcast. To jsou chyby doručení, ne ARP, takže před změnou tabulky sousedů zkontrolujte cíl a port.

Tři cesty ke spícímu hostiteli

Rámec dostanete do LAN třemi praktickými způsoby a správná volba závisí na tom, co ovládáte.

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

Zvolte pomocného hostitele, když nějaký je, protože vysílá na lince a nepotřebuje výjimku v routeru. Zvolte směrovaný broadcast, když jej router už povoluje a probouzecí nástroj podporuje adresu. Zvolte statický záznam, když není k dispozici ani jedno a můžete v routeru spustit příkaz.

Tyto možnosti se nevylučují. Trvalý záznam také umožní, aby unicast cesta přežila spánek, což je užitečné, když klient VPN umí posílat jen na konkrétní adresu.

Udělejte záznam souseda trvalým

Na routeru s linuxovým shellem připne mapování jediný příkaz. Hodnoty zde patří ukázkové LAN a musíte je nahradit svými:

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

Stav nud permanent drží záznam i přes časové limity ARP a používá jej k přeposílání, dokud je stroj vypnutý. Druhý příkaz dokazuje, že záznam existuje, a ukazuje rozhraní, ke kterému patří, což je důležité na routerech se samostatným hostovským bridgem nebo VLAN.

Zajistěte, aby přežil restart, pomocí jakéhokoli hooku, který firmware nabízí: skript v /jffs/scripts na Asuswrt-Merlin, oneshot jednotka systemd na linuxovém serveru v roli brány, Neighbor= stanza v systemd-networkd, nebo záznam v /etc/ethers, který lokální nástroje čtou. Příkaz napsaný do shellu zmizí při dalším restartu, a to je nejčastější důvod, proč funkční oprava vypadá, že přestala fungovat.

Otestujte to zvenčí a vězte, kdy záznam odstranit

Uspaněte stroj a počkejte alespoň deset minut, dost dlouho na to, aby vypršel každý dynamický záznam. Pak pošlete probouzecí požadavek z klienta VPN a sledujte obě strany routeru:

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

První zachycení dokazuje, že paket dorazil z tunelu; druhé dokazuje, že router vložil rámec do LAN. Platný magický paket vypadá jako 102 bajtů s opakovanou MAC, takže zkontrolujte délku i cíl. Pokud rámec opustí LAN bridge a stroj zůstane vypnutý, zbývající problém je v zařízení: rychlý start, hluboký spánek nebo nastavení v BIOS, které odpojí napájení síťové karty.

Záznam odstraňte, když se změní síťová karta, a aktualizujte jej, když stroj přesunete na jinou adresu. Trvalé mapování je vědomá výjimka a výjimka, na kterou si nikdo nevzpomene, je způsob, jak budoucí notebook začne dostávat rámce určené vyřazenému stolnímu počítači.

Související články