Wake-on-LAN preko VPN-a prestaje raditi? Popravite ARP unos
Magični paketi prolaze kroz tunel, ali ih ruter odbacuje nakon što mu istekne ARP unos. Uporedite tri puta dostave, pa trajno prikvačite MAC adresu.
Pošaljite paket za buđenje odmah nakon isključivanja i računar se vraća; ista komanda sljedećeg jutra ne radi ništa. Ništa se u VPN konfiguraciji nije promijenilo, a prosljeđivanje porta i dalje pokazuje na ispravnu adresu. Razlika je u vremenu: ruterova tabela susjeda je zaboravila uspavani stroj, pa nema MAC adresu koju bi stavila u okvir. Taj istek, a ne tunel, objašnjava većinu Wake-on-LAN kvarova preko VPN-a.
Prvo buđenje radi, sljedeće ne
Ruter prosljeđuje okvir na privatnu adresu tako što odredište traži u svojoj tabeli susjeda. Dok stroj radi, odgovara na ARP pa mapiranje ostaje svježe. Kada se isključi, ništa ne odgovara, unos istekne nakon nekoliko minuta, a kasniji okviri za tu adresu se odbacuju iako IP i prosljeđivanje porta ostaju valjani.
Obrazac vam kaže koji kvar imate. Buđenje koje nikad ne radi upućuje na dostavu: pogrešan port, pogrešno odredište ili vatrozid koji odbacuje paket prije nego stigne do LAN-a. Buđenje koje proradi jednom pa onda satima ne radi upućuje na unos susjeda. Buđenje koje radi dok se DHCP lease ne promijeni upućuje na adresiranje, koje rješava rezervacija.
Potvrdite da je adresa stabilna prije nego dirate ARP. Ako uspavani stroj dobije novu adresu nakon isteka leasea, prikvačeni unos susjeda za staru adresu bit će istovremeno trajan i beskorisan. Prvo postavite DHCP rezervaciju da adresa preživi restarte.
Šta magični paket traži od mreže
Korisni teret je jednostavan: 102 bajta od šest bajtova 0xFF iza kojih slijedi ciljna MAC adresa šesnaest puta, obično poslano na UDP port 9. Na ravnom LAN-u izlazi kao broadcast, svaki port ga primi, a isključena mrežna kartica prepoznaje vlastitu adresu.
Preko VPN-a paket dolazi na ruter kao unicast na privatnu adresu ili kao broadcast usmjeren na podmrežu. U unicast slučaju ruter mora razriješiti odredište u MAC adresu prije nego stavi okvir na LAN, a upravo to razrješavanje pada dok host spava.
Neki alati šalju na port 7 umjesto 9, a neki uređaji standardno blokiraju usmjereni broadcast. To su kvarovi dostave, ne ARP-a, pa provjerite odredište i port prije nego mijenjate tabelu susjeda.
Tri puta do uspavanog hosta
Imate tri praktična načina da dovedete okvir na LAN, a ispravan izbor zavisi od toga šta kontrolirate.
| 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 |
Odaberite pomoćni host kada postoji, jer emituje na linku i ne treba izuzetak na ruteru. Odaberite usmjereni broadcast kada ga ruter već dopušta i alat za buđenje podržava adresu. Odaberite statični unos kada ni jedno nije dostupno i možete pokrenuti komandu na ruteru.
Ove se opcije ne isključuju. Trajni unos također omogućava da unicast put preživi spavanje, što je korisno kada VPN klijent može slati samo na određenu adresu.
Učinite unos susjeda trajnim
Na ruteru s Linux ljuskom jedna komanda prikvačuje mapiranje. Vrijednosti ovdje pripadaju primjeru LAN-a i morate ih zamijeniti svojima:
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 drži unos kroz ARP tajmaute i koristi ga za prosljeđivanje dok je stroj isključen. Druga komanda dokazuje da unos postoji i pokazuje interfejs kojem pripada, što je važno na ruterima s odvojenim gostinskim mostom ili VLAN-om.
Učinite ga otpornim na restart kroz bilo koju kuku koju firmver nudi: skriptu u /jffs/scripts na Asuswrt-Merlinu, systemd oneshot jedinicu na Linux serveru u ulozi pristupnika, Neighbor= stanza u systemd-networkd ili unos u /etc/ethers koji lokalni alati čitaju. Komanda otkucana u ljusci nestaje pri sljedećem restartu, i to je najčešći razlog zašto ispravka koja radi naizgled prestane raditi.
Testirajte izvana i znajte kada ga ukloniti
Uspavajte stroj i pričekajte najmanje deset minuta, dovoljno da svaki dinamički unos istekne. Zatim pošaljite zahtjev za buđenje s VPN klijenta i promatrajte obje strane rutera:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9Prvi snimak dokazuje da je paket stigao iz tunela; drugi dokazuje da je ruter stavio okvir na LAN. Valjan magični paket izgleda kao 102 bajta s ponovljenim MAC-om, pa provjerite dužinu kao i odredište. Ako okvir napusti LAN most a stroj ostane isključen, preostali problem je na uređaju: brzo pokretanje, duboko spavanje ili BIOS postavka koja prekida napajanje mrežne kartice.
Uklonite unos kada se promijeni mrežna kartica i ažurirajte ga kada premjestite stroj na drugu adresu. Trajno mapiranje je namjeran izuzetak, a izuzetak kojeg se nitko ne sjeća način je na koji budući prijenosnik počne primati okvire namijenjene umirovljenom stolnom računaru.