HomeLab

Wake-on-LAN для домашних серверов: Руководство по настройке

23 июня 2026, 02:01
Источник: selfhosting.sh
Wake-on-LAN для домашних серверов: Руководство по настройке

Источник: selfhosting.sh


Что такое Wake-on-LAN?

Wake-on-LAN (WoL) — это стандарт сетевого взаимодействия, который позволяет включать компьютер удаленно, отправляя специальный "магический пакет" по сети. Сетевой адаптер целевой машины остается включенным в состоянии низкого потребления энергии даже тогда, когда система выключена, ожидая своего MAC-адреса в широковещательном пакете. Когда он получает магический пакет, он сигнализирует материнской плате о запуске.
Для самохостинга WoL позволяет держать сервер выключенным, когда он не нужен, и запускать его удаленно, когда это необходимо. Сервер, который работает 8 часов в день вместо 24, снижает расходы на электричество на две трети.
Получите конфигурации Docker Compose, выбор оборудования и ярлыки настройки, которые мы не публикуем в статьях. Еженедельно. Без спама.
Подписаться

Когда WoL имеет смысл

WoL идеально подходит для:
* Медиа-серверов (Jellyfin/Plex), которыми вы пользуетесь только по вечерам и в выходные
* NAS-устройств, к которым обращаются для периодических передач файлов
* Серверов разработки, которые вы запускаете по мере необходимости
* Резервных серверов, которые должны работать только в окнах резервного копирования

WoL не идеален для:
* Сервисов, которым требуется доступность 24/7 (Pi-hole, VPN, Home Assistant)
* Серверов с частыми, непредсказуемыми паттернами доступа
* Критической инфраструктуры, где время загрузки (30–90 секунд) неприемлемо

Практический подход: Запустите устройство с низким потреблением энергии, которое всегда включено (Raspberry Pi, тонкий клиент) для 24/7 сервисов и используйте WoL, чтобы разбудить ваш большой сервер, когда необходимо выполнить тяжелые нагрузки.

Настройка: Пошагово

1. Включите WoL в BIOS/UEFI

Войдите в ваш BIOS (нажмите F2, Del или F12 во время загрузки — зависит от производителя).
Ищите Wake-on-LAN в одном из следующих меню:
* Управление питанием → Wake on LAN / PCI Wake
* Расширенные настройки → Сетевая загрузка / PXE
* Удаленное управление → Wake on LAN

Точный ярлык может различаться:
* Dell: “Wake on LAN/WLAN”
* HP: “S5 Wake on LAN”
* Lenovo: “Wake on LAN” в разделе Сеть
* ASRock/ASUS: “PCI-E Wake Up” или “Power On By PCIE”
* Gigabyte: “ErP” должен быть выключен или установлен на “S5 WoL”

Критически важно: Если в вашем BIOS есть настройка “ErP” или “EuP” (директива об энергосберегающих продуктах), выключите ее. Режим ErP отключает питание на NIC в ожидании, что предотвращает работу WoL.

2. Настройте сетевой адаптер на Linux

Установите ethtool:

sudo apt install ethtool    # Debian/Ubuntu
sudo dnf install ethtool    # Fedora/RHEL

Проверьте поддержку WoL на вашем NIC:

sudo ethtool eth0 | grep -i wake

Вывод должен включать:

Supports Wake-on: pumbg
Wake-on: d

g в “Supports Wake-on” означает, что поддерживается магический пакет. Если Wake-on равно d (отключено), включите это:

sudo ethtool -s eth0 wol g

3. Сделайте настройку постоянной

Команда ethtool не сохраняется после перезагрузки. Сделайте ее постоянной с помощью службы systemd:
Создайте /etc/systemd/system/wol.service:

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

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

[Install]
WantedBy=multi-user.target

Включите ее:

sudo systemctl enable wol.service
sudo systemctl start wol.service

Альтернативно, если вы используете systemd-networkd, создайте /etc/systemd/network/50-wol.link:

[Match]
MACAddress=aa:bb:cc:dd:ee:ff

[Link]
WakeOnLan=magic

