← Назад к «Руководства»

PXE: развёртывание в корпоративной инфраструктуре

Пошаговое руководство для администратора, который ставит Linux по сети в корпоративной среде: централизованный DHCP, домен, VLAN, парк машин. Пример доведён до конца для трёх дистрибутивов — Astra Linux 1.8, РЕД ОС 8 и Альт p11 — на стенде с реальными ISO: от настройки DHCP до машин, введённых в домен. Отдельным подразделом — отличия для Windows 10/11.

О том, как устроен модуль PXE (роли, загрузчики, жизненный цикл заданий), — в разделе PXE — сетевая установка ОС. Здесь — только практика развёртывания.

Что должно быть готово до старта

Что Проверка Где настраивается
Master работает curl -k https://master/api/v1/health{"status":"ok"} Развёртывание серверов
Роль pxe на отдельном хосте curl -k https://pxe/api/v1/health{"status":"ok","role":"pxe"} Установка PXE
Сертификат Master доступен точке Точка забирает его сама при регистрации
Точка зарегистрирована и online Вкладка PXE → PXE-точки Подключение точки
Права на вкладку PXE роль PXE-админ (pxe_admin) или osdeploy.view + osdeploy.*.operate RBAC
Secure Boot на целевых машинах Должен быть выключен (загрузчик iPXE не подписан) BIOS/UEFI машин

priority_highДиск точки

Под каждый дистрибутив нужно место дважды (ISO + распакованное дерево): в примере ниже три ISO занимают ~20 ГБ, после распаковки — ещё ~20 ГБ. Закладывайте от 100 ГБ и следите за колонкой «Место» в таблице точек.

Схема стенда

Типовая схема; адреса в примере условные — замените на свои.

Компонент IP в примере Роль в установке
Корпоративный DHCP + контроллер домена 192.168.100.1 Единственный раздающий адреса; контроллер домена (AD, Samba DC, FreeIPA/ALD Pro)
Master LSUS 192.168.100.5 UI, метаданные, задания
PXE-точка 192.168.100.10 ISO, HTTP-boot, proxyDHCP/TFTP
VLAN установки 192.168.100.0/24 Машины, которые ставим

infoТочка не конкурент DHCP

PXE-точка работает в режиме proxyDHCP: она отвечает только на PXE-запросы и не раздаёт адреса. Появление второго «настоящего» DHCP-сервера в сегменте — классическая авария корпоративной сети, здесь она исключена конструкцией.

Шаг 1. Настроить DHCP

Корпоративный DHCP-сервер остаётся как есть. Нужно лишь, чтобы PXE-клиенты узнавали адрес загрузчика. Два способа — выберите один.

Вариант A — IP-helper на маршрутизаторе (клиенты и точка в разных L2)

На интерфейсе VLAN установки relay-адресами указываются и корпоративный DHCP, и IP точки:

! Cisco IOS
interface Vlan100
 ip helper-address 192.168.100.1
 ip helper-address 192.168.100.10
!
! Вторая фаза PXE идёт на нестандартный порт UDP 4011 —
! форвард её нужно разрешить явно:
ip forward-protocol udp 4011
# Huawei / аналог
dhcp relay server-group 1 ip 192.168.100.1
dhcp relay server-group 1 ip 192.168.100.10

Здесь: 192.168.100.1 — корпоративный DHCP; 192.168.100.10 — PXE-точка.

priority_highНе забудьте UDP 4011

Без форварда 4011 (Cisco ip forward-protocol) первая фаза PXE проходит, а вторая — нет: машина получает адрес, но не получает загрузчик. Это самая частая причина «PXE-E11: ARP timeout» в маршрутизируемых сетях.

Вариант B — опции 66/67 на DHCP-сервере (клиенты и точка в одном L2)

Сначала решите, какой файл указывать в опции 067 — это зависит от того, что за прошивка у клиента:

