Назад | Перейти на главную страницу

Проблемы с DnsMasq, DHCP-прокси, PXE для клиентов UEFI

Я пытаюсь настроить PXE-сервер с dnsmasq в качестве dhcp-прокси.

Он хорошо работает с client-arch = 0 (унаследованные клиенты x86), но клиент UEFI даже не прекращает обмен DHCP-пакетами с сервером PXE, и даже на этих новых клиентах не появляется запрос pxe (установленный с помощью dnsmasq).

Я сделал дамп диалога DHCP между PXE-сервером и клиентами с помощью Wireshark, я вижу некоторые различия, но не могу понять, почему только старые клиенты успешно подключаются к моему серверу.

Дамп сообщений DHCP между PXE-сервером и устаревшим клиентом BIOS (Работает!)

Дамп сообщений DHCP между PXE-сервером и UEFI-клиентом (Не работает :()

Я не смог найти рабочую конфигурацию в Интернете: следуя множеству примеров, все, что я получаю, это то, что системы UEFI не обмениваются окончательным REQUEST / ACK с сервером PXE.

Конфигурация dnsmasq:

port=0
interface=bond
log-dhcp
dhcp-range=192.168.1.200,proxy,255.255.255.0
dhcp-no-override

dhcp-option=vendor:,6,2b

pxe-prompt="Press any key for boot menu", 5

dhcp-match=set:x86PC, option:client-arch, 0
dhcp-match=set:BC_EFI, option:client-arch, 7

pxe-service=tag:x86PC,x86PC, "Legacy BIOS PXE", bios/pxelinux
pxe-service=tag:BC_EFI,BC_EFI, "UEFI PXE", efi64/syslinux.efi

dhcp-boot=tag:x86PC, bios/pxelinux.0
dhcp-boot=tag:BC_EFI, efi64/syslinux.efi

Есть ли решение?

РЕДАКТИРОВАТЬ: Я использую версию 2.76 с поддержкой UEFI (см. Журнал изменений на официальном сайте).

EDIT2: мой клиент UEFI классифицируется как PXEClient: Arch: 00007 (так что BC_EFI - это правильный тег архива dnsmasq).

DnsMasq proxyDHCP не работает в средах UEFI:

http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2015q4/009907.html

EDIT_1, если вы используете новый DnsMasq с поддержкой UEFI, попробуйте добавить недостающую архитектуру 9

 dhcp-match=set:EFI_ x86-64, option:client-arch, 9

Клиенты UEFI 64 также используют 9 в качестве архитектуры.

РЕДАКТИРОВАТЬ_2

пожалуйста, основывайте свою конфигурацию на этом

# Don't function as a DNS server:
port=0

# Log lots of extra information about DHCP transactions.
log-dhcp

# Set the root directory for files available via FTP.
tftp-root=/tftpboot

# Disable re-use of the DHCP servername and filename fields as extra
# option space. That's to avoid confusing some old or broken DHCP clients.
dhcp-no-override

# The boot filename, Server name, Server Ip Address
dhcp-boot=bios/pxelinux,,192.168.1.200

# PXE menu.  The first part is the text displayed to the user.  The second is the timeout, in seconds.
# pxe-prompt="Booting PXE Client", 1

# The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
# Intel_Lean_Client, IA32_EFI, ARM_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
# This option is first and will be the default if there is no input from the user.

# PXEClient:Arch:00000
pxe-service=X86PC, "Boot BIOS PXE", bios/pxelinux

# PXEClient:Arch:00007
pxe-service=BC_EFI, "Boot UEFI PXE-BC", efi64/syslinux.efi

# PXEClient:Arch:00009
pxe-service=X86-64_EFI, "Boot UEFI PXE-64", efi64/syslinux.efi

dhcp-range=192.168.1.200,proxy,255.255.255.0

Источник https://wiki.fogproject.org/wiki/index.php?title=ProxyDHCP_with_dnsmasq (Добавление поддержки UEFI в базовый скрипт)