ether-wake – будим ПК
Возникла задача будить на выходных один ПК.
Устанавливаем комплекс утилит:
# yum -y install ethtool
Требования к удаленному компьютеру, что бы данная технология работала это:
- Материнская плата с питанием ATX.
- BIOS здесь нужно включить поддержку Wake-On-LAN, и настроить правильно энергосбережение.
- Сетевая карта с поддержкой технологии WOL (тоже почти все, но её еще необходимо включить в настройках сетевой карты).
Включаем функцию Wake-On-LAN, выглядит этот пункт может по разному в зависимости от BIOS, пример:
- Resume by LAN
- Wake Up On LAN
- WOL From Soft-Off
- Power Up on PCI
Вообще смотрите все что касается фраз “Power Up”, “WOL”, “Wake Up”, “Resume by” но связанное с LAN, MAC или PCI.
Переводим работу материнской платы в определенный режим энергосбережения Suspend Mode в основном компьютеры поддерживают ACPI и позволяют использовать только два режима S1 (POS) и S3(STR) но нас будет интересовать режим S1 (Power on Suspend), это тоже очень важно, иначе на нашу сетевую карту не будут подаваться постоянно 5В при выключенном компьютере, и мы не сможем его включить.
После того как включили настройку в БИОС, необходимо удостоверится что при выключенном компьютере на сетевой карте светится индикатор зеленый или оранжевый огонек, что и будет означать что все сделано правильно.
Далее надо настроить сетевую карту, того же ПК, в операционной системе Windows, не важно встроенная или выделенная заходим в настройки ищем такие пункты как:
- Wake on Magic Packet
- Wake on Pattern
- Wake on Lan
- WakeOnLan from PowerOff
- Wake from shutdown
и включаем их.
Посылается пакет, например, с сервера в виде:
# ether-wake -i eth0 11:22:33:44:55
где eth0 – нужный интерфейс на сервере, а 11:22:33:44:55 – MAC адресата.
Для побудки CentOS нужно выполнение условий в BIOS, и также поддержка сетевой картой и системой. Проверяем:
# ethtool enp5s0 Settings for enp5s0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: No Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbg Wake-on: d Current message level: 0x00000033 (51) drv probe ifdown ifup Link detected: yes
- Supports Wake-on: g — сетевой интерфейс поддерживает технологию Wake On Lan
- Wake-on: d — поддержка отключена
По man-у:
p Wake on PHY activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket™
s Enable SecureOn™ password for MagicPacket™
d Disable (wake on nothing). This option clears all
previous options.
Нужно дописать в конф. файл нужного интерфейса строку на постоянку:
# vi /etc/sysconfig/network-scripts/ifcfg-enp5s0 ETHTOOL_OPTS=”-s ${DEVICE} wol g”
или дать команду:
# ethtool -s enp5s0 wol g
Проверка tcpdump-ом:
# tcpdump -i enp5s0 ether proto 0x0842 or udp port 9 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on enp5s0, link-type EN10MB (Ethernet), capture size 262144 bytes 10:50:41.736472 00:30:84:0a:99:af (oui Unknown) > 00:19:db:f5:6a:76 (oui Unknown), ethertype Unknown (0x0842), length 116: 0x0000: ffff ffff ffff 0019 dbf5 6a76 0019 dbf5 ..........jv.... 0x0010: 6a76 0019 dbf5 6a76 0019 dbf5 6a76 0019 jv....jv....jv.. 0x0020: dbf5 6a76 0019 dbf5 6a76 0019 dbf5 6a76 ..jv....jv....jv 0x0030: 0019 dbf5 6a76 0019 dbf5 6a76 0019 dbf5 ....jv....jv.... 0x0040: 6a76 0019 dbf5 6a76 0019 dbf5 6a76 0019 jv....jv....jv.. 0x0050: dbf5 6a76 0019 dbf5 6a76 0019 dbf5 6a76 ..jv....jv....jv 0x0060: 0019 dbf5 6a76 ....jv ^C 1 packet captured 1 packet received by filter 0 packets dropped by kernel
Или такой вариант
tcpdump -UlnXi enp6s0 ether proto 0x0842 or udp port 9 2>/dev/null | sed -nE 's/^.*20: (ffff|.... ....) (..)(..) (..)(..) (..)(..).*$/\2:\3:\4:\5:\6:\7/p'
Будить по cron-у (будние дни в 8-55):
# crontab -e 55 8 * * 1-5 /home/svm/bin/wake_web.sh
# cat wake_web.sh #!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ether-wake -i enp5s0 00:19:db:f5:6a:76 sleep
UPD. После обновления системы wake on lan перестал работать. Решение здесь.