mikrotik-wiki.ru
Главная
Загрузка...

Wake-on-LAN через MikroTik

RouterOS 7.xTools8 мин130 мар. 2026 г.
TelegramVK

Wake-on-LAN через MikroTik — удалённое включение компьютеров

Wake-on-LAN (WoL) — технология удалённого включения компьютера через сеть. MikroTik RouterOS имеет встроенную команду /tool/wol, которая отправляет «магический пакет» (Magic Packet) на MAC-адрес целевого устройства. Это позволяет включать рабочие станции и серверы удалённо: через VPN из дома, по расписанию через Scheduler или по команде из Telegram-бота. Технология простая, но требует правильной настройки как на стороне роутера, так и на стороне компьютера (BIOS, сетевая карта, операционная система).

Все команды приведены для RouterOS 7.20+.

Описание

Как работает Wake-on-LAN

WoL основан на отправке специального Ethernet-фрейма — Magic Packet. Этот пакет содержит:

  1. 6 байт 0xFF (синхронизирующая последовательность).
  2. 16 повторений MAC-адреса целевого устройства (всего 96 байт MAC).

Общий размер Magic Packet — 102 байта (6 + 96).

Сетевая карта компьютера, даже когда основная система выключена, находится в режиме ожидания и анализирует входящие фреймы. Обнаружив Magic Packet со своим MAC-адресом, карта подаёт сигнал на материнскую плату, и компьютер включается.

Требования:

  • Материнская плата с поддержкой WoL (практически все современные).
  • Включённая функция WoL в BIOS/UEFI.
  • Проводное подключение Ethernet (Wi-Fi WoL поддерживается не везде).
  • Сетевая карта, подключённая к питанию в выключенном состоянии (ATX-стандарт).
  • Компьютер должен быть «выключен» (shutdown), а не полностью обесточен.

Ограничения WoL

  • Magic Packet — broadcast на L2-уровне. Он не маршрутизируется между подсетями без специальных настроек.
  • Wi-Fi: большинство Wi-Fi адаптеров не поддерживают WoL в выключенном состоянии (карта теряет ассоциацию с AP при выключении).
  • Через интернет: требуется port forwarding или VPN, так как Magic Packet не проходит через NAT.

Настройка

Шаг 1: Отправка WoL с MikroTik

Базовая команда — одна строка:

[admin@MikroTik] >
# Включить компьютер по MAC-адресу
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# Указать конкретный интерфейс (если нет bridge)
/tool/wol interface=ether2 mac=AA:BB:CC:DD:EE:FF

Параметры:

  • interface — интерфейс, через который отправляется Magic Packet (обычно bridge или конкретный Ethernet-порт).
  • mac — MAC-адрес сетевой карты целевого компьютера.

Шаг 2: Узнать MAC-адрес компьютера

Если компьютер сейчас включён, его MAC-адрес можно узнать из DHCP-лизов или ARP-таблицы:

[admin@MikroTik] >
# Из DHCP-лизов
/ip/dhcp-server/lease/print where host-name~"DESKTOP"
# ADDRESS         MAC-ADDRESS        HOST-NAME       STATUS
# 192.168.88.100  AA:BB:CC:DD:EE:FF  DESKTOP-WORK    bound

# Из ARP-таблицы
/ip/arp/print where address=192.168.88.100
# ADDRESS          MAC-ADDRESS        INTERFACE
# 192.168.88.100   AA:BB:CC:DD:EE:FF  bridge

# Из таблицы bridge hosts
/interface/bridge/host/print where mac-address=AA:BB:CC:DD:EE:FF

Рекомендуется записать MAC-адрес и сохранить его в комментарии DHCP-лиза:

[admin@MikroTik] >
/ip/dhcp-server/lease/set [find host-name~"DESKTOP"] \
  comment="Work PC - WoL target"

Сценарий 1: Включение рабочего ПК из дома через VPN

Вы подключаетесь к офисной сети через WireGuard VPN и хотите включить рабочий компьютер.

Предварительные условия:

  • WireGuard VPN настроен и работает (из дома вы попадаете в офисную подсеть).
  • MAC-адрес рабочего ПК известен.
[admin@MikroTik] >
# На офисном роутере: включить ПК после подключения по VPN
# Выполняется из терминала WinBox/SSH через VPN-соединение
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

Автоматизация — скрипт для удобного вызова:

[admin@MikroTik] >
/system/script
add name=wake-work-pc dont-require-permissions=no source={
  /tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF
  :log info "WoL sent to Work PC (AA:BB:CC:DD:EE:FF)"
}

# Запуск из CLI
/system/script/run wake-work-pc

Сценарий 2: Включение сервера по расписанию

Сервер резервного копирования нужен только ночью. Включаем его в 23:00, а через скрипт на самом сервере он выключается после завершения бэкапа.

