Can you use DHCP to assign an address to the downstream interface used by dhcrelay?

Simon dhcp1 at thehobsons.co.uk
Fri Feb 2 12:43:16 UTC 2024


On 2 Nov 2023, at 17:13, Vallevand, Mark K <Mark.Vallevand at UNISYS.com> wrote:

> I have configured dhcrelay upstream and downstream interfaces and a server address.
> DHCP addresses are correctly relayed from machines on the downstream side to the upstream side and back.
> Rather than using a static address in the downstream interface, I would like to assign a DHCP address using dhclient to the downstream interface.
> Dhcrelay does not seem to handle this case.  If the origin of the request is the actual downstream interface, it is not relayed.
> Is this possible?  Can I use dhclient to get an address for the downstream interface used by dhcrelay?

Sorry, I’ve not had time to keep up here for a bit - I see this one seems to have gone unanswered.

Unfortunately, you are in a catch-22 situation here. If the downstream interface doesn’t have an IP address then presumably the relay cannot fill in the GI-Addr field. If it can’t fill in the GI-Addr field, then the server can’t locate the interface in order to offer an address.

To get around this situation, you’d need to configure the device in some way before it could then use DHCP to get an address for the downstream - and once you’ve set this up, you might as well just configure the interface.
Alternatively, you might be able to do some “fudge” to get a subnet from the server (similar to the way IPv6 Prefix Delegations can be done) and then use an algorithm to configure the interface (e.g. pick the lowest usable address in the subnet). The DHCP server would need some way of associating the request with the device - and of course it needs the subnet details (such as router) configured anyway in order to hand them to the clients.

However, I think your observation is a separate implementation specific limitation. Because of the need to handle unaddressed packets (i.e. it needs to receive and send broadcasts from/to the clients before they have an IP address) I assume the relay agent shares code with the server in using a raw packet interface rather than going through the IP stack. You can’t have two bits of software doing this, and in any case running a client would result in a broadcast packet OUT of the interface which would not be seen as an incoming packet by the relay agent.

I assume not the answer you were looking for, but at least you now understand why it isn’t working.


Simon



More information about the dhcp-users mailing list