В настоящее время у нас есть клиенты, подключающиеся к DHCP-серверу при запросе IP. Затем мы перенаправляем на следующий сервер
с некоторыми дополнительными параметрами.
На следующем сервере работает DNSMASQ, который должен иметь возможность получать все параметры, отправленные DHCP-сервером.
С этой текущей конфигурацией для конкретная машина (она действительно проходит через это условие):
if substring (option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007" { # UEFI-64-1
# user-class has code 77
option user-class "test";
next-server nextserver.example;
# We even tried forcing sending this option, as the client might not be asking for it:
# 4d is 77 in hex
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,4d);
}
При проверке всего трафика на стороне следующего сервера мы вообще не видим эту опцию. То же самое происходит с другими параметрами, такими как option vendor-class-identifier "PXEClient";
Могу ли я что-то упустить? Похоже, что клиент просто отправляет параметры запуска DHCP-серверу, а затем следующему серверу
, не принимая ни одной из указанных опций в конфигурации DHCP-сервера.
EDIT: dnsmasq
] configuration
bind-interfaces
dhcp-option=vendor:PXEClient,6,2b
dhcp-match=x86PC, option:client-arch, 0
dhcp-option-force=x86PC,211, 30
dhcp-match=BC_EFI, option:client-arch, 7
dhcp-match=X86-64_EFI, option:client-arch, 9
dhcp-match=AARCH64_EFI, option:client-arch, 11
# path refers to server address, this case it is local, as there is a separate tftp server serving these files from /tftpboot/
# Use the tag to differentiate loader
pxe-service=tag:x86PClgcy,x86PC, "netboot x86PClgcy", /test/loader/lgcy/pxelinux
pxe-service=tag:x86PC,x86PC, "netboot x86PC", /test/loader/bios/lpxelinux
pxe-service=tag:BC_EFI,BC_EFI, "netboot BC-EFI", /test/loader/uefi/bootx64.efi
pxe-service=tag:X86-64_EFI,X86-64_EFI, "netboot X86-64_EFI", /test/loader/uefi/bootx64.efi
pxe-service=tag:AARCH64_EFI, 11, "netboot AARCH64_EFI", /test/loader/arm64/bootx64.efi
# ONE pxe-service per tag:architecture only
# for defined pxe-skip-menu=<CSA>
# this requires patched version of dnsmasq
pxe-skip-menu=x86PC
pxe-skip-menu=BC_EFI
pxe-skip-menu=X86-64_EFI
pxe-skip-menu=11
# i.e. it delegates the main DHCP server to allocate the IP
dhcp-range=10.0.0.0,proxy,255.0.0.0
dhcp-range=100.64.0.0,proxy,255.192.0.0
(...)
Похоже, вы используете ISC dhcpd
. Из его dhcpd.conf (5)
страницы руководства:
next-server имя-сервера;
Оператор
next-server
используется для указания адреса хоста сервер, с которого должен быть загружен файл начальной загрузки (указанный в оператореfilename
).Имя сервера
должно быть числовым IP-адресом или именем домена.
Обратите внимание, что имя сервера, указанное оператором next-server
, является , а не другим DHCP-сервер. Классически это может быть TFTP-сервер.
Если ваш клиент сначала отправляет DHCP-запрос одному DHCP-серверу, а затем другому, это означает, что клиент по какой-то причине отклонил предложение первого сервера. Согласно спецификациям протокола DHCP, DHCP-клиент не может принимать только часть предложения DHCP; все или ничего.