Периодически мне бывает нужно включить домашний компьютер, когда я нахожусь не дома. Обычно я не запаривался и звонил или отправлял сообщение с такой просьбой жене, которая сидит дома в декрете. Очень удобное средство удалённого управления с голосовым интерфейсом. Однако у этого способа есть ряд недостатков — ушла гулять, укладывает ребёнка, или ещё чем либо занята. Хотелось простого решения из того что есть под рукой.
Первым делом включаем Wake on LAN в BIOS'е материнской платы, у всех это делается по-своему, у многих включено по умолчанию. На одном из моих ПК даже такой опции нету — всегда включено.
Далее переходим в WinBox и подключаемся к вашему роутеру (если хотите, можете через SSH или через HTTP(S), я всё делаю в WinBox'е). Если открыть текстовую консоль RouterOS и пошарить там в разделе /tool (или в wiki-мануалах), то можно обнаружить утилиту wol со следующим синтаксисом:
/tool wol mac=XX:XX:XX:XX:XX:XX interface=ifname
Где ifname — имя интерфейса, с которого будет рассылаться волшебный пакет, XX:XX:XX:XX:XX:XX — mac адрес вашего компьютера.
Вроде всё просто, но Winbox с телефона не особо запускается и mac адрес по памяти замучаешься вводить. Можно запускать SSH и отправлять в него одну единственную команду, но это тоже долго и нудно. Используем фаервол!
Напрямую из правил фильтра запускать исполнение команд нельзя, из всех действий нам больше всех подойдёт добавление адреса в address-list, т.к. оно позволяет создать новый объект в операционной системе роутера, доступный из скриптов.
Добавим новое правило для цепочки input и расположим его среди других разрешающих правил этой цепочки. Укажем протокол tcp и dst-port — любой из верхних портов.
Действие выберем add src (можно и dst) to address list, укажем имя листа.
Для отслеживания появления записей используем планировщик. Заходим System -> Sheduler, создаём задание планировщика, задаём имя. Указываем Start time: startup, и желаемый интервал, к примеру каждые 15 секунд.
В поле on event напишем простенький скрипт:
:local WAKEPC [/ip firewall address-list find where list="WAKEPC"]
:if ($WAKEPC!="") do={
/tool wol mac=00:11:22:33:44:55 interface=bridge_lan
/ip firewall address-list remove [find where list="WAKEPC"]
}
Не забываем указать правильный mac, имя интерфейса и адрес-листа. Данный скрипт при обнаружении элементов в адрес-листе выполнит команду, отправляющую магические пакеты на ваш компьютер, после чего удалит запись из адрес-листа.
Для включения вашего компьютера достаточно открыть браузер и перейти на IP вашего микротика, указав порт, который мы задали в правиле фаервола: http://your.router.net:port, после чего фаервол создаёт запись в адрес-листе, задание планировщика обнаружит эту запись, выполнит запуск утилиты wol, и удалит запись из адрес-листа. Проще паренной репы, можем добавить адрес в избранное, чтобы каждый раз не вводить.
Только не забывайте про безопасность, данный способ ничем не защищён и кто угодно может включить Ваш компьютер, зная или подобрав нужный порт. Для защиты можно использовать VPN, port knocking, whitelist или метод Неуловимого Джо — решать Вам. Если Вам требуется включать таким образом по-отдельности несколько компьютеров, создайте соответствующее количество правил на разных портах, каждое из которых будет кидать адреса в свой адрес-лист, скрипт в задании планировщика также размножаем через Ctrl+C, Ctrl+V, либо создаём отдельные задания для каждого — как хотите.
Комментарии (68)
bigbrotherwatchingyou
28.10.2016 07:22+1стационарник подключен к сети через вай-фай свисток — как мне его удаленно разбудить? )))
AcidVenom
28.10.2016 09:25+1Все бы ничего, но! Зачем вам включать комп извне? Чтобы подключиться к нему? То есть у вас проброшены порты до машины? Не очень-то безопасно.
А вот, скажем, повесить скрипт на логон vpn-пользователя — это другое дело.GeXoGeN
28.10.2016 09:46можно и на логон, как Вам угодно будет, у меня используется динамический белый список, так что думаю, достаточно безопасно, для дома даже более, чем.
elve
28.10.2016 10:23Простой пример (не совсем в тему, но все же) — по расписанию вечером все компьютеры тушатся и утром включаются, чтобы когда сотрудники придут на работу им осталось только залогиниться.
AcidVenom
28.10.2016 10:25Но в такой ситуации пакеты снаружи не нужны вовсе, скрипта по расписанию достаточно.
saege5b
29.10.2016 09:37В биосе ставится расписание вкл-выкл если такое есть, или включение при появлениии напряжения на БП.
Последний гасит электрику, первый её включает.
dnb
28.10.2016 09:46У меня так же реализовано, но доступ к роутеру только с рабочего IP. Либо подключение к роутеру по VPN. Но есть один момент — если был сбой питания, то сетевая не примет команду wol без соответствующих настроек в BIOS. Или бесперебойник.
GeXoGeN
28.10.2016 09:47ну это уже детали конкретного компьютера, можно смотреть на статью шире и запускать любые скрипты на микротике при получении пакетов на определённые компы.
AcidVenom
28.10.2016 11:41Только вот скрипт нужно ставить в расписание. Без расписания не выйдет.
Решением было бы добавить функционал запуска скрипта в action в Logging. Но увы.GeXoGeN
28.10.2016 11:42а чем вам расписание то не угодило? кушать просит?
AcidVenom
28.10.2016 11:48Имхо, это костыль.
GeXoGeN
28.10.2016 11:54нет. это штатный функционал, даже не хак никакой. вот когда сделают обработку событий или запуск скриптов из фаервола, тогда это будет костыль. если система достаточно гибкая и предоставляет универсальные инструменты, то грех ими не пользоваться.
r0ck3r
28.10.2016 11:46+1А у меня OpenVPN на роутере, который пробрасывает порт через SSH на VPS, так как дома нет выделенного IP. Подключиться к OpenVPN можно хоть с телефона, хоть с компьютера — а там уже свои приложения, пробуждающие компьютер
если был сбой питания, то сетевая не примет команду wol без соответствующих настроек в BIOS.
У меня похожая проблема, но только компьютеру достаточно включиться и выключиться, чтобы Wake On Lan вновь заработал. Поэтому, при дальних и длительных поездках выхожу из ситуации так: перевожу в BIOS режим на включение компьютера при возобновлении питания и ставлю в автозагрузку скрипт, который выключает компьютер через 15 минут. Если включил компьютер я и мне 15 минут мало — убиваю скрипт.
И еще: NetworkManager начиная с какой-то версии вмешивается в работу Wake On Lan и отключает ее по умолчанию. Для исправления данной проблемы в скрипт, инициализирующий сетевой интерфейс, нужно добавить строку:
ETHTOOL_OPTS=«wol g»
drrd
28.10.2016 10:07wol не работает на полном выключении компа начиная с win8.1/win10 емним.
Только из спящего режима.
Сам пытаюсь на dd-wrt сделать wol.
В биосе включено, в настройках сетевки включено, порты проброшены, arp броадкаст сделан.
Но wol работает только в течении 20мин после выключения. Дальше питание вырубается и бб.AcidVenom
28.10.2016 10:19+1Неправда ваша. Asus P8H77-I и W8.1, все хорошо работает.
drrd
28.10.2016 10:46Если не затруднит, можете описать все выставленные параметры для wol?
Вот нашел КБшку по питанию WOL в windows
https://support.microsoft.com/ru-ru/kb/2776718AcidVenom
28.10.2016 10:55В драйвере выставлено:
Пробуждение при соответствии шаблону — Вкл
Пробуждение с помощью пакета Magic — Вкл
Завершение работы функции WOL — Вкл
Скорость WOL — Сначала 10Мбит.
Настройки биоса не привожу, ничего интересного.
Будится комп через /tool wol в бридж.
P.S.: На платах Gigabyte есть функция уменьшения потребления энергии. Ее для WOL нужно отключить.
crawlingroof
28.10.2016 10:45Сам бился головой об стену в связи с этим, и грешил на последнее обновление bios, но оказалось что это microsoft все сломал начиная с 8ки (тынц) Теперь просыпается только из sleep и hibernation
rogoz
28.10.2016 10:56+1Попробуйте отключить быстрый запуск.
http://remontka.pro/images/fast-start-windows-10-setting.png
GeXoGeN
28.10.2016 11:18ASUS H110I-PLUS — работает. Быстрый запуск не выключал. В BIOS ничего не менял.
kolu4iy
28.10.2016 14:19+1А зачем его вообще выключать?
В биос power mode = last state (на случай внезапного отключения питания), а дальше пусть себе спит… Идея с усыплением через 15 минут скриптом — тоже вполне годная.GeXoGeN
28.10.2016 14:21видел материнки, в которых нет возможности задать действие на восстановление подачи питания.
rockin
28.10.2016 10:46Похоже на забивание гвоздей микроскопом
Т.к. вот
https://www.asus.com/ru/support/faq/1009775
https://zyxel.ru/kb/3517/
и во многих современных дешевых роутерах этих двух производителей, wol от роутера — стандартная фича
И кейс мне лично не совсем понятен — как это дома микротик и один десктоп. Обычно те, у кого дома микротики, некий миникомп, а-ля малинка, держат в режиме 24/7, электричества это ест совсем немного.
***
и что там про вин8-10 и вол, мне интересно поподробнее. т.к. на работах своих я обновления ставлю на инвду и каспера — ночами. включает сервис все компы, ставит обновления, выключает компы. а там и 8, и 10 навалом просто.GeXoGeN
28.10.2016 10:52десктопов у некоторых вообще нету, одни лэптопы. малинка у меня была, но я её продал, т.к. не был удовлетворён производительностью, собрал вместо неё miniITX комп для мультимедийных задач.
у дешёвых роутеров это всё работает несколько иначе — нужно заходить на веб интерфейс роутера, вбивать мак и т.д. В моём случае — просто получения одного пакета на определённый порт достаточно.
TimsTims
28.10.2016 10:58+1> Обычно те, у кого дома микротики, некий миникомп, а-ля малинка, держат в режиме 24/7
В микротиках есть функция MetaRouter, которая позволяет запускать простенькие образы виртуалок. Вполне себе можно запустить простенький web-сервер
alexrus
28.10.2016 18:04И кейс мне лично не совсем понятен — как это дома микротик и один десктоп.
Да обычный кейс, у меня десктоп и микротик (планшет и телефон не считается) — просто нужен стабильный инет, не покупать же дэлинк из-за малого количества оборудования дома?
ice938
28.10.2016 11:39Я делал не так:
Для UDP c 9 порта WAN dstNAT на какой-нибудь свободный IP локалки (обычно последний) и static ARP для него FF:FF:FF:FF:FF:FF Получается, что WOL, прилетевший на WAN интерфейс, транслируется в локалку. Меняя MAC в пакете WOL, будим только нужный комп. На телефоне стоит прога, позволяющая отправлять правильный пакет с любой точки мира (ищите в маркете/Appstore WOL или wake on lan), если не с телефона, то такую утилиту ставим на свой ноут/комп (гуглим wol utility download <your_OS>), ну или из любого браузера с любого компа, через специальные сервисы (гуглить wake on lan online)GeXoGeN
28.10.2016 11:40-1Вы пост читали вообще? Без пробросов, без установки софта, без облаков.
ice938
28.10.2016 12:09без установки софта, без облаков
Пожалуйста- сохраняем в закладки хттпс:/_/www.depicus.com/wake-on-lan/woli?m=001122334455&i=191.239.213.197&s=255.255.255.255&p=9 открываем в браузере и все.
Без пробросов
А вот это уже на вкус и цвет… Проброс одного порта на несуществующий IP, или выполнение скрипта по какому-то событию- это пусть каждый решает для себя, что ему больше нравится. К тому же, внешний порт можно выбрать любым, чтобы враг не догадался =), можно только static ARP запись сделать, а пакет засылать через VPN туннель. Можно сделать белый список адресов, с которых можно получать такие пакеты и т.д.
Я просто озвучил еще один вариант сделать то же, что и вы, с теми же затратами. А кто и что воплотит в жизнь, зависит только от его фантазии и возможностейGeXoGeN
28.10.2016 12:19Ну это же и есть облако. То бишь, сервис, который предоставляет Вам веб доступ к приложению.
С какого IP придёт пакет? С IP сервиса наверное? У них там, скорее всего не один IP. Мне всю их сеть в белый список добавлять?
mihmig
28.10.2016 12:11Хех, а вот у меня материнка Asus F2A55M-LE
Ну нет в ней WOL(даже в BOIS настроек нет)
Было бы круто, если б кто нашёл модуль к микротику для управления USB->реле. Тогда можно было бы включать любую нагрузку… Может микротик поддерживает переходники USB-serial?GeXoGeN
28.10.2016 12:13У меня в BIOS тоже настроек нет, но всё включено по-умолчанию. Может и у Вас так же?
rsa-md5
28.10.2016 13:44+1Может микротик поддерживает переходники USB-serial?
http://wiki.mikrotik.com/wiki/Supported_Hardware#USB_serial_adapters
vladgorodetsky9
28.10.2016 15:04Я делал через проброс порта. Все-таки две команды в терминале и потом прогу на телефон типа WakeOnLan на Android. Под iOS тоже наверняка вагон и тележка аналогов. Но опять же, я делал не под один комп а под все, которые у меня в сети.
Да, Tik-App от Mikrotik в стадии тестирования, не все, но много уже можно делать…GeXoGeN
28.10.2016 16:43На счёт проги на телефон — тут каждому своё. Согласитесь, это дело вкуса, да и к тому же приведённым методом можно не только WoL-пакеты отсылать, а произвольный скрипт по внешнему событию выполнять.
Спасибо за Tik-App, не знал.
safari2012
28.10.2016 17:18Насчет «бесплатного» — небольшое лукавство, или у вас внешний адрес провайдер совершенно бесплатно дает?
OstJoker
29.10.2016 16:33Самая большая проблема, это то что WOL работает только если ПК физически не вынимали с розетки и не пропадало питание в сети. Только не пишите про last state и ИБП. У меня был ПК на работе, который штатно выключен, но иногда нужно удаленно включить. Электрики часто любили обесточить весь этаж в нерабочее время и делать свою работу. На следующий день ты такой пускаешь магический пакет, а ПК все равно оффлайн еще 10 минут пытаешься выяснить в чем там трабл, а потом ноги в руки и на работу, что бы клацнуть кнопку и включить ручками. Зачем нужна такая фича, которая работает не всегда, мне не понятно.
Может многим известно, но я долго работал в ИТ и не знал что такое есть… При следующем апгрейде купил материнку на чипе из «Q» серии (Intel Q87). С поддержкой технологии vPro, сразу убил несколько зайцев: полный доступ до ПК в любой ситуации когда есть напряжение в сети и Интернет.
Включение, выключение, ресет, удаленный биос, я даже ОС ставил по Интернету, монтируя образ установочного диска. Управление через утилиты и веб интерфейс и никаких заморочек с WOL. Из минусов: материнка немного дороже аналогов на чипах серий B и H, для работы vPro нужен ЦП начиная от Core i5.
HexMaster
31.10.2016 08:26Динамический IP. На роутере настроен DDNS, порт проброшен. Для RDP тоже порт проброшен.
В избранном браузера ссылка для включения с забитым туда MAC-адресом.
Зачем колхозить огород для избавления от одного проброса порта, если всё равно для RDP нужно порт пробрасывать? Или это для новой статьи?..GeXoGeN
31.10.2016 08:33Не все пробрасывают порты и используют RDP для удалённого доступа. Teamviewer, например не требует проброса портов или можно подключаться по VPN к микротику и работать по RDP без пробросов. Этим способом можно включить сразу все компы — переходом по одной ссылке, а можно вообще любой скрипт на выполнение запустить. И самое главное, RouterOS — достаточно гибкое решение, это позволяет нам решать одну и ту же проблему разными способами.
ссылка для включения с забитым туда MAC-адресом
которая будет отправлять волшебный пакет с айпишника сервиса Wake on lan через интернет, которого нет в белом списке, потом вы его добавите, но через неделю он опять изменится, а может не через неделю, не известно когда ждать подвоха.
SlavikF
— Дорогой, а что это у нас посреди ночи твой компьютер сам включается?
— Наверное, это китайские хакеры порты сканируют…
— Так это он просыпается бороться с хакерами?..
GeXoGeN
Хотите скажу вам свой ip? Ставлю сотку, что не разбудите.
chernilschik
Сотки за пентест маловато, не находите?
GeXoGeN
тут же дело не в деньгах, а в принципе :)
icoz
Тогда из принципа хотя бы пива добавьте…
GeXoGeN
легко, но только в случае успеха.
dtkbrbq
Есть вариант как можно этого избежать, например ловить ICMP пакет определенного размера.