Ĉu Wake-on-LAN tra VPN ĉesis funkcii? Riparu la ARP-rikordon
Magiaj pakoj trapasas la tunelon, sed la enkursigilo forĵetas ilin post kiam ĝia ARP-rikordo eksvalidiĝas. Komparu tri liverajn vojojn, poste fiksu la MAC-adreson konstante.
Sendu vekpako tuj post malŝalto kaj la komputilo revenas; la sama komando la sekvan matenon faras nenion. Nenio en la VPN-agordo ŝanĝiĝis, kaj la porda plusendado ankoraŭ celas la ĝustan adreson. La diferenco estas la tempo: la najbara tabelo de la enkursigilo forgesis la dormantan maŝinon, do ĝi ne havas MAC-adreson por meti en la kadron. Ĝuste tiu eksvalidiĝo, ne la tunelo, klarigas plej multajn malsukcesojn de Wake-on-LAN tra VPN.
La unua veko funkcias kaj la sekva ne
Enkursigilo plusendas kadron al privata adreso per serĉo de la celo en sia najbara tabelo. Dum la maŝino funkcias ĝi respondas al ARP, do la mapado restas freŝa. Post kiam ĝi malŝaltiĝas, nenio respondas, la rikordo eksvalidiĝas post kelkaj minutoj, kaj postaj kadroj al tiu adreso estas forĵetataj eĉ se la IP kaj la porda plusendado restas validaj.
La ŝablono diras al vi kiun fiaskon vi havas. Veko kiu neniam funkcias montras al la liverado: malĝusta pordo, malĝusta celo aŭ fajroŝirmilo kiu forĵetas la pakon antaŭ ol ĝi atingas la LAN. Veko kiu funkcias unufoje kaj poste malsukcesas dum horoj montras al la najbara rikordo. Veko kiu funkcias ĝis la luo de DHCP ŝanĝiĝas montras al la adresado, kiun reparas rezervo.
Konfirmu ke la adreso estas stabila antaŭ ol tuŝi ARP. Se la dormanta maŝino prenas novan adreson post eksvalidiĝo de luo, fiksita najbara rikordo por la malnova adreso estos samtempe konstanta kaj senutila. Unue agordu DHCP-rezervon por ke la adreso postvivu restartojn.
Kion la magia pako bezonas de la reto
La utilŝarĝo estas simpla: 102 bajtoj el ses bajtoj 0xFF sekvataj de la cela MAC-adreso dek ses fojojn, kutime sendataj al UDP-pordo 9. En plata LAN ĝi eliras kiel dissendo, ĉiu pordo ricevas ĝin, kaj la malŝaltita retkarto rekonas sian propran adreson.
Tra VPN la pako alvenas al la enkursigilo kiel unuopa sendo al privata adreso aŭ kiel subrete direktita dissendo. En la unuopa kazo la enkursigilo devas solvi la celon al MAC-adreso antaŭ ol meti la kadron sur la LAN, kaj ĝuste tiu solvo malsukcesas dum la gastiganto dormas.
Kelkaj iloj sendas al pordo 7 anstataŭ 9, kaj kelkaj aparatoj blokas direktitan dissendon defaŭlte. Tiuj estas liveraj fiaskoj, ne ARP-fiaskoj, do kontrolu la celon kaj la pordon antaŭ ol ŝanĝi la najbaran tabelon.
Tri vojoj al dormanta gastiganto
Vi havas tri praktikajn manierojn meti la kadron sur la LAN, kaj la ĝusta elekto dependas de tio, kion vi regas.
| 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 |
Elektu la helpan gastiganton kiam ĝi ekzistas, ĉar ĝi dissendas surloke kaj bezonas neniun escepton en la enkursigilo. Elektu direktitan dissendon kiam la enkursigilo jam permesas ĝin kaj la vekilo subtenas adreson. Elektu la senmovan rikordon kiam neniu el ambaŭ haveblas kaj vi povas ruli komandon sur la enkursigilo.
Tiuj ne reciproke ekskluzivas. Konstanta rikordo ankaŭ ebligas al la unuopa vojo postvivi dormon, kio utilas kiam la VPN-kliento povas sendi nur al specifa adreso.
Faru la najbaran rikordon konstanta
Sur enkursigilo kun Linux-ŝelo, unu komando fiksas la mapadon. La valoroj ĉi tie apartenas al ekzempla LAN kaj devas esti anstataŭigitaj per la viaj:
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.23La stato nud permanent tenas la rikordon tra ARP-tempolimoj kaj uzas ĝin por plusendado dum la maŝino estas malŝaltita. La dua komando pruvas ke la rikordo ekzistas kaj montras la interfacon al kiu ĝi apartenas, kio gravas sur enkursigiloj kun aparta gastobruo aŭ VLAN.
Faru ĝin restartoimuna per kiu ajn hoko la firmaro proponas: skripto en /jffs/scripts sur Asuswrt-Merlin, systemd oneshot-unuo sur Linux-servilo kiel kluzo, Neighbor= stanza en systemd-networkd, aŭ rikordo en /etc/ethers, kiun legas la lokaj iloj. Komando tajpita en ŝelon malaperas ĉe la sekva restarto, kaj tio estas la plej ofta kaŭzo kial funkcianta riparo ŝajne ĉesas funkcii.
Testu de ekstere kaj sciu kiam forigi ĝin
Metu la maŝinon en dormon kaj atendu almenaŭ dek minutojn, sufiĉe longe por ke iu ajn dinamika rikordo eksvalidiĝu. Poste sendu la vekpeton de la VPN-kliento kaj observu ambaŭ flankojn de la enkursigilo:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9La unua kapto pruvas ke la pako alvenis el la tunelo; la dua pruvas ke la enkursigilo metis kadron sur la LAN. Valida magia pako aperas kiel 102 bajtoj kun ripetita MAC, do kontrolu la longon same kiel la celon. Se la kadro forlasas la LAN-ponton kaj la maŝino restas malŝaltita, la restanta problemo estas sur la aparato: rapida starto, profunda dormo aŭ BIOS-agordo kiu fortranĉas la potencon al la retkarto.
Forigu la rikordon kiam la retkarto ŝanĝiĝas, kaj ĝisdatigu ĝin kiam vi movas la maŝinon al alia adreso. Konstanta mapado estas intenca escepto, kaj escepto kiun neniu memoras estas kiel estonta tekkomputilo finas ricevante kadrojn destinitajn por emerita surtabla komputilo.