[admin@MikroTik] >
# Включить сервер каждый день в 23:00
/system/scheduler
add name=wake-backup-server start-time=23:00:00 interval=1d \
  on-event={
    /tool/wol interface=bridge mac=11:22:33:44:55:66
    :log info "WoL sent to backup server"
  }

Для нескольких серверов:

[admin@MikroTik] >
/system/scheduler
add name=wake-all-servers start-time=23:00:00 interval=1d \
  on-event={
    /tool/wol interface=bridge mac=11:22:33:44:55:66
    :delay 2s
    /tool/wol interface=bridge mac=11:22:33:44:55:77
    :delay 2s
    /tool/wol interface=bridge mac=11:22:33:44:55:88
    :log info "WoL sent to all backup servers"
  }

Сценарий 3: Включение через Telegram-бот

Отправьте команду боту в Telegram — роутер включит ПК. Требуется настроенный Telegram-бот и скрипт опроса.

Скрипт проверки команд Telegram:

[admin@MikroTik] >
/system/script
add name=telegram-wol-bot dont-require-permissions=no source={
  :global telegramBotToken "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
  :global telegramChatId "-1001234567890"
  :global lastUpdateId
  :if ([:typeof $lastUpdateId] = "nothing") do={ :global lastUpdateId 0 }
  # Получить обновления от Telegram
  :do {
    :local url ("https://api.telegram.org/bot".$telegramBotToken.\
      "/getUpdates\?offset=".$lastUpdateId."&limit=1")
    :local response [/tool/fetch url=$url mode=https as-value output=user]
    :local data ($response->"data")
    # Простая проверка наличия команды /wol
    :if ([:find $data "/wol"] > 0) do={
      /tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF
      :log info "Telegram: WoL command received, Magic Packet sent"
      # Отправить подтверждение
      /tool/fetch url=("https://api.telegram.org/bot".$telegramBotToken.\
        "/sendMessage\?chat_id=".$telegramChatId.\
        "&text=Magic Packet sent to Work PC") \
        mode=https keep-result=no
    }
  } on-error={
    :log warning "Telegram WoL bot: fetch error"
  }
}

# Проверка каждые 30 секунд
/system/scheduler
add name=telegram-wol-check interval=30s \
  on-event="/system/script/run telegram-wol-bot"

WoL через интернет (без VPN)

Отправить WoL через интернет напрямую — нетривиальная задача, поскольку Magic Packet — это L2 broadcast, который не маршрутизируется.

Вариант 1: через направленный broadcast (directed broadcast)

Роутер принимает UDP-пакет на определённый порт и конвертирует его в L2 broadcast:

[admin@MikroTik] >
# На роутере: перенаправить UDP-порт 9 (WoL) на broadcast-адрес
/ip/firewall/nat
add chain=dstnat protocol=udp dst-port=9 \
  in-interface=ether1-WAN \
  action=dst-nat to-addresses=192.168.88.255 to-ports=9 \
  comment="WoL from internet"

Внимание: это небезопасно! Любой, кто знает ваш внешний IP, может отправлять пакеты в вашу локальную сеть. Рекомендуется использовать VPN.

Вариант 2: через REST API роутера (RouterOS 7)

