Что такое PXE? Как загрузиться по сети?devops-5

Что такое PXE?

PXE (Preboot eXecution Environment) - это среда для загрузки компьютеров по сети без использования локальных носителей. Ключевые особенности:

  1. Стандарт Intel (разработан в 1999)
  2. Работает на клиентских машинах с поддержкой PXE в NIC
  3. Использует комбинацию DHCP и TFTP
  4. Позволяет:
    • Разворачивать ОС автоматически
    • Восстанавливать системы
    • Запускать live-образы
    • Масштабировать инфраструктуру

Компоненты PXE-инфраструктуры

  1. PXE-клиент:

    • Сетевая карта с поддержкой PXE ROM
    • Активируется через BIOS/UEFI (Boot from Network)
  2. DHCP-сервер:

    • Предоставляет IP-адрес
    • Указывает расположение загрузочных файлов (Option 66/67)
  3. TFTP-сервер:

    • Хранит и передает:
      • Загрузчик (pxelinux.0, grub)
      • Конфиги загрузки
      • Ядра и initramfs
  4. HTTP/NFS сервер (опционально):

    • Для передачи больших файлов (образы ОС)

Процесс PXE-загрузки

  1. Клиент отправляет DHCP-запрос
  2. DHCP-сервер отвечает с:
    • IP-адресом
    • Next-Server (TFTP-сервер)
    • Bootfile-Name (загрузочный файл)
  3. Клиент загружает загрузчик по TFTP
  4. Загрузчик получает конфиг и загружает:
    • Ядро (vmlinuz)
    • Initramfs
  5. Система монтирует rootfs по NFS/HTTP или начинает установку

Настройка PXE-сервера

  1. Установка необходимых пакетов:
sudo apt install -y isc-dhcp-server tftpd-hpa apache2 syslinux
  1. Настройка DHCP (пример /etc/dhcp/dhcpd.conf):
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8;
    filename "pxelinux.0";
    next-server 192.168.1.10;  # IP TFTP-сервера
}
  1. Подготовка TFTP-сервера:
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /usr/lib/syslinux/modules/bios/{ldlinux.c32,pxelinux.0} /var/lib/tftpboot/
  1. Создание конфига загрузки (/var/lib/tftpboot/pxelinux.cfg/default):
DEFAULT linux
LABEL linux
    KERNEL vmlinuz
    APPEND initrd=initrd.img root=/dev/nfs nfsroot=192.168.1.10:/nfsroot ip=dhcp

Особенности для DevOps

  1. Поддержка UEFI:

    • Требует grub/x86_64-efi вместо pxelinux.0
    • Использует HTTP вместо TFTP для больших файлов
  2. Интеграция с инструментами:

    • Cobbler (автоматизация развертывания)
    • Foreman (оркестрация)
    • Ansible (пост-конфигурация)
  3. Безопасность:

    • Ограничивайте DHCP scope
    • Используйте MAC-фильтрацию
    • Реализуйте Secure Boot для UEFI
  4. Отладка:

tcpdump -i eth0 port 67 or port 68 or port 69  # Мониторинг PXE-трафика

Альтернативы PXE

  1. iPXE:

    • Поддержка HTTP, iSCSI, SAN
    • Возможность загрузки из интернета
    • Скриптование процесса загрузки
  2. Virtual Media (для облачных решений)

Резюмируем

  1. PXE - критически важная технология для:

    • Массового развертывания ОС
    • Бессерверных сред
    • Автоматизации Data Center
  2. Основные компоненты:

    • DHCP + TFTP + (HTTP/NFS)
  3. Ключевые преимущества:

    • Независимость от локальных носителей
    • Централизованное управление образами
    • Полная автоматизация
  4. Для DevOps важно:

    • Понимать как традиционный BIOS PXE, так и UEFI-варианты
    • Уметь интегрировать с системами оркестрации
    • Обеспечивать безопасность сетевой загрузки
  5. Современные тренды:

    • Переход к iPXE
    • Использование HTTPS вместо TFTP
    • Интеграция с облачными решениями