WoL работает путем отправки специально отформатированного пакета Ethernet на MAC-адрес вашего компьютера. Если вы находитесь в локальной сети (LAN), вы можете напрямую общаться с MAC-адресом вашего компьютера, и WoL работает все время довольно счастливо.
Из любой точки локальной сети вы полагаетесь на IP-маршрутизацию для пересылки пакетов, инкапсулированных в IP, по сети, чтобы добраться до вашего компьютера. Эта пересылка зависит от ARP (Address Resolution Protocol) на последнем переходе (ваш маршрутизатор к вашему компьютеру).
Ваш маршрутизатор ведет учет того, какие IP-адреса сопоставлены с какими MAC-адресами - таблицей ARP, - которые периодически удаляют устаревшие записи.
При нормальной работе сети маршрутизатор сначала отправляет пакет ARP WHOHAS всем компьютерам в сети (MAC-адрес ff:ff:ff:ff:ff:ff), запрашивая компьютер, на котором указан IP-адрес, указанный в пакете, чтобы ответить Пакет ARP HAS заявляет, что имеет рассматриваемый IP-адрес. Это кэшируется в таблице ARP в течение определенного периода времени.
Если компьютер переключен (или находится в спящем режиме), сетевой стек больше не может отвечать ни на что, поэтому запрос ARP WHOHAS никогда не выполняется, поэтому маршрутизатор не может определить, куда отправить пакет, и, следовательно, WoL завершается ошибкой.
Есть 2 возможных пути решения этой проблемы:
- Настройте статическую запись ARP на маршрутизаторе
Это, безусловно, самое простое, если у маршрутизатора есть возможность постоянного сохранения сопоставления MAC-> IP. Это избавит ARP от необходимости определять MAC-адрес вашего компьютера.
- Имейте другое сетевое устройство в локальной сети, которое никогда не спит и способно выполнить WoL для вас.
Кажется, на самом деле победить объект, но это может быть единственный способ сделать удаленный WoL.