Подробный гайд: IPv4 PXE Support и IPv6 PXE Support

Подробный гайд по IPv4 и IPv6 PXE Support: принципы сетевой загрузки, настройка DHCP, TFTP, BIOS, UEFI, примеры конфигов и диагностика ошибок.

2026.08.09                  


Подробный гайд: IPv4 PXE Support и IPv6 PXE SupportПодробный гайд: IPv4 PXE Support и IPv6 PXE Support Максимально подробное руководство по PXE-загрузке поверх IPv4 и IPv6: принципы работы, DHCP-опции, различия BIOS/UEFI, примеры конфигураций и диагностика.


1. Что такое PXE

PXE (Preboot eXecution Environment) — стандарт (изначально Intel, спецификация PXE v2.1, для UEFI — UEFI Specification) сетевой загрузки ОС до обращения к локальным дискам.

Типичные сценарии:

  • Установка ОС по сети (Kickstart, AutoYaST, Preseed, Windows Deployment Services)
  • Загрузка Live-образов / аварийных утилит
  • Без дисковые станции (diskless)
  • Массовое развёртывание серверов (Provisioning)

Ключевые компоненты:

Компонент Назначение
DHCP / DHCPv6 Выдача IP-адреса и указание, откуда грузиться
TFTP / HTTP Доставка загрузчика (NBP — Network Bootstrap Program)
Загрузчик pxelinux.0, ipxe, bootx64.efi, grub и т.п.
ОС-образ Ядро + initramfs, передаются по TFTP/HTTP/NFS



2. Общая схема работы PXE

Упрощённо процесс:

Клиент (BIOS/UEFI PXE-стек)
   │
   ├─ 1. Отправляет DHCP-запрос (Discover / Solicit)
   │
   ├─ 2. Получает IP + параметры загрузки (адрес сервера, имя файла)
   │
   ├─ 3. Скачивает загрузчик (NBP) по TFTP или HTTP
   │
   ├─ 4. Загрузчик забирает ядро/initramfs и конфиг
   │
   └─ 5. Передаёт управление ядру ОС → старт установки/системы

Главное отличие между IPv4 и IPv6 PXE — тип DHCP и номера опций.


3. IPv4 PXE Support

3.1. Как работает

Классический PXE поверх IPv4 использует DHCPv4. Клиент в DHCP Discover помечает себя как PXE-устройство.

Критически важные DHCPv4-опции:

Опция Имя Назначение
60 Class Identifier PXEClient — определяет, что клиент PXE
66 TFTP Server Name Имя/IP TFTP-сервера
67 Bootfile Name Имя загрузчика (pxelinux.0, bootx64.efi)
43 Vendor Specific Info Альтернативный способ передачи boot-сервера (внутри PXE-подопций)
93 Client System Architecture Тип архитектуры (BIOS/UEFI) — для выбора правильного загрузчика
94 Client Network Interface Identifier Доп. информация о NIC
97 Client Machine Identifier UUID машины

3.2. Архитектура клиента (опция 93)

Чтобы один DHCP-сервер обслуживал и Legacy BIOS, и UEFI, используют опцию 93 (Client System Architecture):

Значение Архитектура Загрузчик
0 Intel x86 PC (Legacy BIOS) pxelinux.0 / undionly.kpxe
6 EFI IA32 bootia32.efi
7 EFI x86-64 bootx64.efi
9 EFI x86-64 (альтернатива) bootx64.efi
11 EFI ARM64 bootaa64.efi

Пример логики в конфиге DHCP:

if option arch = 00:07 or option arch = 00:09 {
    filename "efi/bootx64.efi";
} elsif option arch = 00:06 {
    filename "efi/bootia32.efi";
} else {
    filename "bios/pxelinux.0";
}

3.3. Пример: dnsmasq (простой вариант)

# /etc/dnsmasq.conf
interface=eth0
dhcp-range=192.168.10.50,192.168.10.150,255.255.255.0,12h

# Включаем TFTP
enable-tftp
tftp-root=/srv/tftp

# Для Legacy BIOS
dhcp-boot=pxelinux.0

# Или с учётом архитектуры:
dhcp-match=set:efi-x86,option:client-arch,7
dhcp-match=set:efi-x86,option:client-arch,9
dhcp-boot=tag:efi-x86,bootx64.efi

3.4. Пример: ISC DHCP Server

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.50 192.168.10.150;
    option routers 192.168.10.1;
    option domain-name-servers 192.168.10.1;

    # PXE-опции
    if option arch = 00:07 or option arch = 00:09 {
        filename "bootx64.efi";
    } else {
        filename "pxelinux.0";
    }
    next-server 192.168.10.2;   # адрес TFTP
}

3.5. TFTP-сервер

Структура каталога /srv/tftp:

