HomeLab.net.ua

Твоє залізо. Твої правила. Твоя мова.

Wake-on-LAN: як вмикати сервер віддалено і не вставати з дивана

Опубліковано Оновлено

Wake-on-LAN сервер

Wake-on-LAN сервер – це спосіб увімкнути машину по мережі через magic packet, без фізичного доступу до кнопки живлення. У homelab це закриває простий сценарій: сервер більшість часу вимкнений, але піднімається віддалено, коли потрібен backup, медіасервіс, VPN-вузол або тимчасова тестова інфраструктура.

Працює це не завжди і не скрізь. Потрібна підтримка з трьох боків: плата або BIOS/UEFI, мережева карта і операційна система. Якщо хоча б одна ланка не тримає Wake-on-LAN після shutdown, нічого не станеться, хоч пакет буде правильний.

Нижче – робоча схема для Linux-сервера: що увімкнути, як перевірити, чому WoL часто ламається після повного вимкнення, і як підняти Wake-on-LAN сервер не лише в локальній мережі, а й через маршрутизатор або VPN.

Як працює Wake-on-LAN сервер

Wake-on-LAN спирається на magic packet – спеціальний Ethernet-кадр або UDP-пакет, у якому багаторазово повторюється MAC-адреса цільового інтерфейсу. Мережева карта, що лишається частково живою після вимкнення системи, слухає лінк і при збігу шаблону подає сигнал на увімкнення плати.

Критичний момент тут не в самому пакеті, а в живленні NIC після shutdown. На практиці більшість проблем – не в Linux і не в утиліті для відправки пакета, а в тому, що плата повністю знімає живлення з PCIe або Ethernet-контролера. Особливо часто це трапляється на енергоощадних налаштуваннях S5.

Ще одна межа застосовності: Wake-on-LAN добре працює в одному L2-сегменті. Через маршрутизатори, VLAN і тунелі схема ускладнюється, бо broadcast-трафік там або ріжеться, або його треба прокидати окремо.

Що має бути увімкнено до налаштування

Перед налаштуванням ОС треба перевірити базові умови: підтримку WoL у BIOS/UEFI, активний Ethernet-інтерфейс і збереження живлення на мережевій карті після вимкнення. Без цього Wake-on-LAN сервер не підніметься, навіть якщо Linux показує правильні прапорці.

  • У BIOS/UEFI потрібен пункт на кшталт Wake on LAN, Power On By PCI-E, Resume By LAN або близький за змістом.
  • Сервер має бути підключений по кабелю. Для Wi‑Fi WoL зазвичай або не працює, або працює дуже вибірково.
  • На порту комутатора після shutdown має лишатися link. Якщо індикатори на NIC повністю гаснуть, шансів мало.
  • Після втрати живлення поведінка окрема. Частина плат не приймає WoL, доки систему не ввімкнути вручну хоча б один раз.

Тут є неочевидна деталь: на дешевих mini PC і офісних материнках підтримка Wake-on-LAN формально є, але лише зі стану sleep, а не після повного shutdown. У специфікації це часто не видно, а вилізає вже в експлуатації.

Як налаштувати Wake-on-LAN сервер у Linux

У Linux треба перевірити, що інтерфейс підтримує WoL, увімкнути режим пробудження по magic packet і зберегти це після перезавантаження. Якщо драйвер або network manager скидає параметр, після наступного reboot Wake-on-LAN сервер знову стане недоступним.

Спочатку знайти мережевий інтерфейс:

ip link

Потім перевірити підтримку Wake-on-LAN:

sudo ethtool eth0

У виводі важливі два рядки:

Supports Wake-on: pumbg
Wake-on: g

Літера g означає пробудження по magic packet. Якщо support є, але активний режим інший або вимкнений, його можна ввімкнути так:

sudo ethtool -s eth0 wol g

Перевірка повторним викликом:

sudo ethtool eth0

Щоб параметр не зникав після restart, потрібен постійний механізм. Найпростіший варіант – systemd unit:

[Unit]
Description=Enable Wake-on-LAN on eth0
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s eth0 wol g

[Install]
WantedBy=multi-user.target

Зберегти, наприклад, як /etc/systemd/system/wol.service, потім увімкнути:

sudo systemctl daemon-reload
sudo systemctl enable wol.service
sudo systemctl start wol.service

Іноді краще прив’язувати це не до загального boot, а до конкретного менеджера мережі. NetworkManager, systemd-networkd або драйвер NIC можуть переписати параметр уже після запуску сервісу. Якщо WoL ніби вмикається, але після ребута знову d, шукати треба саме там.

Як надіслати magic packet

Щоб увімкнути Wake-on-LAN сервер, достатньо знати MAC-адресу його Ethernet-інтерфейсу і мати вузол у тій самій мережі або маршрут до broadcast-домену. Для локальної перевірки підійде будь-який Linux-хост, NAS або маршрутизатор з shell-доступом.

На Debian або Ubuntu часто використовують пакет wakeonlan:

