Wake-on-LAN per VPN nustojo veikti? Pataisykite ARP įrašą
Magiški paketai praeina tunelį, bet maršrutizatorius juos išmeta, kai baigiasi jo ARP įrašo galiojimas. Palyginkite tris pristatymo kelius ir visam laikui prisegkite MAC adresą.
Išsiųskite pažadinimo paketą iškart po išjungimo ir kompiuteris sugrįžta; ta pati komanda kitą rytą nieko nedaro. VPN konfigūracijoje niekas nepasikeitė, o prievado peradresavimas vis dar rodo teisingą adresą. Skirtumas yra laikas: maršrutizatoriaus kaimynų lentelė pamiršo miegančią mašiną, todėl neturi MAC adreso, kurį įrašytų į kadrą. Būtent šis galiojimo pasibaigimas, o ne tunelis, paaiškina daugumą Wake-on-LAN gedimų per VPN.
Pirmas pažadinimas veikia, o kitas ne
Maršrutizatorius persiunčia kadrą į privatų adresą, ieškodamas paskirties savo kaimynų lentelėje. Kol mašina veikia, ji atsako į ARP, todėl susiejimas išlieka šviežias. Kai ji išsijungia, niekas neatsako, įrašas pasensta po kelių minučių, o vėlesni kadrai į tą adresą išmetami, nors IP ir prievado peradresavimas lieka galioti.
Modelis pasako, kokia tai klaida. Pažadinimas, kuris niekada neveikia, rodo pristatymą: neteisingas prievadas, neteisinga paskirtis arba ugniasienė, kuri išmeta paketą iki jam pasiekiant LAN. Pažadinimas, kuris suveikia kartą ir po to valandų valandas nepavyksta, rodo kaimyno įrašą. Pažadinimas, kuris veikia iki DHCP nuomos pasikeitimo, rodo adresavimą, kurį ištaiso rezervacija.
Prieš liesdami ARP įsitikinkite, kad adresas stabilus. Jei miegančios mašinos nuomai pasibaigus ji gauna naują adresą, senam adresui prisegtas kaimyno įrašas bus kartu ir pastovus, ir nenaudingas. Pirmiausia nustatykite DHCP rezervaciją, kad adresas išliktų po perkrovimų.
Ko magiškam paketui reikia iš tinklo
Naudingoji apkrova paprasta: 102 baitai iš šešių 0xFF baitų, po kurių šešiolika kartų kartojamas tikslinis MAC adresas, dažniausiai siunčiama į UDP 9 prievadą. Plokščiame LAN jis išeina kaip transliacija, kiekvienas prievadas jį gauna, o išjungta tinklo kortelė atpažįsta savo adresą.
Per VPN paketas pasiekia maršrutizatorių kaip vieno adreso siuntimas į privatų adresą arba kaip į potinklį nukreipta transliacija. Vieno adreso atveju maršrutizatorius turi išspręsti paskirtį į MAC adresą, kol dar gali įdėti kadrą į LAN, ir būtent tas sprendimas nepavyksta, kol pagrindinis kompiuteris miega.
Kai kurie įrankiai siunčia į 7 prievadą, o ne 9, o kai kurie įrenginiai pagal numatytuosius nustatymus blokuoja nukreiptą transliaciją. Tai pristatymo klaidos, o ne ARP, todėl prieš keisdami kaimynų lentelę patikrinkite paskirtį ir prievadą.
Trys keliai į miegančią mašiną
Yra trys praktiški būdai perkelti kadrą į LAN, o teisingas pasirinkimas priklauso nuo to, ką kontroliuojate.
| 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 |
Pasirinkite pagalbinę mašiną, kai ji yra, nes ji transliuoja grandyje ir nereikia maršrutizatoriaus išimties. Pasirinkite nukreiptą transliaciją, kai maršrutizatorius jau leidžia, o pažadinimo įrankis priima adresą. Pasirinkite statinį įrašą, kai nė vieno nėra ir galite vykdyti komandą maršrutizatoriuje.
Šie variantai vienas kito neišskiria. Nuolatinis įrašas taip pat leidžia vieno adreso keliui išgyventi miegą, o tai naudinga, kai VPN klientas gali siųsti tik į konkretų adresą.
Padarykite kaimyno įrašą nuolatiniu
Maršrutizatoriuje su Linux apvalkalu viena komanda prisega susiejimą. Čia pateiktos reikšmės priklauso pavyzdiniam LAN ir turi būti pakeistos jūsų:
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.23Būsena nud permanent išlaiko įrašą per ARP laiko limitus ir naudoja jį persiuntimui, kol mašina išjungta. Antra komanda įrodo, kad įrašas egzistuoja, ir parodo sąsają, kuriai jis priklauso, o tai svarbu maršrutizatoriuose su atskiru svečių tiltu ar VLAN.
Padarykite jį atsparų perkrovimui bet kokiu kabliu, kurį siūlo programinė įranga: scenarijus /jffs/scripts faile Asuswrt-Merlin, systemd oneshot įrenginys Linux serveryje kaip tarpinė, Neighbor= stanza systemd-networkd, arba įrašas /etc/ethers faile, kurį skaito vietiniai įrankiai. Apvalkale įvesta komanda išnyksta per kitą perkrovimą, ir tai yra dažniausia priežastis, kodėl veikiantis labojums tarsi nustoja veikti.
Išbandykite iš išorės ir žinokite, kada jį pašalinti
Užmigdinkite mašiną ir palaukite bent dešimt minučių, tiek pakanka, kad pasenštų bet kuris dinaminis įrašas. Tada išsiųskite pažadinimo užklausą iš VPN kliento ir stebėkite abi maršrutizatoriaus puses:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9Pirmas fiksavimas įrodo, kad paketas atėjo iš tunelio; antras, kad maršrutizatorius įdėjo kadrą į LAN. Galiojantis magiškas paketas rodomas kaip 102 baitai su kartojamu MAC, todėl tikrinkite ir ilgį, ir paskirtį. Jei kadras palieka LAN tiltą, o mašina lieka išjungta, likusi problema yra įrenginyje: greitas paleidimas, gilus miegas arba BIOS nustatymas, nutraukiantis tinklo kortelės maitinimą.
Pašalinkite įrašą, kai pasikeičia tinklo kortelė, ir atnaujinkite jį, kai perkelsite mašiną į kitą adresą. Nuolatinis susiejimas yra sąmoninga išimtis, o išimtis, kurios niekas neatsimena, yra būdas, kuriuo būsimas nešiojamasis kompiuteris pradeda gauti kadrus, skirtus į pensiją išėjusiam staliniam kompiuteriui.