Замените MAC-адрес на фактический адрес вашего NIC (найдите его с помощью ip link show).

4. Настройте сетевой адаптер на Proxmox

Proxmox работает на Debian, поэтому тот же подход с ethtool работает. Кроме того, добавьте настройку WoL в /etc/network/interfaces:

auto vmbr0
iface vmbr0 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1
    bridge-ports eth0
    bridge-stp off
    bridge-fd 0
    post-up /usr/sbin/ethtool -s eth0 wol g

5. Запомните ваш MAC-адрес

Вам понадобится MAC-адрес сервера, чтобы отправить магические пакеты:

ip link show eth0

Ищите строку link/ether — это ваш MAC-адрес (формат: aa:bb:cc:dd:ee:ff).

Как отправить магический пакет

Из Linux

Установите wakeonlan:

sudo apt install wakeonlan    # Debian/Ubuntu

Разбудите сервер:

wakeonlan aa:bb:cc:dd:ee:ff

Чтобы отправить на конкретный широковещательный адрес (это требуется, если вы находитесь в другой подсети):

wakeonlan -i 192.168.1.255 aa:bb:cc:dd:ee:ff

Из macOS

brew install wakeonlan
wakeonlan aa:bb:cc:dd:ee:ff

Из Windows (PowerShell)

$mac = 'AABBCCDDEEFF'
$magicPacket = [byte[]](,0xFF * 6) + ([byte[]]($mac -replace '..', '0x$& ' -split ' ' | Where-Object { $_ }) * 16)
$udpClient = New-Object System.Net.Sockets.UdpClient
$udpClient.Connect([System.Net.IPAddress]::Broadcast, 9)
$udpClient.Send($magicPacket, $magicPacket.Length)
$udpClient.Close()

Из телефона

  • Android: “Wake On Lan” от Mike Webb (бесплатно в Play Store)
  • iOS: “Mocha WOL” или “RemoteBoot” (бесплатно)

Из Home Assistant

Если Home Assistant работает на устройстве, которое всегда включено, добавьте переключатель WoL в configuration.yaml:

switch:
  - platform: wake_on_lan
    mac: "AA:BB:CC:DD:EE:FF"
    name: "Домашний сервер"
    host: 192.168.1.100

Это создаст переключатель на вашей панели управления Home Assistant — нажмите на него, чтобы разбудить сервер. Вы можете автоматизировать это с помощью триггеров на основе времени или присутствия.

Удаленный WoL через Интернет

Магические пакеты WoL являются только широковещательными — они по умолчанию не проходят через маршрутизаторы или не достигают интернета. Чтобы разбудить сервер удаленно:

Вариант 1: Tailscale + всегда включенное устройство (рекомендуется)

Запустите Tailscale на всегда включенном устройстве (Raspberry Pi, тонкий клиент), которое постоянно подключено к вашей домашней сети. Подключитесь по SSH к этому устройству откуда угодно и отправьте пакет WoL оттуда.

