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 машин |
Диск точки
Под каждый дистрибутив нужно место дважды (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 | Машины, которые ставим |
Точка не конкурент 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-точка.
Не забудьте 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=… |
Двойной 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 не принимается) и перезагрузите машину.
Почему у самой точки этой проблемы нет
Когда отвечает proxyDHCP самой точки (вариант A), dnsmasq различает клиентов по тегам: уже работающий iPXE (DHCP-опция 175 / user-class) сразу получает URL boot.ipxe, а «голым» клиентам отдаются snponly.efi/undionly.kpxe. В статических опциях 66/67 такого автоопределения нет — тип клиента выбираете вы.
Windows Server (графически):
- Server Manager → Tools → DHCP.
- Разверните сервер → IPv4 → область (scope) VLAN установки.
- Scope Options → Action → Configure Options…
- Вкладка General:
- 066 Boot Server Host Name — IP точки (192.168.100.10) или её FQDN;
- 067 Boot File Name — по таблице выше (snponly.efi/undionly.kpxe/ URLboot.ipxe/lsus.ipxe). - 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);
- домен: режим
freeipa_aldдля ALD Pro,ad/samba/redadm— для AD-контроллеров.
РЕД ОС 8 — kickstart¶
Файл автоответов — kickstart (Anaconda): inst.ks=… inst.repo=…. Ключевые моменты:
- хуки
%preи%postдоступны в разделе Скрипты; - опция «Удалить копию 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-машину в сетевую загрузку нельзя — на ней выбирают загрузку по сети вручную (клавиша меню загрузки).

Публикация¶
Для каждого образа: «Сохранить черновик» → «Проверить» (валидация) → «Опубликовать». Машины получают только 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.
Одноразовый код установки
Сразу после создания задания Master выдаёт одноразовый код формата XXXX-XXXX. Его вводят в консоли iPXE при загрузке машины — без кода ядро не отдаётся. Код виден в таблице заданий (меню «Одноразовые коды») и в карточке цели; «Выдать новый код» отзывает старый. Это защита от случайной установки: постоянно включённый PXE сам по себе больше ничего не ставит.
Удалённая перезагрузка в PXE — не для всех машин
Опция ставит сетевую загрузку на один раз (--bootnext) и перезагружает хост. Это требует UEFI с настроенной сетевой BootEntry — агент собирает эти данные в инвентарь (раздел firmware). Для Legacy BIOS или машины без BootEntry нужен «человек с F12»: вручную выбрать загрузку по сети в меню загрузки.
Дальше машина проходит цепочку статусов: pxe_wait → installing → installed → enrolled → joined (подробно — жизненный цикл). Неудачную цель можно повторить, задание — отменить.
Шаг 5. Новое «голое» железо¶

Машины без активного задания попадают на подвкладку Очередь 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.
Секреты — в 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. Дальнейшая жизнь машин — обычные Конфигурации, обновления и отчёты.
Связанные страницы¶
- PXE — сетевая установка ОС — устройство модуля, вкладки, права
- Установка PXE — развёртывание роли
- Конфигурации — шаблон
lsus.linux.domain-join - Хосты — действие «Установить ОС»
- Глоссарий — boot-токен, enrollment, proxyDHCP
- Диагностика и неполадки