sudo apt install wakeonlan
wakeonlan AA:BB:CC:DD:EE:FF

Альтернатива – etherwake:

sudo apt install etherwake
sudo etherwake AA:BB:CC:DD:EE:FF

Якщо пакет іде через UDP, зазвичай використовують порти 7 або 9, але сам по собі номер порту не магічний. NIC реагує на вміст кадру, а не на красиве число в firewall rule. Саме тому інколи WoL працює навіть там, де очікували інший порт.

Як перевірити, що Wake-on-LAN сервер справді працює

Перевірка складається з двох частин: чи активний WoL на самому сервері і чи доходить пакет від відправника. Обидва тести потрібні. Якщо дивитися лише на Linux, можна пропустити проблему з broadcast у мережі. Якщо дивитися лише на трафік, легко не помітити, що NIC вже відключена після shutdown.

  1. На сервері виконати
    sudo ethtool eth0

    і переконатися, що видно Wake-on: g.

  2. Вимкнути машину штатно, не висмикуючи живлення.
  3. Перевірити, чи лишився link на порту комутатора або індикатор NIC.
  4. З іншого вузла надіслати magic packet.
  5. За потреби дивитися трафік на проміжному хості через tcpdump.

Для діагностики пакета підійде такий варіант:

sudo tcpdump -ni eth0 udp port 9 or udp port 7

Якщо пакет видно, а сервер не вмикається, проблема майже завжди в BIOS/UEFI, стані живлення NIC або драйвері. Якщо пакета не видно, шукати треба в комутаторі, VLAN, маршрутизаторі або правилі firewall.

Чому Wake-on-LAN сервер не працює після shutdown

Найчастіший збій – WoL працює зі sleep, але не працює після повного вимкнення. Це означає, що плата, прошивка або блок живлення не лишають потрібного стану для мережевої карти в S5. Linux тут уже ні до чого.

  • У BIOS увімкнений deep sleep, ERP, aggressive power saving або схожий режим, що знімає standby-живлення.
  • Драйвер після shutdown переводить NIC у стан без WoL.
  • Після відключення 220V плата не приймає magic packet до ручного старту.
  • MAC-адреса взята не з того інтерфейсу. Це типова плутанина на серверах з кількома NIC.
  • Пакет іде в інший VLAN або broadcast блокується маршрутизатором.

Є й більш підлий випадок: лінк на порту є, але WoL все одно не спрацьовує. Так буває, коли контролер живий фізично, але логіка пробудження вимкнена firmware. Зовні все виглядає правильно, а фактично плата слухає мережу лише до soft reboot, але не після clean shutdown.

Wake-on-LAN сервер через маршрутизатор або VPN

Підняти Wake-on-LAN сервер через інтернет можна, але не прямим broadcast ззовні в домашню мережу. Робочий підхід – зайти у VPN, а вже звідти надіслати magic packet з вузла в локальному сегменті або з самого маршрутизатора.

Причина проста: стандартний WoL добре живе всередині одного broadcast-домену. Через NAT і L3-маршрути broadcast зазвичай не проходить. Тому публікувати UDP 9 на WAN – майже завжди погана ідея. Це нестабільно, зайве і часто марно.

Для homelab нормальна схема така:

  1. Підняти VPN-доступ до домашньої мережі.
  2. Після входу виконати wakeonlan з ноутбука або телефону через внутрішній хост.
  3. Або запускати magic packet прямо на маршрутизаторі, якщо він це вміє.

Якщо в мережі є OpenWrt, задачу зручно вирішувати на самому маршрутизаторі. Це надійніше, ніж намагатися пробити broadcast через кілька рівнів NAT. Для VPN підійде і WireGuard: спочатку доступ у LAN, потім локальний WoL.

Коли краще не покладатися на Wake-on-LAN

Wake-on-LAN сервер підходить для домашнього сервера, який час від часу треба піднімати на вимогу. Але для критичних self-hosted сервісів, віддаленого storage або вузла, що має оживати після збою без участі людини, WoL занадто крихкий механізм.

Проблема в тому, що WoL не вирішує відмови живлення, зависання BIOS, збої POST і дивну поведінку після blackout. Якщо потрібне справжнє віддалене керування, дивитися треба в бік IPMI, iDRAC, iLO або хоча б smart plug з автозапуском системи після подачі живлення.

У маленькому homelab це нормально працює як побутова автоматика. Для всього, що має запускатися гарантовано, Wake-on-LAN – радше зручний бонус, а не механізм відновлення.

Що в підсумку

Wake-on-LAN закриває просту і корисну задачу: не тримати сервер увімкненим постійно, але мати можливість підняти його за кілька секунд. Якщо є підтримка в BIOS/UEFI, живий Ethernet після shutdown і збережений параметр wol g у Linux, схема працює стабільно.

Якщо ж сервер має прокидатися через інтернет, не варто воювати з WAN-broadcast. Практичніше завести VPN і слати пакет ізсередини мережі. А коли потрібен не просто старт по мережі, а справжній out-of-band контроль, Wake-on-LAN вже замалий.