Wake-on-LAN преко VPN-а престаје да ради? Поправите ARP унос
Магични пакети пролазе кроз тунел, али рутер их одбацује када његов ARP унос истекне. Упоредите три пута доставе и затим трајно причврстите MAC адресу.
Пошаљите пакет за буђење одмах након искључивања и рачунар се враћа; иста команда следећег јутра не ради ништа. Ништа у VPN конфигурацији се није променило, а прослеђивање порта и даље показује на исправну адресу. Разлика је у времену: табела суседа рутера је заборавила успавану машину, па нема MAC адресу коју би ставила у оквир. Управо то истекивање, а не тунел, објашњава већину неуспеха Wake-on-LAN преко VPN-а.
Прво буђење ради, следеће не
Рутер прослеђује оквир на приватну адресу тако што тражи одредиште у својој табели суседа. Док машина ради, она одговара на ARP, па мапирање остаје свеже. Када се искључи, ништа не одговара, унос застари после неколико минута, и каснији оквири на ту адресу се одбацују иако IP и прослеђивање порта остају важећи.
Образац вам каже који неуспех имате. Буђење које никада не ради указује на доставу: погрешан порт, погрешно одредиште или заштитни зид који одбацује пакет пре него што стигне до LAN-а. Буђење које проради једном и затим сатима не ради указује на унос суседа. Буђење које ради до промене DHCP закупа указује на адресирање, које резервација исправља.
Потврдите да је адреса стабилна пре него што додирнете ARP. Ако успавана машина добије нову адресу по истеку закупа, причвршћен унос суседа за стару адресу биће истовремено трајан и бескористан. Прво подесите DHCP резервацију да адреса преживи поновна покретања.
Шта магичном пакету треба од мреже
Носиви терет је једноставан: 102 бајта од шест 0xFF бајтова, за којима шеснаест пута следи циљна MAC адреса, обично се шаљу на UDP порт 9. У равној LAN мрежи излази као емитовање, сваки порт га прима, а искључена мрежна картица препознаје сопствену адресу.
Преко VPN-а пакет стиже до рутера као једносмерно слање на приватну адресу или као емитовање усмерено на подмрежу. У случају једносмерног слања рутер мора да преведе одредиште у MAC адресу пре него што стави оквир у LAN, и управо тај превод не успева док домаћин спава.
Неки алати шаљу на порт 7 уместо на 9, а неки уређаји подразумевано блокирају усмерено емитовање. То су неуспеси доставе, не ARP-а, зато проверите одредиште и порт пре него што промените табелу суседа.
Три пута до успаваног домаћина
Имате три практична начина да ставите оквир у LAN, а исправан избор зависи од тога шта контролишете.
| 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 |
Изаберите помоћни домаћин када постоји, јер емитује на вези и не захтева изузетак на рутеру. Изаберите усмерено емитовање када га рутер већ дозвољава и алат за буђење прихвата адресу. Изаберите статични унос када ниједно није доступно и можете да извршите команду на рутеру.
Ови избори се не искључују. Трајан унос такође омогућава да једносмерни пут преживи спавање, што је корисно када VPN клијент може да шаље само на одређену адресу.
Учините унос суседа трајним
На рутеру са Linux љуском једна команда причвршћује мапирање. Вредности овде припадају примеру LAN-а и морају се заменити вашим:
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.23Стање nud permanent одржава унос кроз ARP тајм-ауте и користи га за прослеђивање док је машина искључена. Друга команда доказује да унос постоји и показује интерфејс коме припада, што је важно на рутерима са одвојеним гостујућим мостом или VLAN-ом.
Учините га отпорним на поновно покретање кроз било коју куку коју фирмвер нуди: скрипта у /jffs/scripts на Asuswrt-Merlin, systemd oneshot јединица на Linux серверу као мрежни пролаз, Neighbor= stanza у systemd-networkd, или унос у /etc/ethers који локални алати читају. Команда откуцана у љусци нестаје при следећем покретању, и то је најчешћи разлог зашто исправка која ради изгледа као да је престала да ради.
Тестирајте споља и знајте када да је уклоните
Успавајте машину и сачекајте најмање десет минута, довољно да сваки динамички унос истекне. Затим пошаљите захтев за буђење са VPN клијента и посматрајте обе стране рутера:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9Прво снимање доказује да је пакет дошао из тунела; друго да је рутер ставио оквир у LAN. Исправан магични пакет изгледа као 102 бајта са поновљеном MAC адресом, зато проверите дужину и одредиште. Ако оквир напусти LAN мост, а машина остане искључена, преостали проблем је у уређају: брзо покретање, дубок сан или подешавање у BIOS-у које прекида напајање мрежне картице.
Уклоните унос када се промени мрежна картица и ажурирајте га када преместите машину на другу адресу. Трајно мапирање је намерни изузетак, а изузетак којег се нико не сећа пут је којим будући лаптоп почиње да прима оквире намењене пензионисаном сточном рачунару.