/srv/tftp
├── pxelinux.0            # Legacy BIOS загрузчик
├── ldlinux.c32
├── pxelinux.cfg/
│   └── default            # меню загрузки
├── bootx64.efi           # UEFI x86-64
├── vmlinuz
└── initrd.img

Пример pxelinux.cfg/default:

DEFAULT install
LABEL install
    KERNEL vmlinuz
    APPEND initrd=initrd.img inst.repo=http://192.168.10.2/repo
    TIMEOUT 50

3.6. Особенности IPv4 PXE

  • Работает только при наличии DHCPv4 в сегменте (или настроенного DHCP relay / IP helper)
  • Опции 66/67 могут конфликтовать, если в сети уже есть «обычный» DHCP (роутер, Windows DHCP) — PXE-опции нужно добавлять в существующий сервер, а не поднимать второй
  • Опция 60 (PXEClient) иногда конфликтует с Windows WDS, если DHCP и WDS на одном сервере — там есть отдельные нюансы с DoNotListenOnDhcpPort



4. IPv6 PXE Support

4.1. Принципиальные отличия

IPv6 PXE не использует DHCPv4. Загрузка идёт через DHCPv6 (порт 546/547 UDP), а сетевая конфигурация может также опираться на Router Advertisement (RA).

Два режима адресации в IPv6:

Режим Описание Пригодность для PXE
SLAAC (Stateless) Адрес из RA без DHCP Сам по себе PXE не даёт — нет механизма передать boot-файл
Stateful DHCPv6 Адрес выдаёт DHCPv6 Основной рабочий вариант
Stateless DHCPv6 Адрес из RA, DHCPv6 только для опций Работает не на всех реализациях PXE

Важно:

Для надёжной IPv6 PXE нужен Stateful DHCPv6, а RA-флаги должны быть согласованы (M=1 — managed address, O=1 — other config).

4.2. DHCPv6-опции для PXE

В IPv6 номера опций другие, чем в IPv4:

Опция Имя Назначение
59 BOOTFILE-URL URL загрузчика: tftp://[2001:db8::2]/bootx64.efi
60 BOOTFILE-PARAM Параметры загрузчика
61 CLIENT_ARCH_TYPE Архитектура клиента (аналог опции 93 в IPv4)
16 Vendor Class Идентификация PXE-клиента
17 Vendor-specific Дополнительные данные

Ключевая разница с IPv4:

  • В IPv4 сервер и файл — две отдельные опции (66 и 67)
  • В IPv6 всё задаётся одним URL в опции 59

4.3. Значения Client Architecture (опция 61)

Значение Архитектура Загрузчик
6 EFI IA32 bootia32.efi
7 EFI x86-64 bootx64.efi
9 EFI x86-64 bootx64.efi
11 EFI ARM64 bootaa64.efi
15 EFI RISC-V

4.4. Пример: dnsmasq для IPv6 PXE

# /etc/dnsmasq.conf
interface=eth0

# Включаем DHCPv6
enable-ra
dhcp-range=2001:db8:10::50,2001:db8:10::150,64,12h

# TFTP
enable-tftp
tftp-root=/srv/tftp

# PXE: выдаём bootfile URL в зависимости от архитектуры
dhcp-match=set:efi6,option6:client-arch,7
dhcp-match=set:efi6,option6:client-arch,9
dhcp-boot=tag:efi6,tftp://[2001:db8:10::2]/bootx64.efi

4.5. Пример: ISC DHCPv6

subnet6 2001:db8:10::/64 {
    range6 2001:db8:10::50 2001:db8:10::150;

    if option dhcp6.client-arch = 00:07 or option dhcp6.client-arch = 00:09 {
        option dhcp6.bootfile-url "tftp://[2001:db8:10::2]/bootx64.efi";
    }
}

4.6. Пример: Kea DHCPv6

{
  "Dhcp6": {
    "interfaces-config": { "interfaces": ["eth0"] },
    "subnet6": [{
      "subnet": "2001:db8:10::/64",
      "pools": [{ "pool": "2001:db8:10::50 - 2001:db8:10::150" }],
      "option-data": [{
        "name": "bootfile-url",
        "data": "tftp://[2001:db8:10::2]/bootx64.efi"
      }]
    }]
  }
}

4.7. Особенности IPv6 PXE

  1. Обязателен UEFI — Legacy BIOS PXE через IPv6 практически не встречается (BIOS-стек PXE исторически IPv4-only).
  2. Multicast: DHCPv6-клиент отправляет Solicit на ff02::1:2 (All_DHCP_Relay_Agents_and_Servers). Для работы через сегменты нужен DHCPv6 Relay.
  3. Согласованность RA и DHCPv6: если роутер шлёт RA с M=0 (SLAAC), клиент может даже не обращаться к DHCPv6 за адресом, и PXE-опции не дойдут. Для Stateful ставьте M=1.
  4. Формат bootfile-url — полный URL со схемой: tftp://[адрес]/файл, http://.... Некоторые реализации UEFI PXE лучше работают с HTTP, чем TFTP.
  5. Поддержка в оборудовании: IPv6 PXE есть не во всех NIC/UEFI. Проверяйте опции «IPv6 PXE Support», «UEFI Network Stack», «IPv6 Network Stack» в настройках прошивки.



