web-dev-qa-db-ja.com

クライアントに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
djuarez

ISC dhcpdを使用しているようです。 dhcpd.conf(5)のmanページから:

next-server server-name;

next-serverステートメントは、初期ブートファイル(filenameステートメントで指定)をロードするサーバーのホストアドレスを指定するために使用されます。 Server-nameは、数値のIPアドレスまたはドメイン名にする必要があります。

next-serverステートメントで示されるサーバー名はnot別のDHCPサーバーであることに注意してください。古典的には、TFTPサーバーである可能性があります。

クライアントが最初にDHCP要求を1つのDHCPサーバーに送信し、次に別のDHCPサーバーに送信した場合、クライアントは何らかの理由で最初のサーバーの提供を拒否したことを意味します。 DHCPプロトコルの仕様によると、DHCPクライアントがDHCPオファーの一部のみを受け入れる方法はありません。それは全部か無かです。

2
telcoM