Компьютер, который при включении вместо привычного логотипа Windows выводит строку PXE-E51: No DHCP or proxyDHCP offers were received, пытается выполнить загрузку ОС по сети, но не получает ответ от сервера. Именно так чаще всего выглядит первая встреча администратора с технологией сетевой загрузки — либо как ошибка, либо как задача, которую нужно внедрить. В обоих случаях требуется понимать, какие компоненты участвуют в процессе и в каком порядке они взаимодействуют.
Сетевая загрузка позволяет запускать операционную систему на машине без локального диска или с пустым диском: образ системы, установщик или диагностическая среда передаются по локальной сети. Технология применяется для массового развёртывания Windows и Linux, работы бездисковых терминалов, восстановления систем и тестирования ПО. В этой статье разберём принцип работы PXE, необходимую инфраструктуру, настройку клиента и типичные сбои.
Как работает загрузка по сети: суть технологии PXE
В основе сетевой загрузки лежит стандарт PXE (Preboot Execution Environment), поддерживаемый сетевыми адаптерами и прошивками BIOS/UEFI. Когда машина стартует в режиме загрузки по сети, встроенный в сетевую карту клиент выполняет последовательность шагов: запрашивает IP-адрес, получает адрес сервера загрузки и имя загрузочного файла, скачивает его и передаёт ему управление.
Процесс разбивается на несколько стадий, и сбой на любой из них останавливает загрузку с характерной ошибкой:
- 🔌 DHCP-запрос — клиент получает IP-адрес и параметры сетевой загрузки (адрес TFTP-сервера, имя файла загрузчика);
- 📥 Загрузка по TFTP — скачивается первичный загрузчик, например
pxelinux.0илиbootmgfw.efi; - 📋 Чтение конфигурации — загрузчик получает меню или сценарий установки;
- 💿 Передача образа — по TFTP, HTTP, NFS или SMB доставляется ядро ОС, установщик или полноценная система.
Важно понимать различие режимов: в Legacy BIOS и в UEFI используются разные загрузочные файлы, и сервер должен отдавать корректный вариант в зависимости от архитектуры клиента. Несовпадение режимов — одна из самых частых причин, когда машина «не видит» сетевую загрузку, хотя сервер настроен правильно.
Необходимая инфраструктура: серверы и службы
Для организации загрузки ОС по сети потребуется минимум два логических сервиса — их можно разместить на одной машине. Первый — DHCP-сервер, который помимо выдачи адресов передаёт клиентам опции сетевой загрузки. Второй — TFTP-сервер, отдающий загрузочные файлы. Для передачи больших образов дополнительно поднимают HTTP-, NFS- или SMB-доступ, поскольку TFTP медленный и не предназначен для гигабайтных файлов.
Готовые комплексные решения заметно упрощают задачу. В мире Windows это роль WDS (Службы развёртывания Windows) и системы управления вроде Microsoft Configuration Manager. В Linux-окружении классическая связка — dnsmasq или ISC DHCP плюс TFTP и загрузчик PXELINUX из пакета Syslinux, а для массовых установок — Cobbler или Foreman.
⚠️ Внимание: если в сети уже работает DHCP-сервер (например, на маршрутизаторе), запуск второго DHCP-сервера приведёт к конфликтам и непредсказуемой выдаче адресов. Либо добавьте опции PXE в существующий сервер, либо используйте режим proxyDHCP, который отвечает только на загрузочные запросы и не выдаёт адреса.
Настройка клиентской машины
Со стороны клиента настройка сводится к включению сетевой загрузки в прошивке. Вам нужно войти в BIOS/UEFI (обычно клавишей Del, F2 или F12 при включении — точная клавиша зависит от производителя) и активировать опцию вроде Network Boot, PXE Boot или Boot from LAN. Затем сетевой адаптер перемещается на первое место в приоритете загрузки либо выбирается разово через boot-меню.
В системах с UEFI проверьте два момента. Во-первых, функция Secure Boot может блокировать неподписанные сетевые загрузчики — при сбоях её временно отключают или используют подписанный загрузчик shim. Во-вторых, убедитесь, что включён именно UEFI-режим сетевой загрузки, если сервер настроен под UEFI-файлы, а не Legacy.
Пошаговая настройка сервера на примере Linux
Рассмотрим общий порядок развёртывания минимального PXE-сервера на Linux. Конкретные пути и имена пакетов различаются между дистрибутивами, поэтому сверяйтесь с документацией вашей системы — логика при этом остаётся одинаковой.
Сначала устанавливаются пакеты: DHCP-сервер (или dnsmasq), TFTP-сервер и файлы Syslinux. Затем в конфигурации DHCP указываются параметры сетевой загрузки — адрес TFTP-сервера и имя загрузочного файла. Для dnsmasq базовая настройка может выглядеть так:
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/srv/tftp
Далее в корневой каталог TFTP копируются загрузчик pxelinux.0, необходимые библиотеки Syslinux и создаётся файл конфигурации меню в каталоге pxelinux.cfg. После этого туда же помещаются ядро и initrd устанавливаемой системы, а полный дистрибутив публикуется по HTTP или NFS. Перезапуск служб — и сервер готов принимать клиентов.
☑️ Проверка готовности PXE-сервера
Тестирование удобно начинать с виртуальной машины: в VirtualBox или VMware сетевая загрузка включается в настройках виртуального адаптера, и вам не нужен физический компьютер для отладки конфигурации.
Сравнение решений для сетевой загрузки
Выбор инструмента зависит от масштаба задачи и преобладающей ОС в инфраструктуре. Ниже — ориентировочное сравнение популярных вариантов.
| Решение | Платформа | Подходящий сценарий | Сложность |
|---|---|---|---|
| WDS | Windows Server | Развёртывание Windows в домене | Средняя |
| dnsmasq + Syslinux | Linux | Небольшие сети, установка Linux | Низкая |
| Cobbler | Linux | Автоматизация установки множества серверов | Средняя |
| iPXE | Кроссплатформенно | Загрузка по HTTP, скрипты, цепочка загрузчиков | Средняя |
| FOG Project | Linux | Клонирование и развёртывание образов дисков | Низкая–средняя |
Отдельного упоминания заслуживает iPXE — расширенный открытый загрузчик, который умеет получать образы по HTTP, выполнять скрипты и подключаться по iSCSI. Его часто используют как второй этап после классического PXE, чтобы обойти ограничения TFTP по скорости.
Типичные ошибки и их диагностика
Коды ошибок PXE указывают на стадию сбоя, что сильно упрощает поиск причины. PXE-E51 означает, что клиент не получил ответ от DHCP: проверьте, работает ли DHCP-сервер, доходят ли широковещательные запросы до него (между VLAN нужен DHCP relay / ip helper) и не блокирует ли файрвол порты. PXE-E32 — таймаут TFTP: сервер загрузки недоступен или файл отсутствует в его корневом каталоге.
Если загрузчик скачивается, но дальше ничего не происходит, возможные причины таковы: несовпадение архитектуры (UEFI-клиенту отдали BIOS-загрузчик), отсутствует файл конфигурации меню, ядро и initrd лежат не по тем путям, что указаны в меню. Полезно вручную проверить доступность файлов с другой машины любым TFTP-клиентом — это сразу отделит проблемы сервера от проблем клиента.
⚠️ Внимание: если PXE-загрузка началась случайно на обычном рабочем компьютере и мешает старту Windows, не спешите менять настройки сервера. Скорее всего, сетевая загрузка просто стоит первой в приоритете BIOS — верните локальный диск на первое место или отключите Network Boot.
Почему PXE не работает через Wi-Fi
Классический PXE реализован в прошивке проводных сетевых адаптеров и требует Ethernet-подключения. Беспроводные адаптеры, как правило, не поддерживают PXE на уровне прошивки, поэтому для загрузки по сети подключите машину кабелем. Некоторые решения (например, iPXE с поддержкой беспроводных чипов) частично обходят ограничение, но это нестандартный сценарий.
Безопасность сетевой загрузки
Протоколы, лежащие в основе PXE, разрабатывались без учёта защиты: TFTP не имеет аутентификации, а DHCP-ответы легко подделать. Любая машина в той же сети может выдать себя за сервер загрузки и передать клиенту вредоносный образ — это реальный вектор атаки, а не теоретическая угроза.
Снизить риски помогают организационные и сетевые меры. Выделите установочные машины в отдельный VLAN, ограничьте доступ к TFTP-серверу списками адресов, включайте PXE-сервер только на период развёртывания. Там, где это поддерживается, используйте Secure Boot с подписанными загрузчиками — тогда клиент откажется выполнять неподписанный код.
- 🔒 Изолируйте сегмент развёртывания в отдельный VLAN;
- 🚫 Не держите TFTP-сервер постоянно доступным всей сети;
- ✍️ Применяйте подписанные загрузчики и Secure Boot, если оборудование это позволяет;
- 👁️ Мониторьте DHCP-ответы — появление «второго» сервера должно вызывать тревогу.
FAQ: частые вопросы о загрузке ОС по сети
Можно ли загрузить Windows по сети без установленной ОС на диске?
Да. Для установки используется загрузка среды Windows PE через WDS или PXE, после чего установщик разворачивает систему на локальный диск. Для постоянной работы без диска применяются специализированные решения вроде загрузки по iSCSI, но в обычных сценариях сетевая загрузка служит именно для установки и обслуживания.
Чем iPXE отличается от обычного PXE?
PXE — это базовый механизм, встроенный в прошивку сетевой карты: он умеет только DHCP и TFTP. iPXE — программный загрузчик с расширенными возможностями: загрузка по HTTP/HTTPS, скрипты, меню, поддержка iSCSI и SAN. Обычно iPXE запускается как второй этап после штатного PXE.
Почему клиент получает IP-адрес, но не загружается дальше?
Наиболее вероятные причины: DHCP-сервер не передаёт опции загрузки (адрес TFTP и имя файла), TFTP-сервер недоступен или загрузочный файл не соответствует режиму клиента (BIOS вместо UEFI). Проверяйте стадии по порядку: сначала опции DHCP, затем доступность файла через TFTP-клиент.
Нужен ли отдельный сервер, если в сети уже есть роутер с DHCP?
Отдельная физическая машина не обязательна — PXE-сервисы можно разместить на любом постоянно включённом компьютере или сервере. Но потребуется либо настроить выдачу опций загрузки на существующем DHCP, либо запустить proxyDHCP (например, dnsmasq в соответствующем режиме), который дополняет ответы роутера параметрами PXE, не конфликтуя с ним.
Можно ли организовать сетевую загрузку дома?
Да, для домашней лаборатории достаточно одного компьютера с Linux и dnsmasq. Это удобный способ устанавливать ОС без флешки, тестировать дистрибутивы и восстанавливать системы. Учтите, что на время настройки лучше отключить DHCP на домашнем роутере или использовать режим proxyDHCP, чтобы избежать конфликтов.