Клиент Значение опции 067 Почему
«Голое» железо UEFI (встроенный PXE-клиент, без iPXE) snponly.efi Загрузчик iPXE достаётся клиенту по TFTP с точки
Legacy BIOS undionly.kpxe То же, вариант для BIOS
Уже грузится iPXE: VM Proxmox (Network Boot), тонкие клиенты, существующая инфраструктура iPXE http://<IP-точки>/pxe/boot.ipxe — прямо URL iPXE понимает HTTP в filename и сразу цепляет динамический скрипт точки
То же, но поле filename в DHCP не принимает URL lsus.ipxe Скрипт-цепочка в TFTP-корне точки: сам перейдёт на http://<точка>/pxe/boot.ipxe?mac=…

warningДвойной iPXE — типичная ошибка в этом варианте

Если клиент уже работает под iPXE (например, VM Proxmox: её Network Boot — это собственный iPXE), а в опции 067 указано snponly.efi, получается петля: iPXE скачивает по TFTP второй iPXE, стартует заново — и так по кругу. До boot.ipxe запрос не доходит, Master не видит MAC (в «Очереди PXE» пусто или время «Недавно» не обновляется). Лечение: пропишите в 067 URL http://<IP-точки>/pxe/boot.ipxe (или lsus.ipxe, если URL не принимается) и перезагрузите машину.

infoПочему у самой точки этой проблемы нет

Когда отвечает proxyDHCP самой точки (вариант A), dnsmasq различает клиентов по тегам: уже работающий iPXE (DHCP-опция 175 / user-class) сразу получает URL boot.ipxe, а «голым» клиентам отдаются snponly.efi/undionly.kpxe. В статических опциях 66/67 такого автоопределения нет — тип клиента выбираете вы.

Windows Server (графически):

  1. Server Manager → Tools → DHCP.
  2. Разверните сервер → IPv4 → область (scope) VLAN установки.
  3. Scope Options → Action → Configure Options…
  4. Вкладка General:
    - 066 Boot Server Host Name — IP точки (192.168.100.10) или её FQDN;
    - 067 Boot File Name — по таблице выше (snponly.efi / undionly.kpxe / URL boot.ipxe / lsus.ipxe).
  5. Apply, затем перезапустите службу DHCP (или дождитесь обновления области).

Для отдельных машин (например, кассовый образ только на двух АРМ) те же опции задаются на Reservation — они переопределяют область.

UniFi (Network Boot на сети):

Settings → Networks → сеть VLAN установки → секция Network Boot:

Поле Значение
Server 192.168.100.10 — IP PXE-точки
Filename http://192.168.100.10/pxe/boot.ipxeне snponly.efi, если машины уже грузятся через iPXE (VM Proxmox и т.п.)

После смены filename перезагрузите машину. В консоли должна появиться строка вида LSUS PXE: MAC <адрес-машины> неизвестен, а в Master на подвкладке Очередь PXE — строка на одобрение (у уже числившейся машины обновится колонка «Недавно»).

dnsmasq (если DHCP на Linux):

dhcp-option=66,192.168.100.10
# для «голого» UEFI-железа:
dhcp-option=67,snponly.efi
# если клиенты уже под iPXE (Proxmox и т.п.) — URL:
# dhcp-option=67,http://192.168.100.10/pxe/boot.ipxe

Что проверить после настройки DHCP

Проверка Как
Машина получает адрес и обращается к точке В карточке точки — «Диагностика»: журнал DHCP-обмена по MAC
Подсеть установки прописана в точке PXE → PXE-точки → Изменить: подсети 192.168.100.0/24 — попадает в dnsmasq как dhcp-range=…,proxy; relay из незарегистрированной подсети точка игнорирует
Порт 4011/67/69 открыты на пути Firewall: см. особенности инфраструктуры

Шаг 2. Загрузить дистрибутивы

Носители

Пример набора носителей для трёх дистрибутивов из этого руководства:

Файл Семейство Версия Размер
RED-OS-8-x86_64-DVD.iso РЕД ОС 8 6,1 ГБ
ASLE-1.8.4-x86_64-DVD.iso Astra 1.8 7,4 ГБ
alt-workstation-11.1-x86_64.iso Альт p11 6,9 ГБ