ssh [[email protected]](<https://selfhosting.sh/cdn-cgi/l/email-protection>) "wakeonlan aa:bb:cc:dd:ee:ff"

Это самый безопасный подход — никаких портов, открытых в интернет.

Вариант 2: Переадресация портов

Перенаправьте UDP порт 9 на широковещательный адрес вашей подсети на маршрутизаторе. Это менее безопасно, и многие маршрутизаторы не поддерживают переадресацию на широковещательные адреса.

Вариант 3: VPN

Если вы работаете с WireGuard или другим VPN на всегда включенном устройстве, подключитесь к VPN и отправьте магический пакет изнутри вашей сети.

Автоматизация пробуждения и сна

Запланированное пробуждение

Некоторые прошивки BIOS/UEFI поддерживают возможность пробуждения RTC (Real-Time Clock) — система включается в запланированное время без каких-либо сетевых пакетов. Проверьте ваш BIOS на наличие “RTC Alarm” или “Power On By RTC.”

Автоматическая приостановка после бездействия

Настройте ваш сервер на приостановку, когда он неактивен в течение установленного времени:

# Создайте /usr/local/bin/auto-suspend.sh
#!/bin/bash
IDLE_MINUTES=30
LOAD_THRESHOLD=0.1

LOAD=$(awk '{print $1}' /proc/loadavg)
ACTIVE_CONNECTIONS=$(ss -t state established | wc -l)

if (( $(echo "$LOAD < $LOAD_THRESHOLD" | bc -l) )) && [ "$ACTIVE_CONNECTIONS" -le 1 ]; then
    systemctl suspend
fi

Добавьте в cron для проверки каждые 10 минут:

*/10 * * * * /usr/local/bin/auto-suspend.sh

Сервер будет приостанавливаться, когда нагрузка ниже 0.1 и нет активных TCP-соединений, а затем пробуждаться при следующем пакете WoL.

Экономия электроэнергии

Сценарий Среднее потребление (Вт) Годовая стоимость ($0.12/кВтч)
Сервер на 24/7 (в простое) 40W $42
Сервер на 24/7 (нагрузка) 80W $84
WoL: 8ч/день (среднее в простое) 14W ср. $15
WoL: 4ч/день (среднее в простое) 7W ср. $7
Энергопотребление в режиме ожидания (WoL включен) 1–3W $1–3
Сервер, который потребляет 40W в простое, экономит $27–35 в год, работая только по мере необходимости. За 5 лет работы это составляет $135–175 — достаточно, чтобы оплатить сервер, если бы он был восстановленным мини-ПК.

Устранение неполадок

Сервер не пробуждается

  1. Проверьте настройки BIOS. Режим ErP/EuP должен быть отключен. WoL должен быть включен.
  2. Проверьте ethtool. Запустите sudo ethtool eth0 | grep Wake — если Wake-on: d, WoL отключен на уровне ОС.
  3. Проверьте светодиод NIC. Когда сервер выключен, светодиод Ethernet-порта должен оставаться включенным (что указывает на питание в ожидании). Если он выключен, WoL не включен в BIOS или источник питания не подает питание в ожидании.
  4. Проверьте кабель. WoL требует проводного Ethernet-соединения. Wi-Fi WoL существует, но ненадежен на большинстве аппаратных средств.
  5. Проверьте MAC-адрес. Опечатка в MAC-адресе является самой распространенной причиной проблемы “не работает”.

WoL работает из режима выключения, но не из режима сна

Некоторые NIC теряют настройки WoL при переходе в режим сна/возвращения. Подход с использованием службы systemd (в шаге 3) должен это решить, но возможно, вам также потребуется добавить хук восстановления:
Создайте /usr/lib/systemd/system-sleep/wol.sh:

#!/bin/bash
if [ "$1" = "post" ]; then
    /usr/sbin/ethtool -s eth0 wol g
fi

sudo chmod +x /usr/lib/systemd/system-sleep/wol.sh

WoL работает в локальной сети, но не удаленно

Магические пакеты не проходят через маршрутизаторы. Используйте один из методов удаленного WoL, описанных выше (Tailscale, VPN или переадресация портов).

FAQ

Работает ли WoL через Wi-Fi?

Технически некоторые Wi-Fi адаптеры поддерживают WoWLAN (Wake on Wireless LAN), но это ненадежно и зависит от адаптера, драйвера и точки доступа. Всегда используйте проводное Ethernet-соединение для WoL.

Сколько энергии использует ожидание WoL?

1–3 Вт. Ожидаемая мощность сетевого адаптера поступает от 5 Вт линии ожидания источника питания. Это незначительно — примерно $1–3 в год.

Могу ли я разбудить сервер за роутером через интернет?

Прямо нет, так как магические пакеты передаются по широковещательной рассылке и не проходят через роутеры. Используйте Tailscale, VPN или переадресацию порта на всегда включенное устройство, которое может отправить пакет WoL локально.

Поддерживают ли все материнские платы WoL?

Большинство материнских плат, выпущенных после 2010 года, поддерживают WoL. Проверьте настройки в BIOS. Бюджетные или более старые платы могут поддерживать WoL только из спящего режима (S3), но не из полного выключения (S5).

Связанные