
Часто так случается, что нужно получить доступ к выключенному компьютеру удаленно. Рассмотрим как настроить роутер с кастомной прошивкой (в данном случае OpenWRT) и оборудование системы компьютера.
Первое, что нам нужно сделать, это настроить перенаправление трафика. WOL работает с UDP широковещательными (broadcast) пакетами на 9-й порт. Собственно получать пакеты из внешней сети можно и на любой другой порт, а потом перебрасывать их во внутреннюю сеть уже на 9-й порт, Вы можете посылать на любой в зависимости от возможностей Вашего программного обеспечения WOL-клиента. (Клиенты под Андроид и iOS)
Войдите в вэб интерфейс маршрутизатора Администрирование (Administration) -> Сеть (Network) -> Брандмауэр/Межсетевой экран (Firewall) -> Перенаправление трафика (Port Forwards). Добавить новую запись, например под названием Wake-On-LAN.
- Протокол (Protocol): UDP
- Внешний порт (External port): 9 (или любой другой)
- Внутренний порт (Internal port): 9
- Внутренний адрес (Internal address): 192.168.1.254
Обратите внимание! Внутренний адрес будет виртуальным, поэтому нужно указать его исходя из диапазона Вашей сети, но обязательно тот который не задействован. Т.е. если у вас внутренняя сеть 192.168.1.*, можно указать 192.168.1.254. Если сеть 192.168.0.* — 192.168.0.254 соответственно. 254 тут просто адрес который вряд ли задействован и может быть указан любой другой в пределах диапазона сети.
В дополнение к перенаправлению трафика также нужно настроить виртуальную цель в нашей локальной сети для того, чтобы транслировать WOL пакеты в локальную сеть. Нам понадобится добавить фиктивную цель в таблицы ARP. К сожалению, это можно сделать только с помощью командной строки (CLI).
Подключитесь к маршрутизатору OpenWRT, используя ваш любимый клиент SSH. Я использую бесплатный WinSCP.
Чтобы добавлять фиктивный адрес в таблицу ARP мы создаем дополнительный сценарий инициализации, тогда при каждой перезагрузке роутера, настройки сохраняться.
Создайте новый файл с именем ‘/etc/init.d/wakeup’
vim /etc/init.d/wakeup
Добавьте в этот скрипт следующее содержание:
#!/bin/sh /etc/rc.common
START=98
STOP=15start() {
ip neigh add 192.168.1.254 lladdr ff:ff:ff:ff:ff:ff nud permanent dev br-lan
}stop() {
ip neigh del 192.168.1.254 dev br-lan
}
Замените ff:ff:ff:ff:ff:ff на MAC-адрес сетевой карты, в Windows его можно посмотреть в «Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом», нажимаете на подключении, потом кнопка «Сведения». Свойство — «Физический адрес», формата ff-ff-ff-ff-ff-ff
Теперь выставим права на скрипт, чтобы он исполнялся.
CHMOD 755 /etc/init.d/wakeup
Для того, чтобы вся эта конструкция заработала, нам еще необходимо установить дополнительный пакет ip
opkg update
opkg install ip
И включить сценарий инициализации для запуска при загрузке
/etc/init.d/wakeup enable
/etc/init.d/wakeup start
Вроде все, если будут проблемы с включением, убедитесь что в настройках BIOS разрешен WOL, и в «Диспетчере устройств -> Сетевая карта -> Свойства -> Управление электропитанием -> Разрешить этому устройству выводить компьютер из спящего режима» стоит галочка.
Вроде все, если будут проблемы с включением, убедитесь что в настройках BIOS разрешен WOL, и в «Диспетчере устройств -> Сетевая карта -> Свойства -> Управление электропитанием -> Разрешить этому устройству выводить компьютер из спящего режима» стоит галочка.
В дополнение к перенаправлению трафика также нужно настроить виртуальную цель в нашей локальной сети для того, чтобы транслировать WOL пакеты в локальную сеть. Нам понадобится добавить фиктивную цель в таблицы ARP. К сожалению, это можно сделать только с помощью командной строки (CLI).
Добрый день, подскажите пожалуйста. ‘: No such file or directory.common выходит такая ошибка при команде enable wakeup /etc/init.d/wakeup enable
вот хоть убейте все работает первые 2 секунды после выключения компа далее, только с внутренней сети… проброс портов сделал, dhcp привязал жестко, в arp таблице прописано, ну не хочет через wan интерфейс работать
проблема таки нашлась и была решена, установкой пакета ip-full
Примечание: Файл должен быть НЕ в вин кодировке!!!