Как загрузить:

  • «Загрузить ISO» — файл из браузера идёт через Master на точку (по частям; Master ISO не хранит). Выберите точку в мастере и файл.
  • Закрытый контур — скопируйте ISO в каталог incoming на диске точки и нажмите «Подхватить с диска точки».

После загрузки носитель проходит статусы incoming → scanning → ready. Дальше нажмите «Распаковать» — точка развернёт дерево установки, из которого инсталлятор берёт пакеты, ядро и initrd. ISO при этом остаётся (пригодится для remaster); если место в дефиците — при распаковке есть опция не сохранять ISO.

Шаг 3. Создать образы

Образы

Нажмите «Создать образ», выберите носитель в статусе ready, имя и — начиная с этой версии — пресет состава (встроенный «рабочая станция» под ваше семейство, свой из каталога или пустой черновик) — откроется редактор с предзаполненным составом. Каталог пресетов виден над таблицей образов: встроенные (redos_8_workstation, astra_1_7_workstation, astra_1_8_workstation, alt_11_workstation) можно перекрыть своими значениями или скопировать в свой id; пароли в пресет не входят, пока их не зададут в редакторе. Общие разделы (диск, локаль, учётные записи, пакеты, агент, домен) одинаковы для всех семейств и описаны в редакторе образов. Ниже — то, что отличается по дистрибутивам.

Разметка диска выбирается в разделе Диск: «Весь диск», «Отдельный /home» или LVM — при LVM тома группы фиксированные, а неразмеченное место в VG остаётся резервом под снапшоты агента (связка с LVM-снапшотами: свежеустановленная машина сразу готова к снапшотам перед обновлениями).

Пароль root задаётся хешем — plaintext не хранится и в файл автоответов не попадает:

openssl passwd -6 'StrongPassPhrase'

Пример вывода:

$6$Z0m9kQ1x$wJ4vN7lYhS2eF8qR3tU6oP5aD1gB7cX9mK2nL4jH8sD6fG3hJ1kL5

Полученную строку вставьте в раздел Учётные записи → Хеш root.

Astra Linux 1.8 — preseed

Файл автоответов — preseed (debian-installer): auto=true priority=critical url=…. Ключевые моменты:

  • раздел Astra SE — специфика Special Edition: мандатное разграничение, замкнутая программная среда (ЗПС), контроль целостности, метка MAC;

Редактор: раздел Astra SE

  • если инфраструктура требует — включите все три режима сразу и задайте мандатную метку; их же потом можно проверить конфигурациями (политики Astra);
  • домен: режим freeipa_ald для ALD Pro, ad/samba/redadm — для AD-контроллеров.

РЕД ОС 8 — kickstart

Файл автоответов — kickstart (Anaconda): inst.ks=… inst.repo=…. Ключевые моменты:

  • хуки %pre и %post доступны в разделе Скрипты;
  • опция «Удалить копию kickstart после установки» (раздел Диск) включена по умолчанию — на машине не остаётся файла с хешами;
  • превью смотрите кнопкой «Превью» — это тот самый kickstart, который уйдёт машине:

Редактор: превью kickstart

Альт p11 — alterator

Файл автоответов — autoinstall.scm (команды install2/alterator) и рядом vm-profile.scm (разметка диска). Это не kickstart и не preseed: automatic= указывает на дерево ISO, ai curl= — на каталог с scm.

  • разделы формы те же, но тонкая настройка — через раздел Исходник (прямая правка autoinstall.scm);
  • режим исходника «Форма ведущая» перезаписывает правки из формы — если правите scm руками, переключите на «Исходник зафиксирован».

Windows 10/11

Windows ставится как отдельное семейство (x86_64, UEFI). Отличия от Linux-образов:

  • разметка — только «весь диск» (GPT: EFI, MSR, раздел Windows); выбор другой схемы заблокирован;
  • издание задаётся в разделе Windows именем из WIM (например Windows 11 Pro) или индексом; ключ продукта — необязательно;
  • часовой пояс — идентификаторы Windows (Russian Standard Time), не IANA;
  • пароль локального администратора не хранится в образе: он генерируется на каждую цель при выдаче задания и показывается рядом с одноразовым кодом (кнопка «Копировать»);
  • загрузка идёт через wimboot по HTTP, файлы установки — с точки по SMB (ничего дополнительно настраивать не нужно);
  • ввод в домен — шаблон lsus.win.domain-join после установки;
  • удалённо отправить Windows-машину в сетевую загрузку нельзя — на ней выбирают загрузку по сети вручную (клавиша меню загрузки).

