[an error occurred while processing this directive]

Пробуждение компьютера по сети с помощью D-Link DIR 300 (320) NRU
Задача: 

Осуществить возможность пробуждения (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.

Проблема состояла в том, что встроенное в веб-интерфейс средство переброса
пакетов не позволяют переадресацию в широковещательный канал - broadcast
(x.x.x.255), а хитровыделанный D-Link обновляет arp-таблицу каждые 15-30
секунд, так что непосредственно в выключенный длительное время компьютер Magic
Packet тоже не перебросить. Тайваньские ребята решили отказаться от компиляции
arp, sudo и прочих печенюшек в BusyBox, поскольку iptables тоже не позволяет
POSTROUTING на широковещательный канал.

Решение после недели напряженного поиска было найдено случайно на ныне
почившем форуме сборки линукса для старых компьютеров под роутер.

Пример:

Для начала настройте 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, оказавшую неоценимую помощь и моральную поддержку: 1, 2, 3
  •  
    27.12.2012 , Автор: jPump
    Ключи: wol, wake, busybox, dlink, router, ip, iproute2 / Лицензия: CC-BY
    Раздел:    Корень / Администратору / Система / Загрузка, однопользовательский режим

    [an error occurred while processing this directive]

    [an error occurred while processing this directive]