强制客户端将 DHCP 选项发送到下一个服务器

强制客户端将 DHCP 选项发送到下一个服务器

目前,当客户端请求 IP 时,会连接到 DHCP 服务器。然后,我们会next-server使用一些附加选项重定向到。

下一个服务器正在运行 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 服务器,然后发送到next-server,而不采用 DHCP 服务器配置上的任何指定选项。

编辑:dnsmasq配置

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
(...)

答案1

您似乎正在使用 ISC dhcpd。 从其dhcpd.conf(5)手册页中:

next-server server-name;

next-server语句用于指定要从中filename加载初始引导文件(在语句中指定)的服务器的主机地址。 Server-name应该是数字 IP 地址或域名。

请注意,该语句指示的服务器名称next-server不是另一个 DHCP 服务器。通常情况下,它可能是一个 TFTP 服务器。

如果您的客户首先发送DHCP 请求先发送到一个 DHCP 服务器,然后发送到另一个,这意味着客户端出于某种原因拒绝了第一个服务器的请求。根据 DHCP 协议规范,DHCP 客户端无法只接受 DHCP 请求的部分内容;要么全部接受,要么全部不接受。

相关内容