суббота, 7 июня 2008 г.

HOWTO: Wake On LAN, удалённое включение компьютера

В данном HowTo рассматривается вопрос использования Wake on LAN под Ubuntu.

Wake-On-LAN — технология, позволяющая удалённо включать компьютер. Почему-то не часто используемая функция, хотя бесспорно будет полезна любителям ввести halt не в том ssh-сеансе Wink

Что понадобится:
- компьютер-жертва с ATX-источником питания, материнской платой, поддерживающей Wake On LAN и Ubuntu на борту;
- сетевой адаптер с поддержкой Wake On LAN;
- знание IP и MAC сетевого устройства;
- второй компьютер, при помощи которого будем будить первого;
- спец-программа на втором компьютере, умеющая отсылать «волшебный пакет».

Как это работает:
Управляемый компьютер находится в дежурном режиме (stand by) и выдаёт питание на сетевой адаптер. Сетевой адаптер находится в режиме пониженного энергопотребления, просматривая все пакеты, приходящие на его MAC-адрес и ничего не отвечая на них. Если одним из пакетов окажется Magic Packet, сетевой адаптер выдаёт сигнал на включение питания компьютера.

Делаем:
1.Включаем поддержку WAN в BIOS. Как это делается — смотрите в мануале вашей материнской платы. Или просто ищите в настройках BIOS что-то похожее на «enable Wake On LAN».

2.Теперь загружаем ОС и создаем скрипт, который будет должным образом конфигурировать сетевую карту при каждой загрузке Ubuntu.

- Выбираем необходимую сетевую карту:
Код:
ifconfig
Код:
eth0      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::215:f2ff:fe6f:3487/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:71495 errors:0 dropped:0 overruns:0 frame:0
TX packets:76190 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:23164212 (22.0 MiB) TX bytes:7625016 (7.2 MiB)
Interrupt:217 Base address:0xd400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1290 errors:0 dropped:0 overruns:0 frame:0
TX packets:1290 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:161182 (157.4 KiB) TX bytes:161182 (157.4 KiB)
в данном примере карта одна, eth0.

- Теперь создаем сам скрипт, для этого сначала необходимо получить права администратора:
Код:
sudo su
cd /etc/init.d/
gedit wakeonlanconfig

- пишем в файл следующие строки, сохраняем, закрываем:
Код:
#!/bin/bash
ethtool -s eth0 wol g
exit

- устанавливаем права:
Код:
chmod a+x wakeonlanconfig

- создаем символическую ссылку, делаем скрипт исполняемым при загрузке:
Код:
update-rc.d -f wakeonlanconfig defaults

на экране должно отобразиться что-то вроде
Код:
Adding system startup for /etc/init.d/wakeonlanconfig ...
/etc/rc0.d/K20wakeonlanconfig -> ../init.d/wakeonlanconfig
/etc/rc1.d/K20wakeonlanconfig -> ../init.d/wakeonlanconfig
/etc/rc6.d/K20wakeonlanconfig -> ../init.d/wakeonlanconfig
/etc/rc2.d/S20wakeonlanconfig -> ../init.d/wakeonlanconfig
/etc/rc3.d/S20wakeonlanconfig -> ../init.d/wakeonlanconfig
/etc/rc4.d/S20wakeonlanconfig -> ../init.d/wakeonlanconfig
/etc/rc5.d/S20wakeonlanconfig -> ../init.d/wakeonlanconfig

- проверяем что всё нормально получилось, вводим в терминале
Код:
/etc/init.d/wakeonlanconfig
если никакого вывода не последовало и показалась следующая строка ввода - значит всё прошло гладко.

- проверяем на практике.
распечатываем данное руководство, выключаем первый компьютер и идём ко второму Smiley Здесь нам понадобится одна из многочисленных программ, умеющих слать волшебный пакет. Программа попросит указать IP и MAC первого компьютера, в крайнем случае - еще и порт (обычно 7 или 9).
Для Ubuntu удобна программа wakeonlan, для офтопика найдет гугл. Мне же нравится он-лайн сервис http://www.rshut.com/rus/products/wol которым легко можно воспользоваться даже с сотового телефона Smiley

Пробуем:
Код:
wakeonlan -i [IP адрес] -p [порт] [MAC адрес]
, например
Код:
wakeonlan -i 192.168.1.2 -p 7 01:23:45:67:89:ab

должно сработать coolsmiley если ничего не вышло - проблема, скорее всего, в неправильной настройке BIOS, перепроверьте. Может быть ситуация, когда включаемый компьютер находится за маршрутизатором, в таком случае следует пробросить необходимый порт.

_____________________________________________________________________
источники:
http://ru.wikipedia.org/wiki/Wake-on-LAN - теоретическая часть
http://ubuntuforums.org/showthread.php?t=234588 - практическая часть

HowTo испробовано на Ubuntu 7.10, сработало с первой попытки.

Комментариев нет: