Linux и Wake On Lan

Решил я сэкономить немного электроэнергии за счет включения и выключения своей домашней лабы удаленно, когда это необходимо. Удалённое выключение компьютера под управлением не представляет сложности, достаточно иметь доступ к ssh. А вот с включением системы дело обстоит немного сложнее.

В этой записи я расскажу о том, как включить удаленно компьютер, поддерживающий технологию Wake On Lan. Собственно говоря почти все современные метеринские платы и сетевые адаптеры поддерживают эту технологию.

Принцип работы Wake On Lan следующий: компьютер находится в режиме stand-by, питание поступает на сетевой адаптер, который находится в режиме пониженного энергопотребления. Сетевой адаптер просматривает все пакеты, приходящие на его MAC-адрес, в ожидании так называемого magic packet. В случае если такой пакет получен — сетевой адаптер инициирует включение питания компьютера.

Magic packet — это специальная последовательность байт, первый 6 байт равны 0xFF и называемаются цепочкой синхронизации, затем идет mac-адрес сетевой платы, повторенный 16 раз.

От теории к практике. Проверим, поддерживается ли у нашего сетевого адаптера технология Wake On Lan и включена ли она.

Это можно сделать с помощью утилиты ethtool:

 [email protected]:~# ethtool eth0 | grep Wake-on Supports Wake-on: pumbg Wake-on: g 

Или через sysfs:

 [email protected]:~# cat /sys/class/net/eth0/device/power/wakeup enabled 

Если Wake On Lan выключен, необходимо его включить.

 [email protected]:~# ethtool -s eth0 wol g 

Или через sysfs:

 [email protected]:~# echo enabled > /sys/class/net/eth0/device/power/wakeup 

Так же необходимо знать mac-адрес сетевого интерфеса, на который будет отправлен magic packet.

 [email protected]:~# cat /sys/class/net/eth0/device/net/eth0/address 00:25:90:65:7b:12 

Чтобы проверить как оно работает, выключем компьютер.

 [email protected]inux:~# shutdown -hy now 

На другом компьютере устанавливаем утилиту wakeonlan

 [email protected]:~$ sudo apt-get install wakeonlan 

Отправляем magic packet.

 [email protected]:~$ wakeonlan -p 8 00:25:90:65:7b:12 Sending magic packet to 255.255.255.255:8 with 00:25:90:65:7b:12 

Компьютер должен включиться.

По умолчанию wakeonlan использует широковещательный адрес для отправки пакета, однако, если на пути такого пакета будет стоять маршрутизатор, скорее всего он не достигнет цели, так как на большинстве маршрутизаторов передача широковещательного трафика запрещена. В этом случае следует использовать опцию -i, которая позволяет отправить magic packet на определенный ip-адрес.