Настройте REST API на роутере и вызывайте /tool/wol через HTTP-запрос (требуется Let's Encrypt сертификат и аутентификация):

[admin@MikroTik] >
# Включить REST API (www-ssl)
/ip/service
set www-ssl disabled=no port=443

# Теперь можно отправлять WoL через REST API:
# curl -k -u admin:password \
#   -X POST https://your-router-ip/rest/tool/wol \
#   -d '{"interface":"bridge","mac":"AA:BB:CC:DD:EE:FF"}'

Рекомендация: самый безопасный способ удалённого WoL — через VPN. Подключились к VPN → отправили WoL → компьютер включился.

Настройка компьютера

BIOS/UEFI

  1. Войдите в BIOS/UEFI (обычно клавиша F2, Del, F12 при включении).
  2. Найдите раздел Power Management или Advanced → Wake On LAN.
  3. Включите Wake on LAN (может называться: Wake on PME, Wake on PCI, Resume on LAN, Power On By PCI-E).
  4. Для WoL из состояния S5 (полностью выключен) может потребоваться включить Deep Sleep → Disabled или ErP Ready → Disabled.

Windows 10/11

  1. Откройте Device ManagerNetwork Adapters → выберите сетевую карту.
  2. Вкладка Advanced: убедитесь, что Wake on Magic Packet = Enabled.
  3. Вкладка Power Management: включите Allow this device to wake the computer и Only allow a magic packet to wake the computer.
  4. В Settings → System → Power & sleep → Additional power settings → Choose what the power buttons do: отключите Fast Startup (быстрый запуск), так как он может мешать WoL.

Проверка через PowerShell:

code
powershell -Command "Get-NetAdapterPowerManagement | Format-List"

Linux (Ubuntu/Debian)

Установите ethtool и проверьте поддержку:

code
sudo ethtool eth0 | grep -i wake
# Supports Wake-on: pumbg
# Wake-on: g          <-- "g" = Magic Packet enabled

Если WoL выключен:

code
sudo ethtool -s eth0 wol g

Для постоянной настройки создайте systemd-сервис или добавьте в /etc/network/interfaces:

code
auto eth0
iface eth0 inet dhcp
  ethernet-wol g

Проверка

[admin@MikroTik] >
# Отправить WoL и проверить результат
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# Проверить, что компьютер появился в сети (через некоторое время)
/ping 192.168.88.100 count=5

# Проверить ARP-таблицу
/ip/arp/print where address=192.168.88.100

# Проверить DHCP-лизы
/ip/dhcp-server/lease/print where mac-address=AA:BB:CC:DD:EE:FF
# STATUS: bound  <-- компьютер включился и получил IP

Обычно компьютеру требуется 15–60 секунд от получения Magic Packet до полной загрузки ОС и получения IP-адреса по DHCP.

Типичные ошибки

1. Компьютер не включается по WoL

Контрольный список:

[admin@MikroTik] >
# 1. Проверьте, что MAC-адрес правильный
/ip/dhcp-server/lease/print where host-name~"DESKTOP"

# 2. Проверьте, что interface правильный (bridge, а не ether)
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# 3. Проверьте, что компьютер подключён кабелем
/interface/ethernet/print where name=ether2
# Светодиод link на порту должен гореть даже при выключенном ПК

Если светодиод link не горит при выключенном ПК — проблема в BIOS (WoL не активирован) или в блоке питания (не подаёт standby-питание на сетевую карту).

2. WoL работает только из локальной сети

Проблема: Magic Packet — L2 broadcast, он не проходит через маршрутизатор в другую подсеть.

Решение: отправляйте WoL с роутера, который находится в одной подсети с целевым компьютером. Если вы подключены удалённо — зайдите на роутер через VPN/SSH и выполните /tool/wol оттуда.

3. WoL не работает после полного отключения питания

Проблема: компьютер был обесточен (выдернут из розетки или отключён сетевой фильтр). После подачи питания сетевая карта находится в неинициализированном состоянии и не слушает Magic Packet.

Решение: после восстановления питания компьютер нужно включить вручную хотя бы один раз. После штатного выключения (shutdown) WoL будет работать.

4. Fast Startup мешает WoL (Windows)

Проблема: Windows 10/11 с включённым Fast Startup (быстрый запуск) при «выключении» на самом деле уходит в гибернацию. Некоторые сетевые карты в этом режиме не принимают WoL.

Решение: отключите Fast Startup в настройках Windows Power Options.

5. Неправильный interface в команде WoL

Проблема: указан физический интерфейс (ether2), а компьютер подключён к bridge. Или наоборот.

Решение:

[admin@MikroTik] >
# Если порты объединены в bridge — используйте bridge
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# Если прямое подключение без bridge — используйте физический порт
/tool/wol interface=ether2 mac=AA:BB:CC:DD:EE:FF

6. Wi-Fi устройства не поддерживают WoL

Проблема: Magic Packet отправлен, но ноутбук, подключённый по Wi-Fi, не включается.

Объяснение: при выключении ноутбука Wi-Fi модуль теряет ассоциацию с точкой доступа. Без активного Wi-Fi соединения пакет не может быть доставлен. WoL по Wi-Fi работает только в режиме сна (sleep/hibernate) и только если драйвер сетевой карты поддерживает WoWLAN (Wake on Wireless LAN).

Решение: для надёжного WoL используйте проводное Ethernet-подключение.

Wake-on-LAN — простая, но чрезвычайно полезная функция. Один раз правильно настроив BIOS и сетевую карту, вы получаете возможность удалённо включать компьютеры из любой точки мира (через VPN). В сочетании с MikroTik Scheduler и скриптами WoL позволяет автоматизировать включение серверов по расписанию, экономя электроэнергию и продлевая жизнь оборудования.

[admin@MikroTik] >
# Включить компьютер по MAC-адресу
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# Указать конкретный интерфейс (если нет bridge)
/tool/wol interface=ether2 mac=AA:BB:CC:DD:EE:FF
# Из DHCP-лизов
/ip/dhcp-server/lease/print where host-name~"DESKTOP"
# ADDRESS         MAC-ADDRESS        HOST-NAME       STATUS
# 192.168.88.100  AA:BB:CC:DD:EE:FF  DESKTOP-WORK    bound

# Из ARP-таблицы
/ip/arp/print where address=192.168.88.100
# ADDRESS          MAC-ADDRESS        INTERFACE
# 192.168.88.100   AA:BB:CC:DD:EE:FF  bridge

# Из таблицы bridge hosts
/interface/bridge/host/print where mac-address=AA:BB:CC:DD:EE:FF
/ip/dhcp-server/lease/set [find host-name~"DESKTOP"] \
  comment="Work PC - WoL target"
# На офисном роутере: включить ПК после подключения по VPN
# Выполняется из терминала WinBox/SSH через VPN-соединение
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF
/system/script
add name=wake-work-pc dont-require-permissions=no source={
  /tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF
  :log info "WoL sent to Work PC (AA:BB:CC:DD:EE:FF)"
}

# Запуск из CLI
/system/script/run wake-work-pc
# Включить сервер каждый день в 23:00
/system/scheduler
add name=wake-backup-server start-time=23:00:00 interval=1d \
  on-event={
    /tool/wol interface=bridge mac=11:22:33:44:55:66
    :log info "WoL sent to backup server"
  }
/system/scheduler
add name=wake-all-servers start-time=23:00:00 interval=1d \
  on-event={
    /tool/wol interface=bridge mac=11:22:33:44:55:66
    :delay 2s
    /tool/wol interface=bridge mac=11:22:33:44:55:77
    :delay 2s
    /tool/wol interface=bridge mac=11:22:33:44:55:88
    :log info "WoL sent to all backup servers"
  }
/system/script
add name=telegram-wol-bot dont-require-permissions=no source={
  :global telegramBotToken "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
  :global telegramChatId "-1001234567890"
  :global lastUpdateId
  :if ([:typeof $lastUpdateId] = "nothing") do={ :global lastUpdateId 0 }
  # Получить обновления от Telegram
  :do {
    :local url ("https://api.telegram.org/bot".$telegramBotToken.\
      "/getUpdates\?offset=".$lastUpdateId."&limit=1")
    :local response [/tool/fetch url=$url mode=https as-value output=user]
    :local data ($response->"data")
    # Простая проверка наличия команды /wol
    :if ([:find $data "/wol"] > 0) do={
      /tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF
      :log info "Telegram: WoL command received, Magic Packet sent"
      # Отправить подтверждение
      /tool/fetch url=("https://api.telegram.org/bot".$telegramBotToken.\
        "/sendMessage\?chat_id=".$telegramChatId.\
        "&text=Magic Packet sent to Work PC") \
        mode=https keep-result=no
    }
  } on-error={
    :log warning "Telegram WoL bot: fetch error"
  }
}

# Проверка каждые 30 секунд
/system/scheduler
add name=telegram-wol-check interval=30s \
  on-event="/system/script/run telegram-wol-bot"
# На роутере: перенаправить UDP-порт 9 (WoL) на broadcast-адрес
/ip/firewall/nat
add chain=dstnat protocol=udp dst-port=9 \
  in-interface=ether1-WAN \
  action=dst-nat to-addresses=192.168.88.255 to-ports=9 \
  comment="WoL from internet"
# Включить REST API (www-ssl)
/ip/service
set www-ssl disabled=no port=443

# Теперь можно отправлять WoL через REST API:
# curl -k -u admin:password \
#   -X POST https://your-router-ip/rest/tool/wol \
#   -d '{"interface":"bridge","mac":"AA:BB:CC:DD:EE:FF"}'
powershell -Command "Get-NetAdapterPowerManagement | Format-List"
sudo ethtool eth0 | grep -i wake
# Supports Wake-on: pumbg
# Wake-on: g          <-- "g" = Magic Packet enabled
sudo ethtool -s eth0 wol g
auto eth0
iface eth0 inet dhcp
  ethernet-wol g
# Отправить WoL и проверить результат
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# Проверить, что компьютер появился в сети (через некоторое время)
/ping 192.168.88.100 count=5

# Проверить ARP-таблицу
/ip/arp/print where address=192.168.88.100

# Проверить DHCP-лизы
/ip/dhcp-server/lease/print where mac-address=AA:BB:CC:DD:EE:FF
# STATUS: bound  <-- компьютер включился и получил IP
# 1. Проверьте, что MAC-адрес правильный
/ip/dhcp-server/lease/print where host-name~"DESKTOP"

# 2. Проверьте, что interface правильный (bridge, а не ether)
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# 3. Проверьте, что компьютер подключён кабелем
/interface/ethernet/print where name=ether2
# Светодиод link на порту должен гореть даже при выключенном ПК
# Если порты объединены в bridge — используйте bridge
/tool/wol interface=bridge mac=AA:BB:CC:DD:EE:FF

# Если прямое подключение без bridge — используйте физический порт
/tool/wol interface=ether2 mac=AA:BB:CC:DD:EE:FF
Tools / Wake-on-LAN через MikroTik