Прокси DHCP через dnsmasq: Grub приветствует меня, но затем зависает.

Вопрос или проблема

Я пытаюсь загрузить EFI PXE с помощью GRUB2, используя прокси DHCP сервер… Все работало отлично с этой конфигурацией, где DHCP сервер был просто заменен:

interface=enp3s0
dhcp-range=192.168.1.10,192.168.1.90,255.255.255.0,12h
dhcp-option=option:router,192.168.1.1
pxe-prompt="Going to network boot", 4
enable-tftp
tftp-root=/var/ftpd
dhcp-boot=grubnetx64.efi

Клиент загружается без проблем. Однако это не то, что мне нужно. Я хочу, чтобы распределение IP продолжало контролироваться DHCP сервером маршрутизатора. Поэтому я изменил это на:

interface=enp3s0

dhcp-range=192.168.1.1,proxy

enable-tftp
tftp-root=/var/ftpd

pxe-prompt="Going to network boot", 4
pxe-service=x86-64_EFI,"Network boot",grubnetx64.efi
dhcp-boot=grubnetx64.efi

Как Intel UNDI (или как это называется), так и iPXE могут запустить GRUB2, однако дальше баннера “Welcome to GRUB!” ничего не происходит, после чего все просто зависает и вся сетевая активность прекращается. Через долгое время я попадаю в оболочку grub (не в аварийную оболочку) без каких-либо сообщений об ошибках. Конфигурация вообще не загружена.

Интересно, что iPXE не показывает мне никаких IP-адресов при запуске dhcp или ifstat, как будто он не получил IP-адрес, но при этом может автоматически получать файл grubnetx64.efi с сервера.

Wireshark показывает, что клиент полностью загрузил файл grubnetx64.efi, но затем вся связь прекращается, включая DHCP.

Это сетевой дамп загрузки, до момента, когда началась загрузка файла.

No. Time         Source        Destination     Protocol Length Info
19  25.842147691 0.0.0.0       255.255.255.255 DHCP     389    DHCP Discover - Transaction ID 0x2ac0b917
20  25.842958215 192.168.1.124 255.255.255.255 DHCP     342    DHCP Offer    - Transaction ID 0x2ac0b917
21  25.844230209 192.168.1.1   255.255.255.255 DHCP     342    DHCP Offer    - Transaction ID 0x2ac0b917
24  29.480009427 0.0.0.0       255.255.255.255 DHCP     401    DHCP Request  - Transaction ID 0x2ac0b917
25  29.483931744 192.168.1.1   255.255.255.255 DHCP     342    DHCP ACK      - Transaction ID 0x2ac0b917
28  29.484919255 192.168.1.137 192.168.1.124   DHCP     389    proxyDHCP Request  - Transaction ID 0xfe4617c6
29  29.485937159 192.168.1.124 192.168.1.137   DHCP     342    proxyDHCP ACK      - Transaction ID 0xfe4617c6
33  30.485321160 192.168.1.137 192.168.1.124   TFTP     86     Request Read, File: grubnetx64.efi, Type transfer: octet, tsize=0, blksize=1468
34  30.486167149 192.168.1.124 192.168.1.137   TFTP     71     Option Acknowledgement, blksize=1468, tsize=3864000
35  30.486335275 192.168.1.137 192.168.1.124   TFTP     72     Error Code, Code: Option negotiation failed, Message: User aborted the transfer
36  30.511880616 192.168.1.137 192.168.1.124   TFTP     78     Request Read, File: grubnetx64.efi, Type transfer: octet, blksize=1468
37  30.512618251 192.168.1.124 192.168.1.137   TFTP     57     Option Acknowledgement, blksize=1468
38  30.512763523 192.168.1.137 192.168.1.124   TFTP     60     Acknowledgement, Block: 0
39  30.513057030 192.168.1.124 192.168.1.137   TFTP     1514   Data Packet, Block: 1
40  30.513471667 192.168.1.137 192.168.1.124   TFTP     60     Acknowledgement, Block: 1
41  30.513903970 192.168.1.124 192.168.1.137   TFTP     1514   Data Packet, Block: 2
42  30.514401757 192.168.1.137 192.168.1.124   TFTP     60     Acknowledgement, Block: 2

