Wake-on-LAN prek VPN preneha delovati? Popravite vnos ARP
Magični paketi preidejo tunel, a usmerjevalnik jih zavrže, ko mu vnos ARP poteče. Primerjajte tri poti dostave in nato trajno pripnite naslov MAC.
Pošljite paket za bujenje takoj po izklopu in računalnik se vrne; isti ukaz naslednje jutro ne naredi ničesar. V konfiguraciji VPN se ni nič spremenilo, preusmeritev vrat pa še vedno kaže na pravi naslov. Razlika je v času: tabela sosedov usmerjevalnika je pozabila speči stroj, zato nima naslova MAC, ki bi ga vstavila v okvir. Prav ta potek, ne tunel, pojasnjuje večino napak Wake-on-LAN prek VPN.
Prvo bujenje deluje, naslednje ne
Usmerjevalnik posreduje okvir na zasebni naslov tako, da cilj poišče v tabeli sosedov. Dokler stroj teče, odgovarja na ARP, zato preslikava ostaja sveža. Ko se izklopi, nič ne odgovori, vnos po nekaj minutah zastara in poznejši okviri na ta naslov se zavržejo, čeprav IP in preusmeritev vrat ostaneta veljavna.
Vzorec vam pove, katera napaka je vaša. Bujenje, ki nikoli ne deluje, kaže na dostavo: napačna vrata, napačen cilj ali požarni zid, ki paket zavrže, preden doseže LAN. Bujenje, ki uspe enkrat in nato ure in ure ne deluje, kaže na vnos soseda. Bujenje, ki deluje do spremembe zakupa DHCP, kaže na naslavljanje, kar odpravi rezervacija.
Potrdite, da je naslov stabilen, preden se dotaknete ARP. Če speči stroj po poteku zakupa dobi nov naslov, bo pripet vnos soseda za stari naslov hkrati trajen in neuporaben. Najprej nastavite rezervacijo DHCP, da naslov preživi ponovne zagone.
Kaj magični paket potrebuje od omrežja
Koristna obremenitev je preprosta: 102 bajtov iz šestih bajtov 0xFF, ki jim šestnajstkrat sledi ciljni naslov MAC, običajno poslani na vrata UDP 9. V ploščatem LAN gre kot oddajanje, vsaka vrata ga prejmejo, izklopljena mrežna kartica pa prepozna svoj naslov.
Prek VPN paket prispe v usmerjevalnik kot unicast na zasebni naslov ali kot oddajanje, usmerjeno v podomrežje. Pri unicastu mora usmerjevalnik cilj razrešiti v naslov MAC, preden lahko okvir položi v LAN, in prav ta razrešitev spodleti, medtem ko gostitelj spi.
Nekatera orodja pošiljajo na vrata 7 namesto 9, nekateri aparati pa privzeto blokirajo usmerjeno oddajanje. To so napake dostave, ne ARP, zato preverite cilj in vrata, preden spremenite tabelo sosedov.
Tri poti do spečega gostitelja
Okvir lahko pripeljete v LAN na tri praktične načine, prava izbira pa je odvisna od tega, kaj nadzorujete.
| 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 |
Izberite pomožnega gostitelja, kadar obstaja, ker oddaja na povezavi in ne potrebuje izjeme v usmerjevalniku. Izberite usmerjeno oddajanje, kadar ga usmerjevalnik že dovoljuje in orodje za bujenje sprejme naslov. Izberite statični vnos, kadar ni na voljo nič od tega in lahko zaženete ukaz v usmerjevalniku.
Te možnosti se medsebojno ne izključujejo. Trajen vnos tudi omogoči, da pot unicast preživi spanje, kar je koristno, kadar lahko odjemalec VPN pošilja le na določen naslov.
Naredite vnos soseda trajen
V usmerjevalniku z lupino Linux en ukaz pripne preslikavo. Tu navedene vrednosti pripadajo vzorčnemu LAN in jih morate zamenjati s svojimi:
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.23Stanje nud permanent ohrani vnos prek časovnih omejitev ARP in se uporabi za posredovanje, ko je stroj izklopljen. Drugi ukaz dokaže, da vnos obstaja, in pokaže vmesnik, ki mu pripada, kar je pomembno v usmerjevalnikih z ločenim gostinskim mostom ali VLAN.
Naredite ga odpornega na ponovni zagon s katero koli kljuko, ki jo ponuja vdelana programska oprema: skript v /jffs/scripts na Asuswrt-Merlin, enota oneshot systemd na strežniku Linux kot prehod, Neighbor= stanza v systemd-networkd ali vnos v /etc/ethers, ki ga berejo lokalna orodja. Ukaz, vtipkan v lupino, izgine ob naslednjem zagonu, in to je najpogostejši razlog, da delujoča rešitev navidezno preneha delovati.
Preizkusite od zunaj in vedite, kdaj ga odstraniti
Uspavajte stroj in počakajte vsaj deset minut, dovolj, da zastara vsak dinamični vnos. Nato pošljite zahtevo za bujenje iz odjemalca VPN in opazujte obe strani usmerjevalnika:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9Prvi zajem dokaže, da je paket prišel iz tunela; drugi, da je usmerjevalnik položil okvir v LAN. Veljaven magični paket se prikaže kot 102 bajtov s ponovljenim MAC, zato preverite dolžino in cilj. Če okvir zapusti most LAN, stroj pa ostane izklopljen, je preostala težava v napravi: hitri zagon, globoko spanje ali nastavitev v BIOS, ki prekine napajanje mrežne kartice.
Vnos odstranite, ko se zamenja mrežna kartica, in ga posodobite, ko stroj premaknete na drug naslov. Trajna preslikava je namerna izjema, izjema, ki se je nihče ne spomni, pa je način, kako bo prihodnji prenosnik začel prejemati okvire, namenjene upokojenemu namiznemu računalniku.