5. Настройка Wake-on-Lan¶
Wake-On-Lan - технология, позволяющая включать компьютер по сети.
Требование к ведомому компьютеру¶
- ATX источник питания, материнская плата с поддержкой Wake-On-Lan
- сетевой адаптер с поддержкой Wake-On-Lan
- известный MAC-адрес сетевого адаптера
Требование к ведущему компьютеру¶
- специальная программа, умеющая отсылать Magic Packet
Принцип работы¶
Ведомый компьютер находится в дежурном режиме (stand by) и выдает питание на сетевой адаптер. Сетевой адаптер находится в режиме пониженного энергопотребления, просматривая все пакеты, приходящие на его MAC-адрес, но ничего не отвечая на них. Если один из них окажется Magic Packet, то сетевой адаптер выдаёт сигнал на включение питания компьютера.
Реализация¶
Включаем поддержку WoL в BIOS на ведомом компьютере. Это может быть одноименный пункт наподобие Wake On Lan Enable, либо Power On By PCIE и т.д., может также быть, что этот режим в BIOS не меняется, а материнская плата поддерживает его по умолчанию.
Чтобы определить, поддерживает ли сетевая карта WoL, - загружаем ведомый компьютер набираем в консоли
ethtool eth0
Получаем результат:
Settings for eth0: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: external Auto-negotiation: on Supports Wake-on: g Wake-on: d Link detected: yes
Нас интересуют строчка Supports Wake-on и Wake-on. Первая показывает доступные режимы сетевого адаптера на пробуждение (g - как раз пробуждение по Magic Pocket), а вторая - текущий режим (d означает выключенный WoL).
Для того, чтобы перевести сетевую карту в режим WoL, используется команда
ethtool -s eth0 wol g
Для выключения режима WoL
ethtool -s eth0 wol d
Сетевой адаптер может поддерживать сохранение состояния, в которое его перевели, но может и сбрасывать (чаще всего на d), поэтому при каждой загрузке необходимо будет устанавливать нужный режим WoL. Добавляем в /etc/conf.d/net следующие строки - они будут включать режим WoL на всех сетевых адаптерах, которые его поддерживают:
preup() { if ethtool $1 | grep "Supports Wake-on:" | grep g >/dev/null; then ethtool -s $1 wol g fi }
Для получение MAC-адреса сетевого адаптера на ведомом компьютере можно
- выполнить команду на ведомом компьютере
ifconfig -a eth0 Link encap:Ethernet HWaddr 01:02:03:04:05:06 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
- выполнить команду на ведущем компьютере, которая отобразит ARP-кэш
arp Address HWtype HWaddress Flags Mask Iface 10.0.0.1 ether 00:01:02:03:04:05 C eth0 10.0.0.2 ether 06:07:08:09:0a:0b C eth0 10.0.0.3 ether 0c:0d:0e:0f:10:11 C eth0
- для того, чтобы все компьютеры сети попали в кэш, можно воспользоваться утилитой nmap, которая пропингует компьютеры в сети и их MAC-адреса попадут в кэш
nmap -v -Sp 10.0.0.0/24
Для пробужения компьютера используем утилиту wol на ведущем компьютереwol MAC-адрес
При работе с программами следует учитывать, что не все компьютеры включаются сразу после подключения в электрическую сеть. Это связано с отсутствием процесса инициализации подачи питания на сетевую карту (компьютер еще не включался и не знает, какие устройства следует питать чтобы получать специальные сигналы, среди которых будет магический пакет). Поэтому следует произвести одно предварительное включение вручную. Если существует необходимость избавиться от данной проблемы (например, сервер закрывается на ключ или находится очень далеко), следует установить в BIOS параметр питания Wake After Power Fail в значение ON.