Shutdown wake up что это
WOL: Приключения «Волшебного Пакета»
1. Вы с утра выбежали из дома забыв включить компьютер, что бы поддерживать Torrent рейтинг?
2. Вы в очередной раз выбежали из дома, а придя на работу вспомнили что на домашнем ПК остались нужные файлы? или наоборот.
3. У вас отключили свет и ПК, Сервер, etc… отключились? но вам нужны они в рабочем состоянии?
4. Любой другой критический случай настигший вас в дороге.
В этой статье пойдет речь о том, как при помощи Wake On LAN, которая присутствует практически во всех BIOS с 2002 года, включит ваш компьютер по сети или через интернет.
С другого ПК, или мобильного устройства.
Что нужно иметь
Конфигурация Сетевой Карты
Для работы WOL, необходимо что бы после выключения ПК, сетевая карта находилась в режиме «Standby«, о чем свидетельствуют мигающие лампочки на сетевой карте. Если у вас с этим все в порядке, дальнейший текст можно пропустить.
Если лампочки не горят необходимо сделать следующее:
Пуск — Панель Управления — Сетевые подключения, Выбрать активную сетевую карту, зайти в ее свойства, затем «Настроить«.
— Если есть пункт Версия NDIS, — Выбрать «NDIS X» (по умолчанию может быть Авто), где X это версия Интерфейса Сетевых Драйверов, соответсвуюший вашей операционной системе;
— Здесь же включить Wake on Magic Packet (Пробуждение Особым Пакетом Magic)
Сохранить изменения, перезагрузить ПК, затем выключить и проверить горят ли лампочки на Сетевой карте.
Удаленная работа с ПК
Если вы используете маршрутизатор необходимо настроить перенаправление широковещательных сообщений на каком-либо порту, на ваш компьютер.
WakeOnLan Broadcast
Enable: yes
IP Address: ваш внутренний широковещательный адрес
Protocol: UDP
Private Port: 9
Public Port: 9
Schedule: Always
Если маршрутизатор вы не используете, то достаточно знать ваш внешний (выделенный IP), в фаерволе открыть 9 порт. и пользоваться WOL c любого устройства, например с iPhone, предварительно указав данные включаемого ПК.
UPD: в последнее время не имею Мака под рукой, и проверить все сам лично не могу, поэтому те, кому нужна инфа по WOL для MAC OSX, почитайте здесь
Wake-On-LAN в Windows: лучшая функция, которую вы не используете
Wake-on-LAN (WoL) является недооцененной и недостаточно используемой частью операционной системы Windows 10. Если вы являетесь не заядлым пользователем системы windows, то вам наверняка фраза Wake-on-LAN будет не интересна. Эта функция связана с подключением по локальной сети, которая в свою очередь заинтересует геймеров и техническую поддержку. В прошлом этот параметр был слаб, но на сегодня настройка функции «Wake-on-LAN» в Windows 10 дает больше, чем было. Итак, что такое Wake-on-LAN? Как это может быть полезно для обычных пользователей? И что самое главное, как его настроить?
Что такое Wake-On-LAN?
Чтобы WoL работал, вам нужно три вещи:
Wake-on-LAN широко распространена в мире компьютеров. Поскольку поддержка требуется на аппаратном уровне, WoL работает на компьютерах под управлением Windows, Mac и Linux без проблем. С точки зрения Windows ваш компьютер может включаться из любых состояний питания по умолчанию, таких как гибернация и спящий режим, а также от полного отключения питания.
Как работает Wake-On-LAN?
Wake-on-LAN использует «magic packets», когда сетевая карта обнаруживает пакет, он сообщает компьютеру включить себя. Именно поэтому ваш компьютер должен быть подключен к источнику питания, даже если он выключен. Сетевые карты с поддержкой WoL будут продолжать получать небольшой заряд круглосуточно, пока они сканируют «magic packets» (волшебный пакет).
Но что же происходит?
«Волшебный пакет» отправляется с сервера. На сервере может быть много чего, к примеру специализированное программное обеспечение, маршрутизаторы, веб-сайты, компьютеры, мобильные устройства, интеллектуальные телевизоры. Сервер отправляет пакет по всей вашей сети. Сам пакет содержит важную информацию, включая сведения о подсети, сетевом адресе и самое главное MAC-адрес компьютера, который вы хотите включить. Вся эта информация, объединенная в один пакет, называется фреймом пробуждения. Ваша сетевая карта постоянно сканирует их.
Почему Wake-On-LAN полезен?
Теперь вы знаете, что такое Wake-on-LAN и как оно работает. Но почему это полезно? Почему средний пользователь должен заботиться об этой технологии?
Включите компьютер из любого места
Трудно представить себя в командировке без забытых файлах дома, к которым вы не сможете удаленно получить доступ. Чтобы удаленно использовать ваш рабочий стол, вам понадобится приложение для удаленного рабочего стола, поддерживающее Wake-On-LAN. Популярный Google Chrome Remote Desktop не работает, но Team Viewer дает такую возможность.
Примечание: BIOS должен поддерживать Wakeup-on-PME (событие управления питанием). И тогда вы сможете пробудить компьютер с выключенного состояния.
Как включить Wake-On-LAN
Включение Wake-On-LAN в Windows
Включение Wake-On-LAN в BIOS
Последствия безопасности во время пробуждения по локальной сети
Магические пакеты отправляются с использованием уровня OSI-2. На практике это означает, что любой пользователь в той же сети, что и WoL, может использовать ваш компьютер для загрузки. В домашней обстановке это несущественная проблема. В общественной сети это более проблематично. Теоретически WoL позволяет только включать компьютеры. Он не будет обходить проверки безопасности, экраны паролей или другие формы безопасности. Это также не позволит выключить компьютер снова.
Однако были случаи, когда злоумышленники использовали комбинацию серверов DHCP и PXE для загрузки машины с собственным загрузочным изображением. Это дает им доступ к любым незащищенным дискам в локальной сети.
Удаленное включение компьютера с помощью Wake-on-LAN (WOL)
Описание технологии Wake on LAN (WOL)
Сетевым администраторам и различным информационным системам в крупных компаниях зачастую требуется выполнять такие операция как резервное копирование, установка обновлений программных продуктов на компьютерах в локальной сети в ночное время чтобы это не мешало работе пользователей. Однако выполнение этих задач требует, чтобы пользователи оставляли свои компьютеры включенными в ночное время. В результате потребление электричества может возрасти почти в два раза по сравнению с дневным использованием.
Компания AMD работая в сотрудничестве с компанией Hewlett Packard (HP) нашли решение этой проблемы. Современные компьютеры обеспечивают поступление электроэнергии на материнскую плату даже в выключенном состоянии и сетевая карта может «просматривать» все пакеты поступающие на нее из сети и при поступлении специальной команды может включать компьютер в рабочее состояние из режима ожидания. Команда должна содержать уникальный IEEE адрес сетевой карты, таким образом эта команда может включить только нужный компьютер в сети. Этот уникальный адрес повторяется в команде 16 раз и может быть передан любым протоколом на любой порт обеспечивая таким образом свободу передачи этой команды. Сетевой пакет содержащий такую команду на включение компьютера назвали Магический Пакет (Magic Packet).
Технология Магического Пакета позволяет удаленно включить выключенный или находящийся в режиме ожидания компьютер по сети. Это достигается отправкой Магического Пакета в заданный узел сети где находится компьютер. Когда компьютер переходит в режим ожидания он включает в сетевой карте режим ожидания Магического Пакета и далее сетевая карта проверяет весь трафик поступающий на нее.
В терминологии компании Intel эта технология названа Wake on LAN (WOL).
Некоторые сетевые карты дополнительно поддерживают функцию «SecureON» пароль. Эта настройка позволяет дополнительно задавать пароль для Магического Пакета. Пароль состоит из 6 символов (6 байт) и эти символы дополнительно передаются в Магическом Пакете. Однако на текущий момент немногие производители включают поддержку данной функции в свою продукцию.
Что требуется для работы Wake-On-LAN?
По завершении настройки, выключите компьютер и убедитесь что на сетевой карты сзади компьютера горит индикатор (обычно зеленый светодиод) показывая что сетевая карта готова к приему пакета пробуждения.
Как включить удаленный компьютер через интернет (онлайн)
Если вы хотите быстро и без лишней волокиты включить свой компьютер с помощью технологии Wake-On-Lan, то можно воспользоваться онлайн сервисами, которые позволяют задать IP адрес (обычно это будет адрес вашего роутера, на котором уже был предварительно настроен проброс портов для функционирования технологии WoL, как описано в нашей статье: Настройка Wake-On-LAN в роутере), а также нужный MAC адрес, чтобы сформировать Magic Packet, который должен включить компьютер.
С помощью онлайн-сервиса depicus
Для включения удаленного комьютера можно воспользоваться сервисом от depicus, который доступен по ссылке:
https://www.depicus.com/wake-on-lan/woli
В поле «mac address» вписываем MAC-адрес сетевой карты того компьютера, который вы хотите включить через интернет, в поле «ip address» вписываем публичный «белый» ip-адрес вашего компьютера (или роутера, смотря как именно настроена сеть в вашем случае) и жмем кнопку «WAKE UP».
С помощью онлайн-сервиса w3dt.net
Программы для удаленного включения компьютера
Программы для Windows
Используя программу WakeMeOnLan вы можете использовать технологию Wake on LAN для включения любого количества компьютеров удаленно по сети или через Интернет. Программа имеет удобную графическую оболочку, а также поддерживает работу в режиме командной строки. Скачать её можно с официального сайта.
Примеры использования из командной строки:
Включение компьютера с IP адресом 192.168.2.1:
Включение компьютера с именем PC01:
Включение компьютера с MAC адресом 12-34-45-78-90-AB:
Программы для Linux
Программа etherwake устанавливается в популярных дистрибутивах следующим образом:
В CentOS/RedHat:
В Debian/Linux Mint/Ubuntu:
Теперь, когда имени sysadmin присвоен MAC адрес 12-34-45-78-90-AB, можно воспользоваться именем компьютера в etherwake:
Аналогично будет выглядеть запись для IP, с той разницей, что после MAC адрес будет написан IP адрес:
Программы для Android
Если вы хотите удаленно включить компьютер с помощью вашего телефона, работающего на Андройде, то можете воспользоваться программой Wake On Lan:
Ссылка на google play market: https://play.google.com/store/apps/details?id=co.uk.mrwebb.wakeonlan
Использование программы не представляет из себя ничего сложного, как и в варианте с онлайн сервисом, нужно задать IP адрес того компьютера, который вы хотите включить, а также его MAC-адрес.
Как проверить, что Wake-On-LAN работает
Если вы хотите удостовериться, что все настроено как нужно и Magic Packet доходит до вашего компьютера (например, если вы настроили роутер, чтобы можно было включить ваш компьютер удаленно через интернет), то можно воспользоваться соответствующими программами.
Проверяем работу Wake-On-LAN в Windows
Для ОС Windows существует очень удобная утилита Wake On Lan Monitor, которая позволяет мониторить нужный порт UDP на предмет получения Magic Packet. Скачать эту утилиту можно с официального сайта: https://www.depicus.com/downloads/wakeonlanmonitor.zip
После распаковки архива, там будет один EXE файл, который нужно запустить. После запуска необходимо будет выбрать нужный UDP порт в поле «UDP port» и нажать на кнопку «Start«. Выглядеть это будет так:
Если все правильно сделали, то после нажатия кнопки «Start» надпись «Disconnected» сменится на «Connected». Это значит, что программа прослушивает указанный порт на предмет получения Magic Packet.
Теперь, проверяем, что Magic Packet доходит до нашего компьютера, если все работает как надо интерфейс программы отобразит полученный пакет в своем окне:
Чтобы убедиться, что пришел корректный пакет для пробуждения ПК, смотрим в первую строчку лога. Он должен начинаться с (FF FF FF FF FF FF), а за ним должен следовать MAC адрес того компьютера, который мы планировали включить, в нашем случае этот адрес: (52 54 00 64 9B 3A). Как на скриншоте ниже:
Если у вас все также, как и на скриншоте, значит до вашей сетевой карты доходит нужный пакет и компьютер должен включаться, если все остальное настроено корректно и железо поддерживает технологию Wake-On-Lan.
Wake On Lan после сбоя питания (или из состояния G3)
Wake-on-LAN (WOL; в переводе с англ. — «пробуждение по [сигналу из] локальной сети») — технология, позволяющая удалённо включить компьютер посредством отправки через локальную сеть специальной последовательности байтов. wiki
И все бы хорошо, если бы не одно но. После сбоя питания ваш компьютер не включится.
Согласитесь, это будет «приятной» неожиданностью, особенно если вы находитесь за пару тысяч километров от него.
Одно из решений написано здесь, но оно аппаратно-программное, а ведь можно обойтись без дополнительного железа.
Про WOL на Хабре можно найти уже две станицы. Поэтому в этой статье не будет рассматриваться включение wol на карточке.
Введение
Для начала разберемся, почему компьютер не включится. Для понимания этого стоит обратится к ACPI.
ACPI — англ. Advanced Configuration and Power Interface — усовершенствованный интерфейс управления конфигурацией и питанием). В ACPI описаны состояния — как глобальные, так и конкретных устройств в частности. (wiki)
Выбрав «Turn On», останется вопрос лишь в том, как выключить компьютер, когда он включился после сбоя питания, а не от запроса по сети или штатного запуска кнопкой на корпусе. Делать эти проверки мы будем в initrd.
Initrd (сокращение от англ. Initial RAM Disk, диск в оперативной памяти для начальной инициализации) — временная файловая система, используемая ядром Linux при начальной загрузке. (wiki_ru) (wiki_en)
Расположение файлов для initrd в Ubuntu/Debian можно посмотреть в man на initramfs-tools (онлайн с сайта Ubuntu).
Для Centos все немного по другому — там dracut.
Для обеспечения проверки, как был включен компьютер, после посылки wol пакета мы будем пинговать его. Но так как пакет WOL у нас «магический», пусть пинги будут тоже «магическими». Пусть наши пинги будут размером в 48 байт, а не в 84.
Итого вся идея в виде блок-схемы:
Реализация
Модули
В /etc/initramfs-tools/modules добавим необходимые модули для работы iptables и сети.
Удалённое управление питанием и перезагрузкой компьютера, при помощи внешнего девайса
Каждый пользователь компьютера сталкивался хотя бы раз в своей жизни с такой ситуацией: ты ушёл к себе на работу, почти доехал до неё и вдруг вспомнил,- что забыл взять со своего личного компьютера какую-то очень важную вещь.
Ехать обратно — опоздаешь на работу. А ведь ситуация может развиваться и гораздо более драматично: допустим, человек поехал куда-то далеко за рубеж, в отпуск, и там ему приходит важный звонок, по результатам которого ему необходимо передать своему визави,- определённые документы. А документы остались дома! А дом находится за границей!
Или вот ещё такая беда: ваш персональный компьютер является мощной графической станцией, на которой установлено множество тяжёлых программ для работы с графикой, программными продуктами. А вы перемещаетесь по городу, имея в руках всего лишь «тонкий» клиент, в виде ноутбука…
Из этого описания становится понятно, что «тонкий» клиент не обладает соответствующей производительностью, для запуска множества высокопрофессиональных программ и проектов. Да и если даже он у вас достаточно мощный, — это в принципе неудобно, каждый раз синхронизировать проекты с «тонким» клиентом. Как быть в описанных выше ситуациях — мы и поговорим в этой статье.
На самом деле, указанная проблема очень легко решается: установкой на ваш персональный компьютер системы удалённого включения/выключения и перезагрузки. Этот подход позволит всегда иметь под рукой всю мощь вашей домашней машины и все необходимые документы, и проекты, хранящиеся на ней.
До начала описания своей разработки, хочу сказать, что конечно, она не является единственно возможным способом для удалённого включения выключенного компьютера. Например, хорошо известна технология Wake-on-LAN. Суть этой технологии заключается в том, что она позволяет включить выключенный компьютер, отправкой специального пакета на его MAC-адрес.
Сетевой адаптер компьютера, поддерживающего Wake-on-LAN, находится в этот момент в режиме пониженного потребления и анализирует все пакеты на него. Если одним из поступающих пакетов окажется так называемый magic packet, сетевой адаптер выдаст сигнал на включение питания компьютера.
Согласно wiki: Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты транспортного уровня, не требующие установки соединения (например, протокол UDP или устаревший IPX). Обычно для Wake-on-LAN пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.
Из минусов данной технологии стоит отметить, что она:
В любом случае, я подумал, что создание девайса, о котором пойдёт дальше речь, будет интересной затеей, так как:
▍ Итак, приступим.
Некоторое время назад, решение указанной проблемы было достаточно затруднённым: необходимо было обладать достаточно высоким уровнем профессионализма и наличием глубоких знаний в области электроники, чтобы собрать требуемое для решения этой задачи устройство.
С появлением платформы Arduino, данная задача существенно облегчилась, однако, она продолжала оставаться достаточно неудобной в своей реализации, ввиду наличия клубка проводов, соединяющих требуемые компоненты, либо, ввиду необходимости покупки соответствующих wi-fi шилдов.
В текущее же время, этот вопрос ещё более облегчился, из-за появления платы espressif esp32. Для тех, кто не знает, это двухъядерный модуль, содержащий множество необходимых для любого самодельщика свойств. В рамках же данного проекта, нас будет интересовать наличие встроенного wi-fi модуля.
Использование этой платы позволит нам легко и просто построить требуемое устройство, не загромождая всё проводами и за достаточно малую цену. Рискну предположить, что суммарная стоимость компонентов нашего решения не превысит 350-400 руб.
Для того, чтобы создать устройство, нам понадобится всего лишь четыре резистора, два мосфет- транзистора и плата esp32.
По набору компонентов, искушённый читатель сразу понял, что мы будем делать: с помощью esp32 мы будем управлять ключами на основе мосфет-транзисторов.
При использовании мосфет-транзистора нужно иметь в виду один нюанс: транзистор должен открыться полностью, если этого не произойдёт, то он в работе будет сильно греться и будет фактически, работать в роли резистора.
В данном конкретном случае, это, конечно, не так важно, так как мы будем коммутировать достаточно малые токи кнопки включения/выключения и reset-a.
Конечно, можно не напрягаться и взять релейные модули для ардуино:
Но это не наш путь и вот почему: а) щелчки реле; б) наклёп контактов; в) высокое энергопотребление релейным модулем.
Оно нам надо? Нет, оно нам не надо 🙂
Так как мы хотим сделать «всё красиво» — мы будем использовать специальные мосфеты с логическим уровнем.
В рамках данного проекта, я выбрал мосфет-транзистор IRLZ44NPBF. У него порог срабатывания от 2 Вольт. То, что надо.
Как собрать ключ на мосфете — можно почитать тут.
По поводу конкретных силовых исполнительных устройств более-менее всё понятно. Однако нам ведь нужно ещё и каким-то образом «рулить» esp32 внешнего интернета!
То есть, задача в общем виде представляется следующей: некий интерфейс из внешнего интернета, зная IP адрес esp32, может отдавать ей команды.
Однако, подключение к устройству, находящемуся в сети за роутером, может стать неудобством, ввиду, как минимум, смены IP адреса у управляемого устройства, после каждой перезагрузки.
Да, вы скажете, что IP на самом деле не меняется, он может поменяться, только если кто-нибудь из домашних тоже подключится к сети, в тот момент, пока esp32 перезагружается, и ей придётся взять другой свободный IP.
Как бы там ни было, но все эти частности не важны, так как данный вопрос можно решить намного проще, чем выяснять какой текущий IP у платы и каким образом его сообщить во внешний интернет: для этого мы будем использовать протокол mqtt. Для тех, кто не сталкивался, вкратце можно сказать, что протокол предназначен для интернета вещей, «умного» дома и не только.
Использование протокола позволяет с лёгкостью обойти проблему прохода за роутер (тут следует сделать оговорку, что мы делаем допущение, что большая часть пользователей интернета, которая выходит в сеть, используя персональные компьютеры, имеют дома wi-fi точку доступа в виде роутера).
❒ В нашем случае, использование протокола будет выглядеть следующим образом:
Значение отправляемых цифр:
0 — «выключить компьютер»;
1 — «включить компьютер»;
2 — «перезагрузить компьютер»;
После того, как сообщение получено платой, она выполняет определённые действия, и отчитывается в другом топике, на который, в свою очередь, подписан смартфон, с которого мы отправили задание. Таким образом, владелец смартфона узнает о том, что плата получила задание и выполнила его.
Как работать с клиентом: при запуске указанного выше mqtt-клиента — мы видим вот это окно. Ничего в нём не меняем, жмём кнопочку «Connect»:
Далее, появится следующее окно, где мы подписываемся на топик, в котором esp32 оставит сообщение о выполнении задания. Для этого жмём Add new topic subscription:
Вводим топик и жмём «Subscribe»:
Топик, на который мы подписались — появился справа, наверху:
Теперь, мы можем ввести топик, в который надо отправить сообщение и собственно, сообщение. И жмём «Publish». Сообщение уехало на esp32, и она отчиталась внизу, о выполнении задания:
То есть, для работы всей системы нужны:
Источник картинки: wikihandbk.com
И работает оно так (текст оттуда же):
Модифицируем её для нашего случая:
Прошивка проекта написана в Arduino IDE и доступна на моём гитхабе.
Пробежимся по основным моментам.
В своей работе мы будем использовать публичный mqtt broker по адресу: broker.hivemq.com:
Вы можете использовать любой другой — это вопрос исключительно предпочтений. Я выбрал этот и он у меня заработал. А так как я обычно иду по пути наименьшего сопротивления (в рамках парадигмы «и так сойдёт!» ), то искать что-то иное не было смысла. Ибо любая минута поиска — воровала у меня время, которое я мог бы с пользой провести, лёжа на диване, с думами о вечном :-))).
Для начала мы в блоке изначальной инициализации переменных указываем порт для подключения к mqtt брокеру, при необходимости — имя пользователя и его пароль(или имя и пароль оставляем пустыми, если брокер публичный — как в нашем случае):
Далее мы указываем два топика, — один из которых для публикации статуса компьютера в данный момент (то есть компьютер включён/выключен, или перезагружается):
Именно туда esp32 выводит строгие и выверенные системные сообщения, о происходящем с компьютером:
Другой, для получения сообщений из внешнего интернета(сюда мы постим со смартфона цифры 0, 1 или 2, в зависимости от которых выключается/включается/перезагружается компьютер):
Для подключения мосфет-транзисторов, я использовал пины, под номерами 19 и 21. Вы можете использовать, в принципе, любые допустимые пины, хорошее описание которых содержится по следующему адресу.
Из ещё одного интересного момента можно рассмотреть следующие три переменные:
В них мы задаем время в миллисекундах, в течение которого наше устройство будет держать нажатой соответствующую кнопку. Данные переменные вам нужно определить самостоятельно, опытным путём(если мои значения не будут работать)- для вашего конкретного компьютера, так как, вероятно, они могут отличаться в вашем конкретном случае. В прошивке значения переменных указаны для моего случая.
Ещё одним любопытным моментом, который некоторые могут не знать, является то, что встроенный в esp32 светодиод привязан к пину, под номером 2. Я решил, что «инженерия инженерией, но и красотень тоже должна быть». Поэтому наша esp-шка будет мигать встроенным светодиодом:
Теперь, что касается питания нашей сборки на esp32: единственный более-менее комфортный способ это осуществить,- запитать нашу сборку от дежурного питания компьютера. Так как наша сборка потребляет совсем немного, её подключение к дежурному питанию не должно вызвать проблемы с невозможностью включения компьютера из-за просадки напряжения.
А далее, когда компьютер включён — можно подключиться к нему, с помощью предварительно настроенных программ удалённого администрирования, удалённого рабочего стола и т.д. и т.п.
Ну, вот на этом кажется и всё. Ещё раз только остановлюсь на том факте, что вся эта идея со сборкой системы для удалённого управления компьютером была продиктована не только, и не столько потребностью в доступе к файлам (потому что, как альтернативу, можно купить в таком случае NAS), а скорее даже необходимостью иметь возможность доступа к своему пулу рабочих программ, которые установлены только на домашнем компьютере.