Wake On Lan
Wake-on-LAN (WoL) — это технология, позволяющая удаленно включать или "пробуждать" компьютер через локальную сеть, отправляя на его сетевую карту специальный "магический" пакет (Magic Packet). Для её работы необходимо включить поддержку WoL в настройках BIOS материнской платы и драйвера сетевой карты, а также обеспечить питание компьютера от сети и подключение к локальной сети через Ethernet-кабель.
Доблесно взято: https://www.opennet.ru/tips/2503_lan_linux_ethernet_boot.shtml
Оказывается, есть ещё и https://www.altlinux.org/Включение_Wake-on-LAN
Для того, чтобы иметь возможность разбудить компьютер удалённо, необходимо, чтобы в нём был установлен источник питания ATX версии не ниже 2.01, материнская плата, поддерживающая Wake On Lan, а также сетевая плата с поддержкой этой технологии.
Настройка
Определить, поддерживает ли материнская плата вашего компьютера Wake On Lan, можно зайдя в настройки CMOS Setup в раздел настроек управления питанием. Найдите там опцию "Wake On Lan" и убедитесь, что она включена.
После загрузки системы установите, если необходимо, пакет ethtool
, при помощи которого можно в том числе и переключать сетевую плату в режим пробуждения по сигналу Wake On Lan от других машин:
sudo apt-get install ethtool
Далее, необходимо определить, поддерживает ли установленная сетевая плата Wake On Lan, и включена ли эта опция:
sudo ethtool eth0 | grep -i wake-on
Supports Wake-on: pumbg
Wake-on: d
В строке Supports Wake-On перечислены механизмы, поддерживаемые сетевой платой. В моём примере я пользуюсь методом отправки так называемым Magic Packet, и если вам нужно то же самое, то убедитесь, что в Supports Wake On присутствует буква "g". Буква "d" в строке Wake-on обозначает, что Wake On Lan для данного сетевого интерфейса отключён. Чтобы включить его в режим распознавания Magic Packet, необходимо выполнить:
ethtool -s eth0 wol g
ПЕРЕПИСАТЬ
Ценный коммент: Имейте ввиду, что после включения компьютера, вероятней всего, опция Wake-on опять перейдёт в состояние "d". Это может не работать (или не сработать второй раз), если выполнялся сброс (переинициализации) карты (в том числе - на ноутбуках после "сна"). Лучше это делать из:
- Ubuntu/Debian:
/etc/network/interfaces
в post-up / pre-down - AltLinux:
/etc/net/ifaces/ethX/ifup-post
(На Альтвики предлагают сервис написать, вариант в разы лучше, чем ifup-post) - в других: в соотв. местах, выполняемых каждый раз после инициализации устройства или перед его отключением.
Ценный коммент2: Если на компьютере несколько сетевых карт обязательно нужно указать в параметр -i адрес Например, если нужно разбудить комп с адресом 192.168.2.34 в сети 192.168.2.0/24 то можно так и указать например широковещательный адрес сети
wakeonlan -i 192.168.2.255 00:0e:2e:b9:cb:ad
Теперь всё готово для пробуждения системы по получению Magic Packet. Для того, чтобы его отправить, необходимо знать MAC-адрес сетевого интерфейса включаемого компьютера, поэтому прежде, чем выключать систему, запишите его:
ifconfig eth0 | grep -i hwaddr
eth0 Link encap:Ethernet HWaddr 00:0e:2e:b9:cb:ad
Теперь можно выключать систему:
sudo shutdown -h now
Включение
Теперь с любого другого компьютера, находящегося в том же сегменте локальной сети (в принципе, это необязательно, но тогда необходимо, чтобы в вашей сети маршрутизаторы корректно пробрасывали широковещательные пакеты), можно включить ранее сконфигурированную удалённую систему. Для этого понадобится утилита wakeonlan, которую необходимо установить:
sudo apt-get install wakeonlan
Разбудить выключенную систему теперь можно командой (обратите внимание, wakeonlan не требует прав суперпользователя):
$ wakeonlan -p 8 00:0e:2e:b9:cb:ad
Опцией -p
указывается номер UDP-порта, с которого будет отправлен Magic Packet. Указание этой опции обязательно, поскольку по умолчанию wakeonlan
использует девятый порт, помеченный в /etc/services
как discard
, что означает использование данного порта протоколом RFC 863
. В принципе, можно использовать любой незанятый в системе UDP-порт.
Заметка
Discard — простой и устаревший сетевой сервис, который принимает соединения и отбрасывает все полученные данные без ответа. Протокол предназначен для тестирования, измерений и отладки. Он прослушивает порт 9 как для TCP, так и для UDP и принимает любые передаваемые данные, которые немедленно отбрасывает.