У вас есть какие-то идеи, почему это может происходить? Я совершенно озадачен. И не совсем разбираюсь во внутренностях DHCP и PXE.

Спасибо заранее
Tuxifan

Хорошая новость в том, что debian 12 (trixie/unstable для amd64, 12.8 для arm64) уже добавил поддержку прокси DHCP. Я проверил это на обоих VMs amd64 и arm64. Имя патча ‘efinet-add-dhcp-proxy-support.patch’ находится в http://deb.debian.org/debian/pool/main/g/grub2/grub2_2.12-5.debian.tar.xz.

Проблема в основном была связана с grub, который также не обрабатывал пакет DHCP proxy ACK в своей инициализации и не проверял пакет DHCP proxy offer от PXE сервера.

iPXE тоже не на 100% безупречен – похоже, что он еще не полностью поддерживает DHCP proxy. В последней версии (1.21.1) кажется, что он не сохраняет пакет DHCP offer от прокси сервера (просто хранит ACK запроса DHCP от DHCP сервера), так что grub с патчем DHCP proxy не сможет найти информацию о прокси сервере.

Ответ или решение

Конфигурация прокси-DHCP с использованием dnsmasq и загружаемым следующим образом: GRUB2 может быть сложной задачей, особенно когда клиентский компьютер застревает на экране "Welcome to GRUB!". С точки зрения логики процесса и технологий, которые участвуют, прокси-DHCP отличается от стандартного DHCP тем, что он только предоставляет информацию о загрузке, в то время как сам IP-адрес предоставляется другим DHCP-сервером. Разберем шаги для решения проблемы и укажем на конкретные нюансы, на которые стоит обратить внимание в такой ситуации.

Анализ проблемы

  1. Конфигурация прокси-DHCP:

    • Основной момент заключается в том, чтобы убедиться, что конфигурация вашего dnsmasq действительна. Параметры dhcp-range и pxe-service в вашем файле конфигурации установлены правильно. Указание 192.168.1.1,proxy для прокси позволяет маршрутизатору управления раздачей IP-адресов.
  2. Проблемы при начальной загрузке GRUB2:

    • GRUB застревает после вывода приветствия, что может быть связано с отсутствием правильной настройки DHCP. Программы PXE могут неправильно обрабатывать ответ DHCP proxy.
  3. Анализ TCPDUMP:

    • Log показывает, что устройство получает файл grubnetx64.efi с TFTP без проблем, однако дальнейшая сетьвая активность прекращается. Это свидетельствует о вероятных проблемах с отсутствием IP-адреса на поздних этапах загрузки.

Решение

  • Патчи для GRUB:

    • Патч efinet-add-dhcp-proxy-support.patch, доступный для Debian 12, может быть решением, поскольку он исправляет проблему обработки DHCP proxy в GRUB. Это критически важно для корректного функционирования GRUB в настройке PXE с Proxy DHCP.
  • Соответствующая конфигурация iPXE:

    • Проверьте, что версия iPXE supports proxy-DHCP корректно. Как указывается, iPXE вашей версии может не сохранять DHCP-пакеты от прокси-сервера должным образом, что приводит к отсутствию правильной информации о загрузке типа PXE.

Рекомендации

  1. Обновите GRUB:
    Скачать последние версии GRUB для вашей ОС, которые уже включают необходимые изменения и поддержку прокси-DHCP.

  2. Проверьте настройки маршрутизатора:

    • Убедитесь, что маршрутизатор корректно отвечает на DHCP-запросы и не блокирует пакеты от proxy-DHCP.
  3. Используйте дополнительные инструменты мониторинга:

    • Wireshark может помочь в детализированном анализе сетевого трафика, давая понимание, на каком именно этапе процесс может застревать.
  4. Documentation and Testing:

    • Всегда документируйте изменения конфигурации и проводите тесты на отдельных узлах, чтобы в случае необходимости вернуться к предыдущим стабильным настройкам.

Такая настройка требует тщательного внимания и тестирования, чтобы убедиться, что все компоненты работают корректно. Ваша конечная цель — достичь стабильной сетевой загрузки, которая предотвращает потенциальные сбои GRUB и позволяет системе успешно запускаться через Proxy DHCP.

Оцените материал
Добавить комментарий

Капча загружается...