Всем привет!
В данной статье я хотел бы рассказать, как работает функция «Удаленное включение компьютера через интернет», которая носит название Wake-on-Lan (Wake on Lan, WOL).
Для тех, кому не интересно вдаваться в подробности и кто просто хочет знать, как включить компьютер через интернет, советую скачать приложение PC WakeUp для Android и прочитать мою предыдущую статью Удаленное включение компьютера через интернет со смартфона на Android.
Итак, если вы до сих пор на этой странице, значит вам интересно как же всё-таки работает удаленное включение компьютера по сети.
Процесс включения компьютера через интернет состоит из этапов:
1) передача в сеть так называемого «магического пакета» (WOL-пакета)
2) прием пакета сетевой картой, указанной в магическом пакете
3) реакция сетевой карты на магический пакет — сигнал пробуждения компьютера.
Итак, для того чтобы осуществить включение компьютера удалённо, необходимо во-первых чтобы ваша сетевая карта поддерживала функцию Wake-on-Lan. Если поддержка есть, то при включении данной функции — сетевая карта начинает отслеживать в кабеле Ethernet наличие определённого типа пакетов. Секрет в том, что магический пакет отслеживается даже в том случае, когда компьютер находится в режиме сна (гибернации). Потому этот пакет и назван магическим, т.к. это единственный тип пакетов, на которые сетевая карта продолжает реагировать даже после перехода компьютера в режим пониженного энергопотребления.
Настройка BIOS.
В параметрах электропитания вашего BIOS также должна быть включена соответствующая функция, разрешающая использовать функцию удаленного включения компьютера через сеть. BIOS также позволяет настроить, из какого именно режима разрешено выводить компьютера. Хотелось бы отметить важный момент: компьютер можно пробудить только из режима пониженного энергопотребления (режим S4 или S5). Пробуждение компьютера из полностью выключенного состояния не представляется возможным. Впрочем это врядли имеет большое значение, т.к. количество потребляемой в режиме сна энергии настолько мало, что совершенно не заметно ни в счетах на электроэнергию, ни в каких либо других важных моментах. Кстати помимо включения компьютера через WOl, BIOS позволяет настроить возможность включения компьютера через временной таймер, клавиатуру, мышь, другие USB устройства, PCI-E интерфейс и даже через Wi-Fi. Правда далеко не каждая из этих функций гарантировано будет присутствовать в вашей версии BIOS.
Настройка компьютера (сетевой карты)
Помимо настройки BIOSа необходимо добавить поддержку включения компьютера через Wake-on-LAN на уровне настроек сетевой карты и энергосбережения. Для этого необходимо сделать так, чтобы в режиме сна (гибернации) компьютер оставлял подачу питания на сетевую карту, а также в настройках самой сетевой карты необходимо включить поддержку Wake on LAN (WOL, магического пакета). Впрочем, к сожалению и эти настройки есть не везде. Есть вероятность, хоть и небольшая, что на вашей сетевой карте вообще не окажется поддержки WOL. Ну надеюсь, что среди тех, кто читает эту статью, вряд ли найдутся пользователи столь устаревшего оборудования.
Настройка сети (роутера)
Для удаленного включения компьютера через интернет в первую очередь необходимо иметь постоянное работающее соединение с интернетом. Сейчас подавляющее большинство провайдеров интернета предоставляют его после авторизации (вставляешь шнур, делаешь подключение под логином/паролем, и интернет появляется). При таком способе доступа к интернету — лучше всего иметь роутер, т.к. иначе при вводе компьютера в сон — подключение неминуемо исчезнет, и компьютер будет совершенно недоступен из внешней сети. Роутер же позволяет сохранять соединение независимо от состояния устройств, подключенных к нему. Таким образом, для передачи магического пакета на спящий компьютер — необходимо передать в роутер извне сигнал, который роутер трактует как магический пакет и отправит его в свою внутренню сеть.
а) Обеспечение доступа к роутеру из внешней сети
Если ваше подключение к интернету происходит через статический внешний IP-адрес, то вы легко сможете достучаться до роутера по этому адресу из любой точки земли. Однако чаще всего статический адрес является платной услугой, либо вообще не предоставляется провайдером, и тогда ваш IP может меняться как угодно при каждом подключении. На помощь приходит технология DDNS. Она позволяет авторизоваться на стороннем сервисе, который предоставляет в сеть статическое имя вашего роутера (например myrouter.ddns.ru). При обращении к этому DDNS-имени, сигнал поступает на DDNS-сервис, который хранит в себе информацию о вашем роутере (текущий его IP) и пересылает все пакеты на роутер. Таким образом ваш роутер становится доступен в сети по постоянному имени и вам даже не нужно запоминать набор цифр IP-адреса.
б) Передача через роутер магического пакета
Есть два варианта, как инициировать передачу пакета из роутера в спящий компьютер для его удаленного включения через интернет.
Первый. Нужно передать магический пакет на роутер. В роутере настраивается проброс портов таким образом, что магический пакет, пришедший на 7 или 9 порт (порты для магического пакета) перебрасывается на 7(9) порт внутрь роутера и далее например широковещательным пакетом рассылается на все компьютеры внутри сети. Включится именно тот компьютер, мак-адрес которого указан в магическом пакете. Данная технология вроде работает, однако лично я не смог ее настроить на своем оборудовании. Проблема в том, что обычно при пробросе портов требуется указать IP адрес компьютера внутренней сети, на который будем делать проброс. Однако в ARP-таблице роутера записи об IP адресах исчезают через примерно 5 минут, после отключения устройств. Т.е. если вы выключили компьютер (отправили в сон), то через 10 минут сигнал на него уже не дойдет по его IP-адресу. Эту проблему надо учитывать и решение кроется в статичных ARP-записях, которые не будут удаляться со временем даже при выключении компа.
Второй. Нужно подключиться к роутеру по SSH или Telnet и выпонить непосредственно в роутере команду Wake-on-Lan (wol, etherwake, ether-wake). Данный алгоритм я как раз использовал в разработанном мной приложении PC WakeUp. Чтобы осуществить такое подключение, нужно настроить в роутере доступ по SSH или Telnet из интернета (из WAN). После подключения достаточно лишь выполнить команду содержащую в себе MAC-адрес нужного компьютера (правда конкретный формат команды у каждого роутера свой). Если вы решили использовать этот способ, то установка моего приложения на Android является самым простым решением.
Надеюсь у вас всё получится, и удаленное включение компьютера через интернет со смартфона на Android или просто через консоль командной строки станет для вас обычной, но очень полезной функцией.