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, якая адключае сілкаванне сеткавай карты.
Выдаляйце запіс пры змене сеткавай карты і абнаўляйце яго, калі пераносіце машыну на іншы адрас. Пастаяннае супастаўленне — гэта наўмыснае выключэнне, а выключэнне, якое ніхто не памятае, — гэта тое, праз што будучы ноўтбук атрымлівае кадры, прызначаныя знятаму з эксплуатацыі настольнаму камп'ютару.