LINUX.ORG.RU
ФорумAdmin

[WOL] D-Link DIR-300 - удаленное включение компьютера

 


0

0

Должен поделиться опытом.
Встала задача: удаленно включать сервер.

Теория проста: посылать из любого интернета «магический» (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;};


Спасибо интересно. Если прошивка ddwrt, то не надо таких хаков.

anton_jugatsu ★★★★
()

Ах да, забыл сказать..

Прошивка: Firmware Version : 2.02 , Mon 14 Dec 2009
Железяка: Hardware Version : B1
Браузер: Google Chrome 5.0.375.55

robux
() автор топика

Этот форум больше для вопросов и обсуждений, нежели готовых советов. Выложите куда-нибудь на opennet, лоровскую вики и т.п.

Igron ★★★★★
()

Силён!

Мужик, ты силён! Выложи, пожалуйста, это руководство в L.o.r.'овскую wiki.

Camel ★★★★★
()

А эта фича, которая включает сервер по udp пакету должна поддерживаться биосом сервера?

antroX
()

Спасибо за подробный ман =)

Я так понял, что эта штука просто будит сервак, а не включает его. Так переменуй же тему в «удаленной разбеждевание сервера», а то я уж сначвала про магию подумал, про сборку человеподобный роботов, удаленно управляемых и включающих сервер в розетку, тыкающих кнопку и т.д...

Zhbert ★★★★★
()
Ответ на: комментарий от Deleted

Так как протокол UDP - это протокол транспортного уровня, то чтобы понимать его
в биосе должна быть прочти полная поддержка стека TCP/IP.

Биос , такой биос

antroX
()
Ответ на: комментарий от Viglim

Да ? Обоснуйте пожалуйста?

Я всегда думал что UDP это, как и TCP, протокол транспортного уровня,
только без поддержки соединений ( connectionless )
Но не зависимо от этих различий оба лежат выше уровнем протокола IP.
А это значит что сегменты UDP содержаться в пакетах IP.
И чтобы биосу понять UDP сегмент, ему нужно понять IP пакет, в котором
он содержится, который в свою очередь содержится в кадре ethernet.

Так что не надо говорить что это разные вещи)

antroX
()
Ответ на: комментарий от Viglim

Так сервер который будет включаться как раз принимает UDP пакет.

А для этого ему нужно:

1) Принять ethernet кадр и увидеть в нем ip пакет
2) Посмотреть содержимое ip пакета и обнаружить UDP сегмент
3) Обнаружив udp сегмент - включиться.

Это ли не поддержка стека TCP/IP ?

antroX
()

http://ru.wikipedia.org/wiki/Wake-on-LAN

полная поддержка TCP/IP в bios не нужна. TCP/IP или IPX нужен лишь для того чтобы пакет дошел до принимающей сетевой карты, а дальше она уже смотрит есть там magic packet


ps: а вот поддержка в BIOS нужна для того чтобы можно было включать, у меня например не включает, может только будить из suspend

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

А, ну глядя на состав magic packet все становится понятно.
Такое можно обнаружить тупо пропарсив получаемые данные.

TCP/IP или IPX нужен лишь для того чтобы пакет дошел до принимающей сетевой карты

Чтобы пакет дошел до принимающей станции нужен только ethernet(Layer-2)

А вот посылающей станции нужна полная поддержка TCP/IP, которая упакует
магический пакет сначала в udp (Layer-4), затем udp упакуется в ip (Layer-3). IP упаковывается в ethernet frame (Layer-2).
Это все скармливается драйверу NIC. NIC пересылает данные на принимающую машину. А там они просто парсятся. Все понятно.

antroX
()

Мегахакер! На моем dir300 проблем с форвардом нет. Как поступить, если на WAN интерфейсе маршрутизатора нет публичного IP?

exst ★★★★
()
Ответ на: комментарий от exst

Никак. Сегодня по дефолту считается что у тебя есть публичный айпи

antroX
()
Ответ на: комментарий от exst

Задействуй старый сотовый

1) поройся в шкафу, найди свой старый сотик
2) сбегай в ларек, по акции получи любую симку
3) вскрой системник, выведи 2 провода от power
4) вскрой сотик, от динамика выведи 2 провода
5) настрой трубу чтоб звонила тока на тебя
6) выбери мелодию типа «пим» (чтоб пикнуло тока)
7) подцепи динамик к power
Уезжай в Мухосранск.
8) оттудава звони и после первого звонка сбрось
Комп включится.

P.S. Для полного щастья спаяй логический ключ между динамиком и power, думаю, это будет что-то на оптроне.

robux
() автор топика
Ответ на: Задействуй старый сотовый от robux

Что за ерунда? Ну выдаст тебе телефон динамический сигнал, соответствующий «пиму», на один из контактов, подсоединенных к динамику, и чо? Нужно же замкнуть контакты повера, а не подать на них 3 вольта от питалова телефона.

Zhbert ★★★★★
()
Ответ на: комментарий от px

оптрон как раз и есть ключ, а с динамика прямо не включится если к power подключить провода напрямую.

px ★★★
()
Ответ на: комментарий от px

>а с динамика прямо не включится если к power подключить провода напрямую.

Теоритически это можно сделать. Если уровень выходного сигнала телефона (входной сигнал динамика) будет равен логической единице компа, которая как раз-таки и генерится, когда замыкаешь ножки, и при этом замкнуть земли телефона и матери, то получится, что при звонке на ногу мамки пойдет логическая единица, как и при нажатии кнопки, что, соответственно, запустит мать. Но это не так все просто, как описал robux.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

А это уже сложно подобрать, ибо тогда надо штудировать маны по матери, где написано, на какой логике строится та ее часть, которая отвечает за включаение, КМОП или ТТЛ (ну или как там они по аглицке называются), а это влияет на уровень логической единицы.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

повторяю ещё раз, это гимор который работать в не будет. а у меня работает на оптопаре.

px ★★★
()
Ответ на: комментарий от anon_666

>Они по уровням совместимы.

Да, но только у ТТЛ это строго 5В, а у КМОП от ЕМНИП 3 до 12.

повторяю ещё раз, это гимор который работать в не будет. а у меня работает на оптопаре.


Почему не будет-то? Еще как будет, только это гемор, как ты уже сказал, так что проще поставить обычный логический ключ.

Zhbert ★★★★★
()

Придется перепрошивать

Короче, ребята, с родной прошивкой ДЛинка нифига не получается. Несмотря на то что нам (мне) удалось обмануть веб-интерфейс и задать широковещательный адрес (192.168.1.255), роутер НЕ ПЕРЕСЫЛАЕТ пакет на него. Т.е. broadcast где-то в его мозгах зарубается на корню.

Если задать в качестве получателя IP сервера (192.168.1.2), то udp-пакет бодро доходит при включенном сервере (при выключенном наверное не дойдет). Я сделал вывод что родной софт DLink'a делает форвардинг только на IP, к-е есть в «STATUS-Active Session». Т.к. широковещательного (192.168.1.255) адреса там нет, то он даже не пытается делать пересылку (сука!).

Что примечательно, из LAN широкий пакет доходит:

wakeonlan -p 4009 -i 192.168.1.255 aa:33:bb:33:cc:44

Но вот через WAN нивкакую.

РЕЗЮМЕ: придется шить dd-wrt (ищите по слову «dir»)

robux
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.