Форум OlegON > Компьютеры и Программное обеспечение > Сеть

Как работает Wake-on-LAN (WOL) : Сеть

29.03.2024 8:25


11.10.2015 12:56
OlegON
 
Что такое Wake on LAN - это возможность разбудить компьютер по сети пакетом данных. Чаще всего речь идет о magic packet, но на самом деле вариантов гораздо больше. Вот пример:
Цитата:
p Wake on PHY activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket™
s Enable SecureOn™ password for MagicPacket™
d Disable (wake on nothing). This option clears all previous options.
Большинство карт поддерживают pumbg, моя, например, такая.
Пытаюсь разобраться, как всем этим добром можно пользоваться и тут требуется помощь.

Для начала тем, кто еще не разбирался. PHY - физическая активность, т.е. практически все, что угодно, включая скачок линка. Unicast - любой пакет на наш адрес, multicast - пакет, направленный многим, среди которых есть наш адрес, broadcast - широковещательный пакет нашей подсети. MagicPacket - специальный пакет, суть которого многократное повторение MAC-адреса, может быть встроен во многие протоколы.

Смотрите, у меня получается топология такая сервер-рутер-комп.

На данный момент получается следующая история. Сервер и рутер включены всегда. Идеальным бы был проброс magic packet снаружи сразу на комп. И тут пробуксовка. Дело в том, что с помощью wireshark я определил
Код:
wakeonlan MAC
запущенный на сервере не рутится никуда, независимо от включенной опции Green Enthernet, например. Если использовать
Код:
wakeonlan -i IP MAC
то пакет прилетает, но, судя по всему, только когда комп не спит. Я так понимаю, что проблема в рутере, но пока не очень понимаю, как рулить пакетом, если ARP-таблица очищается.

На текущий момент решение нашел только одно - логинюсь на сервер, запускаю скрипт, который логинится на рутер и запускает оттуда магический пакет. Это работает. Пока в процессе исследования, чем этот пакет отличается от того, который не рутится с сервера.

Второе, что пробовал - включить u, т.е. будиться по unicast. Как я понимаю, комп при этом практически нереально усыпить, если хотя бы даже закладка с gmail открыта. В процессе засыпания что-то прилетает и комп сразу просыпается. Когда все-все закрываю, то та-дааам, рутер очищает таблицу ARP и пакет никуда не уходит, чтоль... В общем, не понимаю, что ему надо, чтобы разбудить через unicast. Преимущество этой опции в том, что иногда смотрю кино с ТВ, а посреди фильма комп засыпает, что не должно быть при unicast.

Вот такой вот сумбур... Есть ли у вас какие-то удачные способы применения технологии? Кстати, смех смехом, а полное выключение компа через два часа простоя экономит в моем случае порядка 500 руб. в месяц.
25.10.2015 08:26
OlegON
 
Пока ломаю голову, каким образом работает этот несчастный unicast...
Из интересного и полезного, попавшего по дороге, могу отметить проброс Magic из интернета. Как настроить описываю ниже.

Настраиваете проброс пакета UDP порт 9 себе внутрь на адрес, который в сети не используется, например, 192.168.1.254, после чего в рутере каким-то способом (зависит от рутера) вводите команду
Код:
ip arp 192.168.1.254 ff:ff:ff:ff:ff:ff
этот MAC обозначает бродкаст. Т.е. что произойдет. Шлете хоть из Интернета Magic, он прилетает в рутер на 9 порт, редиректится на .254, который, опаньки, оказывается бродкастом и раскидывается на все порты. Видимо, аналогичным образом надо и мне прибить, чтобы unicast заработал.

Прибил мак своей машины
Код:
ip neigh replace 192.168.10.70 lladdr 74:d0:2b:36:82:92 nud permanent dev br0
17.11.2015 11:47
OlegON
 
В общем, разобрался. Благодаря OpenWRT, удалось поставить tcpdump на рутер и послушать траффик.
Выяснилось, что на рутер магический пакет прилетает со стороны WAN, после чего со стороны LAN-интерфейса сыпятся arp-запросы, "а кто такой 192.168.10.70?". Внимательно пригляделся, в таблице arp запись для .70 с флагом 0х0, т.е. incomplete. Обматерился, воткнул в скрипт загрузки
Код:
ip neigh add 192.168.10.70 lladdr 74:d0:2b:36:81:91 nud permanent dev br-lan
ip neigh change 192.168.10.70 lladdr 74:d0:2b:36:81:91 nud permanent dev br-lan
по крайней мере вторая строка при выполнении непосредственно в консоли меняет флаг на 0х6, т.е. ручной и завершенный, в результате чего пакет нормально доходит и будит комп.
01.11.2016 17:28
OlegON
 
Забавно еще то, что если я приклеивал ARP к локальному интерфейсу, то не работало, только на бридж. Хотя при посыле сигнала через утилиту wol с самого рутера и именно в локальный интерфейс все работало нормально.
03.05.2020 14:09
OlegON
 
кстати, в Gnome есть nm-connection-editor? т.е. можно не каждый раз при пробуждении взводить
Код:
/usr/sbin/ethtool -s eno1 wol dg
а сделать это в интерфейсе и мышкой

Часовой пояс GMT +3, время: 08:25.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.