У нас есть Windows 2016 Server с ролью WDS. Мы хотим, чтобы этот WDS загружался только с UEFI (или с устаревшей загрузкой) для развертывания Windows 10 x64 с MDT. Наша служба DHCP находится на аппаратном маршрутизаторе (Clavister).

Когда опция DHCP next-server = ip_of_wds_server и опция 60 = PXEClient выглядит следующим образом:

  1. Сетевой стек UEFI получает IP и другие параметры от DHCP.
  2. UEFI пытается соединиться с WDS через порт 4011 (proxyDHCP).
  3. proxyDHCP на WDS ответил с именем загрузочного файла.
  4. UEFI делает TFTP-запрос, скачивает загрузочный файл и все хорошо.

Но через некоторое время я обнаружил, что загрузка PXE перестала работать без какой-либо причины. Я проверил с помощью Wireshark и увидел, что proxyDHCP отвечает очень медленно - UEFI отправил 4 запроса, завершился по таймауту и только после этого WDS сделал ответ (4 раза :-).

Хорошо, я начал гуглить, изменил некоторые настройки и нашел это:

когда опция DHCP 60 НЕ установлена и опция 67 = boot\x64\wdsmgfw.efi - тогда UEFI НЕ пытается подключиться к WDS через порт 4011. Вместо этого UEFI прямо пытается сделать TFTP-запрос на загрузочный файл напрямую, но с неверным именем

boot\x64\wdsmgfw.efi*\here_some\_random/_digits_and_\symbols

Получен "файл не найден" и процесс остановлен.

В Wireshark я увидел, что символ звездочки (*) действительно присутствует сразу после «.efi» в RAW DHCP-ответе. Может быть, UEFI нужен какой-нибудь символ конца строки?

Кто-нибудь может объяснить это поведение UEFI? Я попробовал настоящий аппаратный ПК и Vmware VM - все то же самое.

0