You can work around this problem by using Microsoft DHCP relays provided with the Routing and Remota Access Services (RRAS). The DHCP relays must not cascade in this case.
In most configurations, the giaddr field will match the source IP address of the IP packet carrying the DHCP REQUEST, since this packet is created by the DHCP relay. However, some implementations of BOOTP/DHCP relays of third party router vendors are known to use the IP address configured for management in the "source IP address" of this packet, causing the two addresses not to match anymore. Furthermore, cascading BOOTP/DHCP relays (Relay1 forwarding requests to Relay2, which then is forwarding the request to a DHCP server) will result a mismatch in those fields.
If you look closer at such a datagram, it may look like this in your network analyzer with the highlighted fields differing.
Internet Protocol, Src Addr: 192.168.100.193 (192.168.100.193), Dst Addr: 192.168.100.10 (192.168.100.10)
User Datagram Protocol, Src Port: 68 (68), Dst Port: 67 (67)
Message type: Boot Request (1)
Client IP address: 0.0.0.0 (0.0.0.0)
Your (client) IP address: 0.0.0.0 (0.0.0.0)
Next server IP address: 0.0.0.0 (0.0.0.0)
Relay agent IP address (giaddr): 192.168.0.254 (192.168.0.254)
While this is perfectly in line with the requirements for the DHCP and BOOTP protocols, Microsoft DHCP server implementation fails to respond to those DHCP REQUESTS correctly when they originate from a PXE client and carry the "PXEClient" vendor extension field.
- Clarifications and Extensions for the Bootstrap Protocol
- Dynamic Host Configuration Protocol
MSKB Description of PXE Interaction Among PXE Client, DHCP, and RIS Server
MSKB PXE Clients May Discard All DHCP Offers Across Router
Article ID: 555228 - Last Review: 14 Feb 2017 - Revision: 1