Технология Wake On Lan.

      Технология включения электропитания ("пробуждения") компьютера является частью спецификации ACPI (Advanced Configuration and Power Interface), интерфейса управления электропитанием. Иногда его еще называют интерфейсом доступа к энергосбререгающим функциям аппаратного обеспечения. Дистанционное включение компьютера - небольшая и далеко не основная часть этой спецификации. Описание ACPI легко найдете в интернете (описание ACPI 2.0 содержит более 400 страниц).

Спецификация определяет состояния системы S1-S5 - "состояния сна" в порядке уменьшения энергопотребления. S5 - это состояние программного выключения (Soft OFF) - все выключено, за исключением тех устройств, через которые возможно включение компьютера. Для питания таких устройств используется дежурное напряжение +5V SB (+5V Standby), вырабатываемое блоком питания компьютера в выключенном, но не обесточенном состоянии. Для перехода из одного состояния S1-S4 в другое (S2 в S1 например) используются PME (Power Management Events) - события управления электропитанием, большая часть которых вызывается аппаратным прерыванием от конкретного устройства.


      Технология "Wake On Lan" (технология "Magic packet") используется для включения электропитания удаленного компьютера, находящегося в состоянии программного выключения ("Soft Off") путем посылки на его сетевой адаптер специально сформированного кадра Ethernet.
    Удаленный компьютер должен отвечать определенным требованиям:
- Оборудование должно соответствовать спецификации ACPI и в настройках BIOS должна быть включена поддержка режима "Wake On Lan".
- Иметь блок питания ATX.
- Иметь сетевую карту, поддерживающую технологию "Wake On Lan" (WOL).

      Сетевой адаптер на выключенном компьютере остается под питанием от +5VSB блока питания в режиме ожидания приема специального кадра Ethernet, в поле данных которого присутствует последовательность из 6 байт FF и его собственного MAC - адреса, повторенного 16 раз. Получив такой пакет адаптер вырабатывает сигнал включения электропитания компьютера.
Ниже приведено содержимое пакета, полученное с помощью анализатора трафика.

Содержимое Magic Packet

Адрес приемника (первые 6 байт поля кадра) - FFFFFFFFFFFF (Broadcast), адрес источника - 0015F20016CA (6 байт после адреса приемника) В области 16-ричного дампа красным цветом выделено поле данных. MAC - адрес включаемого компьютера равен 00046175F9DA.
    Практически все современные сетевые адаптеры PCI и материнские платы поддерживают данную технологию, однако есть некоторые тонкости. Если материнская плата имеет шину PCI спецификации до 2.2 (большинство моделей на базе процессоров Pentium II и Pentium III) , то на ней должен быть 3-х штырьковый разъем "Wake On Lan" и такой же разъем должен быть на сетевом адаптере. Их нужно соединить специальным кабелем, входящим в комплект поставки адаптера. Для случая с шиной PCI 2.2 такое соединение уже выполнено напрямую. Если у вас компьютер Pentium II или старше - Wake On Lan должна работать.
      В настройках BIOS современных материнских плат термин "Wake On Lan" практически не используется. Ищите близкое по смыслу значение в настройках раздела управления электропитанием ("Power Management Setup", или "ACPI Configuration" и т.п.), например, "Wake-Up by PCI device", "Power on by Ethernet Card" и т.п.

Ниже приведен пример настроек раздела "Power - APM Configuration" AMI BIOS v2.61:

Настройка Wake On Lan в BIOS Setup



Для включения режима Wake On Lan необходимо установить пункт "Power On By PCI Devices" в "Enabled".

На всякий случай, значение остальных опций:

Restore on AC Power Loss - поведение системы при пропадании электропитания. Значение Power Off - система останется в выключенном состоянии, Power On - будет выполнено включение компьютера, как только электропитание будет восстановлено.
Power On By RTC Alarm - включение электропитания по внутренним часам компьютера (аналог будильника).
Power On By External Modems - включение электропитания будет выполняться при входящем звонке на внешний модем, подключенный к последовательному порту.
Power On By PCIE Devices - разрешает включение компьютера от устройств на шине PCI-E. Если ваша сетевая карта использует шину PCI-E, а не PCI, то для включения режима Wake On Lan нужно установить эту опцию в "Enable".
Power On By PS/2 Keyboard - разрешает включение электропитания от клавиатуры, подключенной к разъему PS/2

      Ну, и последнее, что необходимо для включения электропитания компьютера через локальную сеть - это программа, генерирующая WOL - пакет (Magic Packet). Ее несложно найти в сети. Один из вариантов - broadc.exe - утилита для включения компьютера по локальной сети. (скачать, 32кб)
