Включение сервера с помощью мобильного телефона из внешнего мира

Доброго времени суток! Всё началось с того, что работая удалённо в терминале понадобилось перезагрузить сервер. Толи день не задался, толи мысли были о чём-то другом и вместо команды:

отправил его отдыхать после нелёгкого рабочего дня, командой:

И всё произошло машинально и так быстро, что даже сам не успел понять. Понимание стало приходить минут через 15-20, после безудержных попыток подключится удалённо к терминалу. И думаю даже не стоит говорить о том как далеко находился сервер, и добраться до него было практически невозможно. После долгих телефонных разговоров и объяснений куда кому пойти, и что где нажать, сервер всё же вернулся в рабочий ритм. После чего и появилась идея о включении сервера удалённо.

Кстати, подобную инструкцию можно выполнить с любого устройства, причём не обязательно с установленной Ubuntu. Так что вы можете не беспокоясь о последствиях купить MacBook Pro на сайте apl5.ru и включать сервер именно с него.

И так имеем:

  • Сервер с Ethernet интерфейсом с поддержкой Wake-on-LAN (далее WOL)
  • Операционная система: Ubuntu Server 12.04.2 LTS
  • Маршрутизатор Cisco 85/86/87/88/89x
  • Мобильный телефон Nokia N9

A. Включаем/проверяем в BIOS сервера поддержку WOL

B. Включаем/проверяем поддержку WOL в Ubuntu Server

Для этого устанавливаем пакет ethtool:

После чего проверяем поддерку WOL:

Вывод команды должен быть следующим:

Это говорит о том, что сетевая карта поддерживает WOL и он включен. Если же:

Буква отличная от g, то сетевая карта не поддерживает WOL. И если он выключен:

То включим его следующей командой:

На многих системах эту команду приходится выполнять после перезагрузки, поэтому сделаем чтобы она выполнялась каждый раз при загрузке системы автоматически. Для этого создадим файл wakeonlan.conf следующими командами:

Сделаем файл исполняемым:

И запустим службу:

C. На маршрутизаторе Cisco настроим пересылку WOL пакета. Для этого добавим следующие команды:

Где:

  • interface X — локальный интерфейс (ip nat inside)
  • interface Y — внешний интерфейс (ip nat outside)

D. На телефон Nokia N9 добавим perl скрипт создающий WOL пакет следующего содержания:

Сделаем скрипт исполняемым в терминале телефона:

Запускается скрипт в терминале со следующими параметрами:

Самое удивительное, с момента той нелепой ошибки, так и не приходилось использовать это, разве что только в период тесто-наладки.