++ Задача: Осуществить возможность пробуждения ([[http://en.wikipedia.org/wiki/Wake-on-LAN Wake on Lan]]) из интернета удаленного компьютера, находящегося дома за роутером марки D-Link (DIR-300, DIR-320).
++ Решение:
Использование команды ip, имеющейся в стандартных сборках BusyBox'a в роутерах D-Link.
++ Предисловие:
Дома стоит роутер D-Link DIR-320/NRU ревизии B1, а до этого был DIR-300/NRU ревизии B5, для которых (на данный момент) нет альтернативных готовых прошивок (в том числе и горячо всеми любимой DD-WRT). На роутере стоит BusyBox 1.12.
Проблема состояла в том, что встроенное в веб-интерфейс средство переброса пакетов не позволяют переадресацию в широковещательный канал - [[http://en.wikipedia.org/wiki/Broadcasting_(networking) broadcast]] (x.x.x.255), а хитровыделанный D-Link обновляет arp-таблицу каждые 15-30 секунд, так что непосредственно в выключенный длительное время компьютер Magic Packet тоже не перебросить. Тайваньские ребята решили отказаться от компиляции arp, sudo и прочих печенюшек в BusyBox, поскольку iptables тоже не позволяет POSTROUTING на широковещательный канал.
Решение после недели напряженного поиска было [[http://liveweb.archive.org/http:%2F%2Fwww.brazilfw... найдено]] случайно на ныне почившем форуме сборки линукса для старых компьютеров под роутер.
++ Пример:
Для начала настройте BIOS вашей материнской платы (в разделе настроек питания есть пункт о пробуждении из выключенного состояния) и вашей сетевой карты (уже из операционной системы в свойствах карты). Для проверки выключите компьютер и посмотрите, если индикация сетевого разъема мигает, значит все в порядке.
1. Подключаемся telnet-ом к роутеру (логин и пароль те же, что и для веб-интерфейса):
Dlink-Router login: admin
Password:
Welcome to
_______ ___ __ ____ _ _ ___
| ___ \ | | |__|| \ | || | / /
| | | || ___ | |__ __ | \| || |/ /
| |___| || |___| | || || |\ || \
|_______/ |______||__||_| \____||_|\___\
= Ebuilding Networks for People =
BusyBox v1.12.1 (2011-05-13 14:42:48 MSD) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#
2. Если компьютер в данный момент присоединен к роутеру, то ищем его mac-адрес, набираем:
# ip neigh show
<Внешний_ip> dev eth2.5 lladdr 01:23:45:67:AB:CD DELAY ! Внешний адрес
192.168.0.50 dev br0 lladdr 11:22:33:44:55:66 REACHABLE ! Настольный компьютер
192.168.0.90 dev br0 lladdr 77:88:99:00:AA:BB REACHABLE ! Ноутбук
3. Поскольку в данный момент уже уже есть запись для нашего mac-адреса, то мы не добавляем, а просто изменяем текущую:
# ip neigh change 192.168.0.50 lladdr 11:22:33:44:55:66 nud permanent dev br0
4. Смотрим результат, снова набираем:
# ip neigh show
<Внешний_ip> dev eth2.5 lladdr 01:23:45:67:AB:CD DELAY ! Внешний адрес
192.168.0.50 dev br0 lladdr 11:22:33:44:55:66 PERMANENT ! Настольный компьютер
192.168.0.90 dev br0 lladdr 77:88:99:00:AA:BB REACHABLE ! Ноутбук
После этого уже заходим на веб-интерфейс нашего роутера и в разделе "межсетевой экран" в пункте "Виртуальные серверы" добавляем проброс 9 (или 7, в зависимости от вашей сетевой карты) порта роутера на порт ip вашего компьютера.
++ Послесловие:
Совет: настройте через веб-интрефейс роутера DHCP для mac'а вашего компьютера статический IP (по умолчанию DIR-300(320)/NRU выдает их в диапазоне от 192.168.0.2 - 192.168.0.100)
Дополнительные ссылки:
** Немного о линуксовых командах в пределах BusyBox: http://noted.org.ua/1727
** Чуть подробнее про команду ip: http://linux-ip.net/html/tools-ip-neighbor.html
** Для проверки работоспособности можно воспользоваться сайтом: http://wakeonlan.me/
** Особая благодарность русскоязычному форуму D-Link'a, оказавшую неоценимую помощь и моральную поддержку: [[http://forum.dlink.ru/viewtopic.php?f=3&t=144364 1]], [[http://forum.dlink.ru/viewtopic.php?f=3&t=151446 2]], [[http://forum.dlink.ru/viewtopic.php?f=3&t=152999 3]]
URL:
Обсуждается: http://www.opennet.me/tips/info/2727.shtml