Формат командной строки:

broadc.exe MAC-адрес сетевой карты 255.255.255.255 67
    Примеры использования:
bbroadc.exe 0002b3d8b4e6 255.255.255.255 67 - включить компьютер, MAC - адрес сетевой карты которого равен 0002b3d8b4e6 .


Вариант для Linux - wakeonlan - (скачать, ~5кб)
По умолчанию программа использует для посылки Magic Packet'а широковещательный адрес и UDP-пакет на порт 9 (discadrd). Поэтому внутри локальной сети для включения компьютера достаточно задать MAC-адрес сетевой карты в виде 00:01:02:03:04:05
Формат командной строки:

wakeonlan MAC-адрес

    Примеры дистанционного включения и выключения компьютера в нужное время можно найти в разделе Windows Автоматизация с помощью nncron Lite.

    Использовать данную технологию можно не только в локальной сети, но и в Интернет, надо только учитывать тот факт, что сформированный Magic Packet будет проходить через маршрутизаторы, т.е должен содержать правильные IP и MAC-адреса. Упомянутая выше программа Broadc.exe не позволяет сформировать MAC адрес-приемника в заголовке кадра Ethernet отличный от FFFFFFFFFFFF (Broadcast), поэтому такой пакет до получателя (удаленно включаемого компьютера) не дойдет, поскольку маршрутизаторы блокируют широковещательные пакеты. Для формирования Magic Packet'а, обеспечивающего удаленное включение компьютера в чужой сети можно воспользоваться утилитой wol.exe -(скачать, ~5кб). При меньшем, чем у broadc.exe размере, программа обладает несколько большими возможностями. В параметрах командной строки можно указать имя текстового файла, содержащего список MAC - адресов компьютеров для удаленного включения. Пример содержимого :

# maclist - mac addresses for wakonlan     - строка начинающаяся с # не обрабатывается - это комментарий
00:BA:BE:FA:CE:00 PC1     - Включить по MAC -адресу
00:11:22:33:44:5A PC2
195.210.128.3-01:12:23:34:45:67 SERVER.COM     - Включить по IP плюс MAC
0xC0A801F0-12:23:34:45:56:67 HOST.RU     - То же, что и впредыд. случае, но IP в шестнадцатеричном виде.