5. Настройка на стороне клиента (UEFI/BIOS)

Для работы PXE на клиенте обычно нужно включить:

Параметр Значение
Network Stack / PXE Support Enabled
IPv4 PXE Support Enabled (по умолчанию)
IPv6 PXE Support Enabled (если нужна загрузка по IPv6)
Boot Mode UEFI (для IPv6 PXE — обязательно)
Secure Boot Может блокировать неподписанные загрузчики
NIC ROM / Option ROM UEFI driver, не Legacy

Часто встречаются отдельные пункты:

  • Ipv4 PXE Support — загрузка по IPv4
  • Ipv6 PXE Support — загрузка по IPv6
  • Порядок загрузки: PXE IPv4 / PXE IPv6 в Boot Priority

Если в UEFI включён только IPv6 PXE, клиент будет слать DHCPv6 Solicit и игнорировать IPv4 DHCP. И наоборот. Для совместимости часто включают оба.


6. Сравнение IPv4 и IPv6 PXE

Критерий IPv4 PXE IPv6 PXE
Протокол конфигурации DHCPv4 DHCPv6 (+ RA)
Адрес загрузчика Опции 66 + 67 отдельно Опция 59 — один URL
Архитектура клиента Опция 93 Опция 61
Идентификация PXE Опция 60 PXEClient Vendor Class / опция 16
Требования к клиенту BIOS или UEFI Практически только UEFI
Broadcast/Multicast Broadcast 255.255.255.255 Multicast ff02::1:2
Работа без DHCP Нет SLAAC без DHCP не даст boot-файл
Зрелость поддержки Отличная, повсеместно Зависит от NIC/UEFI
Релей DHCP Relay / IP Helper DHCPv6 Relay

7. Диагностика

7.1. Перехват трафика на сервере/шлюзе

IPv4:

tcpdump -i eth0 -n -s0 port 67 or port 68 or tftp

IPv6:

tcpdump -i eth0 -n -s0 port 546 or port 547 or tftp

7.2. Что смотреть в Wireshark

  • IPv4 PXE: DHCP Discover → проверить наличие опций 60, 66, 67 в Offer/ACK
  • IPv6 PXE: DHCPv6 Solicit → Advertise → Request → Reply; проверить опции 59, 61
  • TFTP: виден ли запрос RRQ на boot-файл, нет ли ошибок (Error: file not found)

7.3. Типовые проблемы

Симптом Вероятная причина Решение
«PXE-E53: No boot filename received» Не приходят опции 66/67 Проверить DHCP, не конфликтует ли второй DHCP
«TFTP file not found» Неверный путь/имя файла Проверить tftp-root и права
IPv6 PXE не стартует RA в режиме SLAAC, клиент не идёт в DHCPv6 Поставить M=1 / Stateful DHCPv6
Загрузка висит после получения файла Secure Boot блокирует .efi Подписать загрузчик или отключить Secure Boot
PXE работает только в одном VLAN Нет DHCP relay Настроить relay / IP helper на L3-устройстве
Нет опции arch в ответе DHCP не распознаёт клиента Проверить dhcp-match по опциям 93/61

7.4. Быстрая проверка TFTP вручную

# IPv4
tftp 192.168.10.2 -c get pxelinux.0

# IPv6
tftp -6 2001:db8:10::2 -c get bootx64.efi

8. Рекомендации на практике

  1. Начинайте с IPv4 PXE, если нет жёсткой необходимости в IPv6 — поддержка стабильнее и шире.
  2. Используйте один DHCP-сервер на сегмент: два DHCP (например, роутер + PXE-сервер) конфликтуют.
  3. Разделяйте загрузчики по архитектуре: отдельный каталог bios/ и efi/, выбор по опции 93 (IPv4) или 61 (IPv6).
  4. Для IPv6 согласуйте RA и DHCPv6: stateful DHCPv6 + корректные флаги M/O.
  5. Проверяйте поддержку IPv6 PXE в прошивке NIC/UEFI до массового внедрения — на старых серверах её может не быть или она работает нестабильно.
  6. HTTP вместо TFTP для крупных инфраструктур: TFTP не любит большие файлы и не имеет аутентификации; современные UEFI (HTTP Boot) и iPXE поддерживают HTTP.
  7. Логируйте: включите подробный лог dnsmasq (log-dhcp, log-queries) или Kea — сразу видно, какие опции запросил клиент и что получил.

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (5)(· · · — — — · · ·)(30)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта