I am considering a setup with a primary DHCP server providing "IP data" (IP address, subnet mask, DNS, …), and a proxyDHCP server providing only PXE boot options. As it happens, my proxyDHCP server does not only provide the PXE options, but also the IP data (hence it's not really a proxyDHCP).
Using Wireshark, I now observe:
- The client (PXE-ROM) sends an "extended"
DHCPDISCOVER(asking for IP data and PXE options) - The primary DHCP server sends a
DHCPOFFER(with only IP data) - The client does not accept the
DHCPOFFER(because it’s missing the PXE options?) - (Much later) The proxyDHCP server sends a
DHCPOFFER(with IP data and PXE options) - The client accepts the second
DHCPOFFER(and PXE-boots successfully)
Now I am wondering:
- Why does the client not accept the first
DHCPOFFER? That would be mandatory for the intended primary-proxy setup to work – how else would the client get its IP data? - If it’s all a matter of requested and provided DHCP options: Which specific missing options make the client ignore the offer? Why does the server even bother sending a
DHCPOFFER, when it knows that it cannot provide all options and that the client would not accept theDHCPOFFERanyway?
Client Request:
Ethernet II, Src: cc:cc:cc:cc:cc:cc (cc:cc:cc:cc:cc:cc), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 68, Dst Port: 67 Dynamic Host Configuration Protocol (Discover) Message type: Boot Request (1) Hardware type: Ethernet (0x01) Hardware address length: 6 Hops: 0 Transaction ID: 0xcf952d8d Seconds elapsed: 0 Bootp flags: 0x8000, Broadcast flag (Broadcast) Client IP address: 0.0.0.0 Your (client) IP address: 0.0.0.0 Next server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0 Client MAC address: cc:cc:cc:cc:cc:cc (cc:cc:cc:cc:cc:cc) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: DHCP Option: (53) DHCP Message Type (Discover) Option: (57) Maximum DHCP Message Size Option: (55) Parameter Request List Length: 35 Parameter Request List Item: (1) Subnet Mask Parameter Request List Item: (2) Time Offset Parameter Request List Item: (3) Router Parameter Request List Item: (4) Time Server Parameter Request List Item: (5) Name Server Parameter Request List Item: (6) Domain Name Server Parameter Request List Item: (12) Host Name Parameter Request List Item: (13) Boot File Size Parameter Request List Item: (15) Domain Name Parameter Request List Item: (17) Root Path Parameter Request List Item: (18) Extensions Path Parameter Request List Item: (22) Maximum Datagram Reassembly Size Parameter Request List Item: (23) Default IP Time-to-Live Parameter Request List Item: (28) Broadcast Address Parameter Request List Item: (40) Network Information Service Domain Parameter Request List Item: (41) Network Information Service Servers Parameter Request List Item: (42) Network Time Protocol Servers Parameter Request List Item: (43) Vendor-Specific Information Parameter Request List Item: (50) Requested IP Address Parameter Request List Item: (51) IP Address Lease Time Parameter Request List Item: (54) DHCP Server Identifier Parameter Request List Item: (58) Renewal Time Value Parameter Request List Item: (59) Rebinding Time Value Parameter Request List Item: (60) Vendor class identifier Parameter Request List Item: (66) TFTP Server Name Parameter Request List Item: (67) Bootfile name Parameter Request List Item: (97) UUID/GUID-based Client Identifier Parameter Request List Item: (128) DOCSIS full security server IP [TODO] Parameter Request List Item: (129) PXE - undefined (vendor specific) Parameter Request List Item: (130) PXE - undefined (vendor specific) Parameter Request List Item: (131) PXE - undefined (vendor specific) Parameter Request List Item: (132) PXE - undefined (vendor specific) Parameter Request List Item: (133) PXE - undefined (vendor specific) Parameter Request List Item: (134) PXE - undefined (vendor specific) Parameter Request List Item: (135) PXE - undefined (vendor specific) Option: (97) UUID/GUID-based Client Identifier Option: (94) Client Network Device Interface Length: 3 Major Version: 3 Minor Version: 16 Option: (93) Client System Architecture Length: 2 Client System Architecture: EFI x64 (7) Option: (60) Vendor class identifier Length: 32 Vendor class identifier: PXEClient:Arch:00007:UNDI:003016 Option: (255) End (Ignored) Response from primary DHCP server (172.17.34.30 / aa:aa:aa:aa:aa:aa):
Ethernet II, Src: aa:aa:aa:aa:aa:aa (aa:aa:aa:aa:aa:aa), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 172.17.34.30, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 67, Dst Port: 68 Dynamic Host Configuration Protocol (Offer) Message type: Boot Reply (2) Hardware type: Ethernet (0x01) Hardware address length: 6 Hops: 0 Transaction ID: 0xcf952d8d Seconds elapsed: 0 Bootp flags: 0x8000, Broadcast flag (Broadcast) Client IP address: 0.0.0.0 Your (client) IP address: 172.17.34.1 Next server IP address: 172.17.34.30 Relay agent IP address: 0.0.0.0 Client MAC address: cc:cc:cc:cc:cc:cc (cc:cc:cc:cc:cc:cc) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: DHCP Option: (53) DHCP Message Type (Offer) Option: (54) DHCP Server Identifier (172.17.34.30) Option: (51) IP Address Lease Time Length: 4 IP Address Lease Time: (900s) 15 minutes Option: (58) Renewal Time Value Length: 4 Renewal Time Value: (450s) 7 minutes, 30 seconds Option: (59) Rebinding Time Value Length: 4 Rebinding Time Value: (787s) 13 minutes, 7 seconds Option: (28) Broadcast Address (172.17.63.255) Option: (1) Subnet Mask (255.255.224.0) Option: (255) End (Accepted) Response from proxyDHCP server (172.17.61.1 / bb:bb:bb:bb:bb:bb):
Ethernet II, Src: bb:bb:bb:bb:bb:bb (bb:bb:bb:bb:bb:bb), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Internet Protocol Version 4, Src: 172.17.61.1, Dst: 255.255.255.255 User Datagram Protocol, Src Port: 67, Dst Port: 68 Dynamic Host Configuration Protocol (Offer) Message type: Boot Reply (2) Hardware type: Ethernet (0x01) Hardware address length: 6 Hops: 0 Transaction ID: 0xcf952d8d Seconds elapsed: 0 Bootp flags: 0x8000, Broadcast flag (Broadcast) Client IP address: 0.0.0.0 Your (client) IP address: 172.17.61.61 Next server IP address: 172.17.61.1 Relay agent IP address: 0.0.0.0 Client MAC address: cc:cc:cc:cc:cc:cc (cc:cc:cc:cc:cc:cc) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: DHCP Option: (53) DHCP Message Type (Offer) Option: (54) DHCP Server Identifier (172.17.61.1) Option: (51) IP Address Lease Time Length: 4 IP Address Lease Time: (600s) 10 minutes Option: (67) Bootfile name Length: 13 Bootfile name: syslinux.efi Option: (58) Renewal Time Value Length: 4 Renewal Time Value: (300s) 5 minutes Option: (59) Rebinding Time Value Length: 4 Rebinding Time Value: (525s) 8 minutes, 45 seconds Option: (1) Subnet Mask (255.255.224.0) Option: (28) Broadcast Address (172.17.63.255) Option: (3) Router Length: 4 Router: 172.17.61.1 Option: (6) Domain Name Server Length: 4 Domain Name Server: 172.17.61.1 Option: (255) End (MACs disguised)