WOL (Wake On Lan)

Материал из sysadm
Перейти к навигации Перейти к поиску

Обзор

Чтобы WOL работал, необходимо чтобы сетевой адаптер при выключении компьютера перешел в специальное состояние. В этом состоянии адаптер поднимает линк с портом коммутатора (обычно на скорости 10Мбит). Индикатор на сетевом адаптере при этом может мигать желтым, а может и не мигать (зависит от производителя). Таким образом если он не горит, это еще не значит что все плохо.

Пробуждение происходит, когда на интерфейс сетевого адаптера приходит специальный "Magic" пакет.

В статье (https://ru.wikipedia.org/wiki/Wake-on-LAN) утверждается, что "магический" пакет отправляется на транспортном уровне через UDP или IPX, на широковещательный IP адрес подсети, соответственно приходит на все хосты подсети. "Магический" пакет содержит в себе MAC адрес цели повторенный 6 раз. Сетевой адаптер работающий в режиме ожидания "магического" пакета, сравнивает вложенный MAC адрес со своим и если совпадает, то пробуждает компьютер.

Необходимо также заметить, что сетевой адаптер разбирает магический пакет на аппаратном уровне. Чтобы добраться до содержимого он должен либо последовательно разобрать ethernet, IP, UDP, либо сделать смещение на фиксированный размер их заголовков.

Надо будет снифером на это посмотреть :)

Для отправки магического пакета используют специальные утилиты для отправки "магического" пакета.

Проблемы WOL бывают двух типов

  1. Настройки UEFI (BIOS), не подается питание на сетевой адаптер, сетевому адаптеру не разрешено включать компьютер и т.п.
  2. ОС не сообщила сетевому адаптеру, что при выключении компьютера он не должен отключаться, а должен перейти в специальный режим.

Если было физическое пропадание питания, то WOL не сработает, т.к. сетевой адаптер выключится, а когда питание восстановится, сетевой адаптер скорее всего не перейдет в специальный режим, а будет просто выключен.

Причины проблемы 2 в Windows

  • Сетевой драйвер идущий в комплекте с Windows функционально ограничен и не поддерживает WOL, нужно ставить драйвер производителя сетевого адаптера или материнской платы
  • Неверная настройка драйвера (не включены нужные опции), поэтому драйвер не включает на сетевом адаптере режим WOL
  • Windows отменяет переключение сетевого адаптера в режим WOL при включенном режиме быстрого запуска, если он не совместим с WOL на данном железе.

В Linux ничто само собой не переключает сетевой адаптер в WOL режим, но есть специальные утилиты, с помощью которых можно переключить сетевой адаптер в WOL режим. Команда переключения сетевого адаптера в WOL режим может быть запущена при старте системы различными способами: задание в cron на старт ОС, стартовые скрипты, самодельный сервис, и т.п.

Настройка UEFI (BIOS)

  • ErP (Energy-related Products) - эта опция включает режим пониженного энергопотребления компьютера в выключенном состоянии. Выключенный компьютер на самом деле полностью не выключается и может подавать питание на USB порты, сетевую карту и другие элементы системы. Если опция ErP включена, то питание на сетевую карту подаваться не будет и соответственно не будет работать WOL.

Если в разделе управления питанием есть опции пробуждения по сети (Wake on LAN) или пробуждения от PCIe (Wake on PCIe), то их нужно включить. Если подобных опций нет, то скорее всего это означает что WOL включен.

Настройка ОС

Настойка Windows 10

  1. настройте сетевой адаптер
  2. отключите режим быстрого запуска Windows


Проверка драйвера сетевого адаптера

Управление компьютером -> Диспетчер устройств -> Сетевые адаптеры

Найдите свой сетевой адаптер и откройте его свойства

Если в окне свойств нет закладки "Управление электропитанием", то установите полноценный драйвер для вашего сетевого адаптера от производителя.

Вкладка "Управление электропитанием"

[v] Разрешить отключение этого устройства для экономии электроэнергии
[v] Разрешить этому устройству выводить компьютер из ждущего режима
   [ ] Разрешить вывод компьютера из ждущего режима только с помощью "магического" пакета

Отправка "магического" пакета не единственный способ разбудить компьютер по сети. Выбирать последнюю опцию имеет смысл, только если вы не хотите чтобы компьютер пробуждался по сети другими способами (не "магическим" пакетом)

Вкладка "Дополнительно"

   Wake on Magic Packet [Enabled]

Отключение режима быстрого запуска

Быстрый запуск не всегда блокирует WOL, поэтому сначала проверьте WOL и отключайте быстрый запуск только если это действительно необходимо.

Параметры\Система\Питание и спящий режим\Дополнительные параметры питания\Действия кнопок питания

Или так

Панель управления\Оборудование и звук\Электропитание\Действия кнопок питания

Снимите галку

[ ] Включить быстрый запуск (рекомендуется)

Настойка Ubuntu 20.04

Утилиты WOL

Ubuntu 20.04

Установка

apt install etherwake

Пробуждение хоста по MAC-адресу

# с интерфейса enp4s0 отправить MagicPacket на MAC адрес a1:b2:c3:d4:e5:f6
etherwake -i enp4s0 a1:b2:c3:d4:e5:f6

Windows 10