URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 89333
[ Назад ]

Исходное сообщение
"D-Link DIR-300 - удаленное включение компьютера"

Отправлено robux , 08-Июл-10 19:36 
Должен поделиться опытом.
Встала задача: удаленно включать сервер.

Теория проста: посылать из любого интернета "магический" (Wake On Lan) udp-пакет на IP-адрес DLink'a, работающего в режиме "роутер". А DLink должен переправить в сеть широковещательный пакет и "разбудить" комп с заданным MAC-адресом.

Практика оказалась кровавее:
1) заходим в админку DIR-300: http://192.168.1.1 (имя admin, пароль по умолчанию пустой)
2) переходим в рубрику "ADVANCED-Port forwarding"
3) включаем новое правило: имя "WOL", все порты - 4009, протокол "udp", IP-адрес "192.168.1.255"
4) жмем "Save settings" и ВНЕЗАПНО "Invalid IP address !"
5) вводим в адресную строку браузера java-патч:

javascript:function is_valid_ip2(ipaddr, netmask){return true;};
(этим мы временно отключаем*** проверку адресов!!!)
жмем Enter в конце этого текста, он исчезает
6) снова жмем "Save settings", ждем 5 сек и.. СЛАВА ВСЕВЫШНЕМУ! Настройки сохраняются!

Ну а дальше дело техники.
== На сервере делаем так:
aptitude install ethtool
ifconfig (в этом месте запишите на бумажку HWaddr, т.е. MAC)
ethtool eth1
ethtool -s eth1 wol g
poweroff
Уезжаем в Мухосранск.
== В Мухосранске на ноутбуке делаем так:
aptitude install wakeonlan
wakeonlan -p 4009 -i 222.222.222.222 aa:33:bb:44:cc:55
где последние два значения - внешний IP роутера и MAC сервера.

После чего, если повезет, сервер включается ;-)

*** Если у вас другая модель D-Link, то функцию java-скрипта, проверяющего broadcast адрес, можно поглядеть в браузере "Просмотр HTML кода" на странице "ADVANCED PORT FORWARDING RULES". Например, можно было бы дать такой более жесткий хак:

javascript:function check(){return true;};

Не забываем говорить "Спасибо, дядя Миша" :-)


Содержание

Сообщения в этом обсуждении
"D-Link DIR-300 - удаленное включение компьютера"
Отправлено sHaggY_caT , 11-Июл-10 05:05 
>[оверквотинг удален]
>После чего, если повезет, сервер включается ;-)
>
>*** Если у вас другая модель D-Link, то функцию java-скрипта, проверяющего broadcast
>адрес, можно поглядеть в браузере "Просмотр HTML кода" на странице "ADVANCED
>PORT FORWARDING RULES". Например, можно было бы дать такой более жесткий
>хак:
>
>javascript:function check(){return true;};
>
>Не забываем говорить "Спасибо, дядя Миша" :-)

Не затруднит ли Вас поместить заметку в "советы"? Так с ней могло бы ознакомиться большее число людей...

По сути проблемы, позвольте маленькую критику: _зачем_ выключать _сервер_?
Для линуксовой же станции решение бесспорно полезное, кто использует SOHO-"коробочки" под роутеры...


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено terner , 01-Июл-11 00:11 
>>[оверквотинг удален]
>>После чего, если повезет, сервер включается ;-)

Описанным способом WOL не срабатывает из интернета. Роутер D-Link dir300 не поддерживает широковещательный адрес 192.168.0.255.
Но есть возможность перенаправлять 9 (или 7) UDP порт прямо на сетевой адрес целевого компа.
Многие возразят, что мол у выключенного или гибернированного компа IP адрес в роутере отсутствует и поэтому он никак не сможет запуститься магическим пакетом.
Но в роутере есть ARP . В кеше ARP IP адрес выключенного компа хранится минут 10-15. До истечения этого времени комп успешно удаленно включается.
Если добавить в ARP статическую запись arp -s 192.168.0.100 хх:хх:хх:хх:хх:хх (зарезервированный ip адрес компьютера и mac адрес его сетевухи), то роутер перестанет забывать IP адрес wol компьютера.
Вот только одна незадача. DIR-300 не поддерживает вход по телнету.
Ну а теперь вопрос к спецам по линуксу. Можно ли обойти телнет и написать javascript при помощи которого из адресной строки браузера можно было бы добавить запись в кеш ARP dir-300. Тогда отпала бы необходимость возни с перепрощивкой на DD-WRT


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено Define , 01-Июл-11 22:02 
через телнет можно подключиться к d link'y

