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.

Спасибо!