… а также без проброса портов, SSH/telnet и установки сторонних приложений. С любого компьютера, подключённого к интернет и даже с телефона!
Периодически мне бывает нужно включить домашний компьютер, когда я нахожусь не дома. Обычно я не запаривался и звонил или отправлял сообщение с такой просьбой жене, которая сидит дома в декрете. Очень удобное средство удалённого управления с голосовым интерфейсом. Однако у этого способа есть ряд недостатков — ушла гулять, укладывает ребёнка, или ещё чем либо занята. Хотелось простого решения из того что есть под рукой.
Первым делом включаем 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, либо создаём отдельные задания для каждого — как хотите.