telnet 192.168.0.1
login telnet: Alphanetworks
password telnet: wrgg19_c_dlwbr_dir300
дальше пишите: arp -s 192.168.0.100 хх:хх:хх:хх:хх:хх
и будет вам щастье все подключается из инета, ежли че пруф могу кинуть (обращаться в мыло)


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено terner , 01-Июл-11 22:44 
> через телнет можно подключиться к d link'y

Когда я ввожу telnet 192.168.0.1 то появляется сообщение "Не удалось подключиться к этому узлу на порт 23". Логин пароль не запрашиваются



"D-Link DIR-300 - удаленное включение компьютера"
Отправлено Вова , 12-Июл-11 03:36 
> через телнет можно подключиться к d link'y
> telnet 192.168.0.1
> login telnet: Alphanetworks
> password telnet: wrgg19_c_dlwbr_dir300
> дальше пишите: arp -s 192.168.0.100 хх:хх:хх:хх:хх:хх
> и будет вам щастье все подключается из инета, ежли че пруф могу
> кинуть (обращаться в мыло)

получилось подключиться по телнету, но у меня возникла следующая проблема - на роутере стоит busybox v1.00, в которой к сожалению просто нету команды arp.
как её установить можно, и можно ли это вообще?


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено Вова , 14-Июл-11 15:55 
>[оверквотинг удален]
>> telnet 192.168.0.1
>> login telnet: Alphanetworks
>> password telnet: wrgg19_c_dlwbr_dir300
>> дальше пишите: arp -s 192.168.0.100 хх:хх:хх:хх:хх:хх
>> и будет вам щастье все подключается из инета, ежли че пруф могу
>> кинуть (обращаться в мыло)
> получилось подключиться по телнету, но у меня возникла следующая проблема - на
> роутере стоит busybox v1.00, в которой к сожалению просто нету команды
> arp.
> как её установить можно, и можно ли это вообще?

собери из сорцов, тёзка.


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено jPump , 17-Май-12 13:19 
>[оверквотинг удален]
>> telnet 192.168.0.1
>> login telnet: Alphanetworks
>> password telnet: wrgg19_c_dlwbr_dir300
>> дальше пишите: arp -s 192.168.0.100 хх:хх:хх:хх:хх:хх
>> и будет вам щастье все подключается из инета, ежли че пруф могу
>> кинуть (обращаться в мыло)
> получилось подключиться по телнету, но у меня возникла следующая проблема - на
> роутере стоит busybox v1.00, в которой к сожалению просто нету команды
> arp.
> как её установить можно, и можно ли это вообще?

Всем доброго времени суток!
Столкнулся с той же проблемой удаленного включения компьютера из интернета.
Дома стоит роутер D-Link DIR-300/NRU ревизии B5, для которого (на данный момент) нет альтернативных готовых прошивок (в т.ч. и горячо всеми любой DD-WRT). На роутере стоит BusyBox 1.12.
А проблема состояла в том, что встроенное в вебморду средство переброса пакетов не позволяют переадресацию в broadcast (x.x.x.255), а хитрожовыделанный D-Link обновляет arp таблицу каждые 15-30 секунд, так что непосредственно в выключенный длительное время компьютер Magic Packet тоже не перебросить.
Многие лучики поно добра ребятам из Парка Шинчу (Тайвань), которые решили отказаться от компиляции arp в BusyBox, поскольку iptables тоже не позволяет POSTROUTING на широковещательный канал.

После недельного воскуривания всевозможных манов всех цветов и мастей я наконец-то натолкнулся на выход из этого безвыходного положения:
http://www.brazilfw.com.br/forum/viewtopic...=38&t=65893

Вкратце, для занесения постоянной записи соответствия ip - mac используется команда ip:

ip neigh add <локальный_айпи_компьютера> lladdr <его_MAC_адрес> nud permanent dev <имя_интрефейса>

Пример:

ip neigh add 192.168.0.50 lladdr 01:23:45:67:89:AB nud permanent dev eth0

И еще несколько советов конкретно под DIR-300/NRU rev B5:
- Выставите статический адрес в настройках локального соединения на компьютере (по умолчанию DIR-300/NRU выдает их в диапазоне от 192.168.0.2 - 192.168.0.100)
- Если Ваш компьютер включен и находится в сети, то смело заходите telnet'ом на роутер и наберите команду