Редактор: раздел Windows

Публикация

Для каждого образа: «Сохранить черновик»«Проверить» (валидация) → «Опубликовать». Машины получают только published-версии. Типовой набор — рабочая станция для каждого семейства плюс минимальный образ РЕД ОС (для касс и АРМ без офисного набора).

Шаг 4. Дать машинам задание установки

Задания

На скриншоте: задание Astra завершено (joined), РЕД ОС — идёт установка (installing), Альт — ждёт загрузки машин (pxe_wait).

Создание: Задания → «Создать задание» либо из карточки хоста — «Установить ОС» (вкладка откроется с предвыбранным хостом).

Поле мастера Значение в примере
Хосты имена машин из каталога LSUS через запятую (например, ws-astra-01.example.com, ws-astra-02.example.com). Не числовой id и не MAC — голое железо без агента ставят через очередь PXE
Опубликованная версия образа Выбирается из published-версий
PXE-точка Выбирается из зарегистрированных точек
Срок токена загрузки (мин) 120–240: сколько действует служебный boot-token точки
Прежняя учётка компьютера Сбросить — типично при переустановке; Переиспользовать — сохранить учётку в домене
Сразу перезагрузить хост в PXE Агент сам отправит машину в сетевую загрузку, если в UEFI есть пункт загрузки по сети (в таблице — «удалённо PXE»); остальным — F12 вручную

Кнопка «Проверить цели» перед созданием показывает по каждому хосту: известен ли MAC, есть ли сетевая BootEntry в UEFI.

priority_highОдноразовый код установки

Сразу после создания задания Master выдаёт одноразовый код формата XXXX-XXXX. Его вводят в консоли iPXE при загрузке машины — без кода ядро не отдаётся. Код виден в таблице заданий (меню «Одноразовые коды») и в карточке цели; «Выдать новый код» отзывает старый. Это защита от случайной установки: постоянно включённый PXE сам по себе больше ничего не ставит.

priority_highУдалённая перезагрузка в PXE — не для всех машин

Опция ставит сетевую загрузку на один раз (--bootnext) и перезагружает хост. Это требует UEFI с настроенной сетевой BootEntry — агент собирает эти данные в инвентарь (раздел firmware). Для Legacy BIOS или машины без BootEntry нужен «человек с F12»: вручную выбрать загрузку по сети в меню загрузки.

Дальше машина проходит цепочку статусов: pxe_wait → installing → installed → enrolled → joined (подробно — жизненный цикл). Неудачную цель можно повторить, задание — отменить.

Шаг 5. Новое «голое» железо

Очередь PXE

Машины без активного задания попадают на подвкладку Очередь PXE — в том числе уже известные хосты, если их загрузили по PXE вхолостую. В таблице видны MAC, хост из инвентаря (если MAC совпал), точка, архитектура, загрузчик, вендор NIC, время «Впервые»/«Недавно» и статус (ожидает / одобрен / отклонён / устанавливается / установлен).

Режим очереди задаётся в карточке точки (поле «MAC без задания», колонка «Очередь» в таблице точек): approve — ждать решения администратора (в примере); default_image — образ-по-умолчанию подставляется заранее, но установка всё равно ждёт одобрения (ядро без одноразового кода не выдаётся).

Одобрить и поставить в очередь — выбор published-версии образа и hostname (опционально); после одобрения выдаётся одноразовый код для консоли iPXE. После установки машина регистрируется и появляется в списке хостов.

Шаг 6. Ввод в домен

Join выполняется после установки, когда агент уже зарегистрировался: раскатывается шаблон lsus.linux.domain-join (модуль Конфигурации). В образе задаётся только цель: домен, режим (ad / samba / redadm / freeipa / freeipa_ald), Computer OU.

