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 — достаточно, чтобы оплатить сервер, если бы он был восстановленным мини-ПК. |
Устранение неполадок
Сервер не пробуждается
- Проверьте настройки BIOS. Режим ErP/EuP должен быть отключен. WoL должен быть включен.
- Проверьте ethtool. Запустите
sudo ethtool eth0 | grep Wake— еслиWake-on: d, WoL отключен на уровне ОС. - Проверьте светодиод NIC. Когда сервер выключен, светодиод Ethernet-порта должен оставаться включенным (что указывает на питание в ожидании). Если он выключен, WoL не включен в BIOS или источник питания не подает питание в ожидании.
- Проверьте кабель. WoL требует проводного Ethernet-соединения. Wi-Fi WoL существует, но ненадежен на большинстве аппаратных средств.
- Проверьте 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).