Я столкнулся со странной проблемой при настройке функции пробуждения по локальной сети в нашей корпоративной сети.
Для пробуждения рабочей станции справедливо следующее:
- WOL включен в BIOS и в настройках сетевой карты
- Маршрутизатор всегда будет назначать один и тот же IP-адрес этой рабочей станции (MAC-адрес).
- Сетевая карта настроена на автоматическое получение IP-адреса.
Рабочая станция, которая отправляет команду WOL, находится в той же подсети, что и рабочая станция, которую нужно разбудить. Теперь, если я попытаюсь разбудить машину, произойдет следующее:
Начальное состояние: Машина была выключена в течение одного или нескольких дней.
- Если я отправляю команду WOL через сетевую трансляцию (разрешено только для тестирования), машина успешно просыпается.
- Если я отправлю команду WOL непосредственно на эту рабочую станцию (используя IP-адрес, маску подсети, DNS-имя), машина не проснется.
- Только если я хотя бы один раз запустил машину вручную, ее можно будет впоследствии разбудить, отправив команду WOL непосредственно на ее IP-адрес.
Есть ли у кого-нибудь идея, почему устройство нельзя разбудить напрямую через его IP-адрес, если оно было выключено в течение длительного времени, и почему это работает, если я использую «Broadcast» в качестве метода WOL?
Любой ответ будет высоко оценен.
решение1
Как упоминается в комментарии @ott, вы не можете отправлять одноадресный трафик на машину, которая в данный момент не активна в сети. «Активен в сети» означает разные вещи для разных устройств... для устройства уровня 3, такого как ваш ПК или маршрутизатор, это означает «это устройство взаимодействовало с машиной в какой-то момент за последние 4 часа» (зависит от тайм-аута ARP), для устройства уровня 2, такого как коммутатор, это означает «коммутатор видел пакет с этим исходным MAC-адресом в какой-то момент за последние 5 минут» (зависит от времени старения MAC).
Вы утверждаете, что одноадресный WOL работает, когда устройство было включено и затем выключено, но вы не утверждаете, перестает ли он работать в какой-то момент после выключения машины. Это работает, потому что маршрутизатор (или ПК, генерирующий пакет WOL, если он находится в той же подсети) имеет запись arp (тайм-аут 4 часа) и может создать пакет, предназначенный для правильной машины, однако коммутатор либо знает порт, к которому принадлежит mac-адрес (WOL отправлен в течение времени старения mac), либо уже истек тайм-аут этого mac-адреса, поэтому он обрабатывает неизвестное назначение как широковещательную передачу. После истечения времени записи arp маршрутизатор (или ПК) не сможет инкапсулировать пакет WOL, поскольку ему нечего поместить в поле dest-mac.
Чтобы это работало, вам нужно использовать широковещательные рассылки, другого надежного способа нет. Чтобы WOL работал в сети, отличной от той, к которой подключен ваш сервер, вам нужно использовать направленные широковещательные пакеты (одноадресные пакеты, отправляемые на широковещательный адрес удаленной сети, правильно настроенный удаленный маршрутизатор разрешит пакет и отправит его как широковещательную рассылку в указанную сеть).