По умолчанию программа формирует UDP пакет на порт 60000. Номер порта можно изменить. Примеры:

  • Включить компьютер в локальной сети с MAC=01:02:03:04:05:06

    wol.exe 01:02:03:04:05:06:

  • Включить компьютер с использованием IP=212.248.111.222 и MAC=00:00:00:00:00:99:

    wol.exe 212.248.111.222-00:00:00:00:00:99

  • То же самое но использовать в формируемом пакете номер порта = 4096:

    wol.exe -p=4096 212.248.111.222-00:00:00:00:00:99

    Учтите, что IP-адрес в параметрах запуска - это не IP - адрес включаемого компьютера, а адрес включенного и доступного узла, обеспечивающего передачу пакета конечному получателю, т.е. выключенному компьютеру. Выключенный компьютер не имеет загруженных драйверов и его IP -адрес не может быть увязан с MAC-адресом (ARP-протокол) - wol завершится ошибкой разрешения IP. Довольно распространенная причина того, что Wake On Lan "не работает" - использование в параметрах программ для включения, IP - адреса включаемого компьютера.

        Данную утилиту (wol.exe) я успешно использовал для включения компьютера в сети "Стрим". Маршрутизатор, через который подключается компьютер к Интернет, настраивается таким образом, чтобы пакет, сформированный утилитой wol.exe и пришедший на определенный порт (например 4009) направить в локальную сеть c широковещательным MAC-адресом. Обычно сетевая плата принимает только те фреймы, адрес назначения которых совпадает с аппаратным адресом интерфейса (свой MAC-адрес) или с широковещательным адресом (адрес FFFFFFFFFFFF). В настройках ADSL-модема Zyxel P660RU2 (Network-NAT-Port Forwarding) создается правило для перенаправления принятого пакета на широковещательный адрес 192.168.1.255:

    Настройка Port Mapping в ADSL-модеме

    Команда на включение:

    wol.exe -p=4009 <IP ADSL-модема>-<MAC-адрес сетевой карты компьютера>

    Например:

    wol.exe -p=4009 85.140.21.22-00:00:A0:80:87:99





        И еще один момент - удаленное включение электропитания не срабатывает если компьютер был полностью обесточен, например, при пропадании ~220В. В таких случаях для обеспечения его самостоятельного включения можно использовать установку режима BIOS в разделе "Power Management Setup" - "Power on after power fail" или подобного ему по смыслу ("After AC Power Lost" - "POWER ON" - название зависит от версии и производителя BIOS) . После появления ~220В компьютер должен включиться самостоятельно, без нажатия кнопки "Power".

        Практика использования Wake On Lan выявила еще один момент, - некоторые компьютеры при разрешении режима включения по сети в настройках BIOS, включают электропитание самостоятельно, даже не получив кадр с Magic Packet'ом. Причиной данного явления является то, что у некоторых сетевых карт (замечено у Intel, 3COM) для включения электропитания по локальной сети используют не только WOL, но и другие события (Wake on ARP, Wake on Link Change и т.п.), при чем, по умолчанию задействованы сразу несколько критериев включения. Нужно убрать из настроек адаптера (как правило, с помощью специальной утилиты) лишние условия, и все будет работать правильно.
        Пример, для сетевого адаптера Intel(R) PRO/100VE. С помощью утилиты Intel(R) PROSet II (поставляемой с адаптером) убираем галочки со всех событий, кроме "Wake on Magic Packet":

    Wake On Settings

    После сохранения настроек, ваш компьютер будет включаться только при получение Magic Packet'a.

        Иногда разрешения режима удаленного включения электропитания по локальной сети в настройках BIOS бывает недостаточно. Обычно это связано с особенностями конкретного типа сетевого адаптера. Объясню на примере сетевой карты на чипсете Atheros (контроллер AR8121/AR8113/AR8114 PCI-E Ethernet Adapter). После установки режима Power On by PCI-E Device в настройках BIOS материнской платы, удаленное включение электропитания компьютера не происходит. В свойствах сетевого подключения для данного адаптера имеется кнопка Настроить

    Atheros Gigabit Ethernet Card Property

    В свойствах сетевого контроллера имеется вкладка Дополнительно.

    Atheros Gigabit Ethernet Card Property - WOL

        В данном окне можно просмотреть или изменить некоторые параметры и режимы работы выбранной сетевой карты. В частности, по умолчанию, режимы Пробуждение после выключения и Возможности пробуждения установлены в Нет. Именно по этой причине удаленное включение электропитания не выполняется. После установки разрешения режим пробуждения и типа кадра Magic Packet все должно заработать, как положено.

        Для тех, кому требуется программное обеспечение с графическим интерфейсом пользователя, могу посоветовать миниатюрную и очень простую в использовании утилиту wakeup.exe -(скачать, ~78кб).

    WakeUp.exe


    Определение MAC-адреса сетевой карты.

     

          В LINUX для этих целей можно использовать утилиту arping:

    arping < IP-адрес >
    Например:
    arping 192.168.0.1

        В Windows можно воспользоваться командой arp, позволяющей выдать содержимое ARP-кэша на экран. Чтобы кзш был актуален для требуемого IP-адреса, перед командой arp можно выполнить ping, т.е. выполнить последовательно :

    ping < IP >
    arp -a
      например:
    ping 192.168.0.1
    arp -a

    Кстати, этим же способом можно воспользоваться и в LINUX.

        Собственный MAC-адрес можно определить с помощью команд:

    В LINUX
    ifconfig < интерфейс >     например - ifconfig eth0

    В Windows
    ipconfig /all


    В Windows XP и выше для получения MAC-адреса своей сетевой карты можно воспользоваться консольной командой getmac.exe





    В начало страницы       |       На главную страницу сайта

     















  • Hosted by uCoz