priority_highСекреты — в ConfigCredential

Учётные данные join-учётки (domain_join_user, domain_join_password) хранятся в ConfigCredential на Master. В файле автоответов, на точке PXE и в задании их нет — на машине пароль домена не оседает.

Критерий успеха — не код возврата команды, а признак is_domain_joined в heartbeat машины (задание переводит цель в joined только по нему). Свежеустановленные машины собираются в коллекцию по критерию installed_within_days — удобно навешивать пост-настройку.

Машины считаются введёнными в домен, когда их цели перешли в joined (критерий — is_domain_joined в heartbeat).

Особенности инфраструктуры

  • Изоляция VLAN установки. Клиентам VLAN достаточно доступа к точке: TCP 80/443 и UDP 67/69/4011. Доступ машин VLAN к Master не нужен — агент поставится позже, из репозитория точки или Master по обычным правилам.
  • Firewall хоста точки:

bash # РЕД ОС / RHEL (firewalld) sudo firewall-cmd --permanent --add-service=http --add-service=https sudo firewall-cmd --permanent --add-port=67-69/udp --add-port=4011/udp sudo firewall-cmd --reload

  • SELinux (РЕД ОС). Метки на каталоге store и доступ dnsmasq к TFTP-корню — если установка не стартует, проверьте audit.log на AVC-отказы.
  • Secure Boot. iPXE не подписан ключами Microsoft — Secure Boot на целевых машинах выключается централизованно (BIOS-политики парк-менеджмента). Подписной путь (shim/GRUB из ISO дистрибутива) — в планах развития.
  • Часть UEFI игнорирует proxyDHCP, если штатный DHCP отвечает быстрее, — переводите такие сегменты на options 66/67 (вариант B) или IP-helper на 4011.
  • Параллельные установки. В карточке точки задан лимит (Установки: N/max в таблице точек). Для зала машин разумно ставить волнами по этому лимиту, а не одним заданием на сотню машин.
  • Место на точке. Каждый дистрибутив ×2 (ISO + extract) плюс remaster-носители, если собираете офлайн-ISO. Колонка «Место» в таблице точек — контроль.
  • Совместимость версий. Карточка точки предупредит, если версия lsus-pxe несовместима с Master; задания на такую точку не публикуются. Обновляйте точку и Master согласованно.
  • Аудит. Все ключевые действия (выпуск ключа точки, создание носителя/образа, публикация, создание задания) пишутся в журнал аудита — пригодится для разбора инцидентов.

Устранение типовых проблем

Симптом Причина Решение
Машина получает адрес, загрузчик не грузится Нет форварда UDP 4011 или подсеть не в карточке точки Вариант A; проверьте подсети точки
Клиент грузится по кругу; MAC не появляется в «Очереди PXE», «Недавно» не обновляется Двойной iPXE: опция 067 отдаёт snponly.efi клиенту, который уже под iPXE (VM Proxmox и т.п.) Пропишите в 067 http://<точка>/pxe/boot.ipxe (или lsus.ipxe), перезагрузите машину — вариант B
«Не грузится по сети» на отдельных UEFI Нет сетевой BootEntry; Secure Boot включён F12 вручную; выключить Secure Boot — особенности инфраструктуры
Загрузка идёт, установка не начинается Истёк срок токена загрузки Пересоздайте задание или увеличьте TTL — шаг 4
ISO не загружается с браузера Браузер не доверяет сертификату точки Примите self-signed сертификат точки — шаг 2
Разобрать обмен по конкретной машине PXE-точки → Диагностика — журнал DHCP-обмена по MAC

Единый список — Диагностика и неполадки.

Итог

После прохождения шагов: дистрибутивы загружены и распакованы на точке, образы опубликованы; машины проходят цепочку до enrolled (агент зарегистрирован) и joined (введены в домен); новое железо ставится через одобрение в Очереди PXE. Дальнейшая жизнь машин — обычные Конфигурации, обновления и отчёты.

Связанные страницы