Wake-on-LAN přes VPN přestal fungovat? Opravte záznam ARP
Magické pakety projdou tunelem, ale router je zahodí, jakmile mu vyprší záznam ARP. Porovnejte tři cesty doručení a natrvalo připněte MAC adresu.
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.
| 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 |
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.23Stav 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 9První 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.