ip neigh show

найдите ваш ай-пи, мак а также имя интрефейса, поскольку для локальной сети по умолчанию роутер создает бридж:

Dlink-Router login: admin
Password:
Welcome to
    
                            <Эмблема D-Link>

                     = Ebuilding Networks for People =

BusyBox v1.12.1 (2011-04-14 16:49:42 MSD) built-in shell (ash)
Enter 'help' for a list of built-in commands.

# ip neigh show
<Внешний_ip> dev eth2.5 lladdr 00:11:22:33:44:55 DELAY
192.168.0.2 dev br0 lladdr 01:23:45:67:89:ab REACHABLE
192.168.0.3 dev br0 lladdr 01:23:45:67:89:de REACHABLE

далее

# ip neigh change 192.168.0.2 lladdr 01:23:45:67:89:ab nud permanent dev br0

и в итоге

# ip neigh show
<Внешний_ip> dev eth2.5 lladdr 00:11:22:33:44:55 DELAY
192.168.0.2 dev br0 lladdr 01:23:45:67:89:ab PERMANENT
192.168.0.3 dev br0 lladdr 01:23:45:67:89:de REACHABLE

- далее настройте переброс входящего пакета на 9 порт вашего компьютера и пробуждайте его отовсюду и всея!

Еще надо помнить, что перманентные записи стираются при перезагрузке роутера, так что на всякий случай обеспечьте себя удаленным доступом к веб-интерфейсу и telnet'у (перебросить порт 23 на 192.168.0.1).

Общая справка по командам ip:
http://linux-ip.net/html/tools-ip-neighbor.html

Надеюсь, что мой пост для кого-нибудь окажется полезным и информативным, всем приятного времени суток!


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено Anubis , 01-Сен-12 10:25 
Огромное тебе спасибо, человечище! Ты решил проблему моей недельной бессонницы! wake-on-Lan стал для меня навящевой идеей. Вечная хвала тебе. А то я уж и не знал, что мне делать. Даже на форуме D-Link были сообщения, что это просто невозможно сделать в данной модели. Пойду собирать деньги, что бы памятник тебе поставить. Спасибо!

"D-Link DIR-300 - удаленное включение компьютера"
Отправлено jPump , 13-Дек-12 10:05 
Всегда пожалуйста! Рад, что мой микромануал помог.

"D-Link DIR-300 - удаленное включение компьютера"
Отправлено anubis , 14-Дек-12 11:58 
А ты не знаешь как можно сделать .bat файл, который при запуске делает тоже самое? Ну что бы ручками это каждый раз не прописывать, а то у меня эта запись вылетает с завидной периодичностью.(((( если таковой существует, вышли по адресу petroglif@rambler.ru

"D-Link DIR-300 - удаленное включение компьютера"
Отправлено Stiv_k , 05-Янв-13 23:06 
Присоединяюсь к anubis.
Как можно автоматизировать этот процесс?


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено jPump , 09-Янв-13 10:58 
> Присоединяюсь к anubis.
> Как можно автоматизировать этот процесс?

На данный момент в процессе обсуждения:
http://www.opennet.me/tips/2727_wol_wake_busybox_dlink_route...


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено kMamont , 23-Янв-13 00:23 
Если после роутера стоит swtch, будет ли работать вышеописанный способ?



"D-Link DIR-300 - удаленное включение компьютера"
Отправлено anubis , 22-Апр-13 00:20 
> Присоединяюсь к anubis.
> Как можно автоматизировать этот процесс?

Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "telnet.exe [ROUTER-IP-ADDRESS]"
WScript.Sleep 1000
oShell.SendKeys "[LOGIN]" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "[PASSWORD]" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "ip neigh change [PC-IP-ADDRESS] lladdr [MAC] nud permanent dev br0" & chr(13)
oShell.SendKeys "exit" & chr(13)
oShell.SendKeys "" & chr(13)

Всё это запихиваем в бат-файл. Работает как изнутри сетки так и снаружи.
Не забудьте перед использованием включить Клиент Telnet в компонентах Windows.
Использовать нужно после включения-выключения электричества, что бы восстановить ARP.


"D-Link DIR-300 - удаленное включение компьютера"
Отправлено anubis , 25-Апр-13 14:58 
Извиняюсь, vbs файл