I did this in datacenters with
multiple DHCP servers. Had to write them from scratch to accomodate clients 
requirements There were absolutely no issues with several replies
hitting clients (think thousands of servers).
The fastest reply to be received
after initial request - wins. 
Each request and reply is tracked with id.
     On Monday, September 30, 2024 at 10:15:02 p.m. GMT+9, Luca Di Gregorio 
<luc...@gmail.com> wrote:  
 
 



Den mån 30 sep. 2024 kl 10:57 skrev Luca Di Gregorio <luc...@gmail.com>:
> I'm trying to figure out how to configure a redundant dhcp server.

If you stick to static entries for your hosts on the network, you can
just set up N+1 dhcp daemons that answer the same (because their conf
would be the same) and the clients don't mind getting another answer a
few milliseconds later, since they are already configured by then, so
they drop the redundant answer.



I thought that receiving multiple DHCPOFFERs could causeproblems on the client, 
but I see in RFC2131:
3. The client receives one or more DHCPOFFER messages from one or more
 servers. The client may choose to wait for multiple responses.
 The client chooses one server from which to request configuration
 parameters, based on the configuration parameters offered in the
 DHCPOFFER messages. The client broadcasts a DHCPREQUEST message
 that MUST include the ’server identifier’ option to indicate which
 server it has selected, and that MAY include other options
 specifying desired configuration values
 
4. The servers receive the DHCPREQUEST broadcast from the client.
 Those servers not selected by the DHCPREQUEST message use the
 message as notification that the client has declined that server’s
 offer. The server selected in the DHCPREQUEST message commits the
 binding for the client to persistent storage and responds with a
 DHCPACK message containing the configuration parameters for the
 requesting client.

If the client sends DHCPREQUEST indicating the stored dhcp server,and dhcp 
server is down, the client times out and restartsthe DHCP mechanism from 
scratch. The client will choose the dhcp server ip addressof an dhcp server 
that is up at this moment
So my conclusions are that:1: multiple DHCP offers from multiple dhcpd's are 
not a problem2: synchronization of N dhcp servers  (with -y and -Y ) is useful 
to keep the same address    for the same client even if the previous (stored on 
the client) dhcp server goes down3: carp is not needed
Thanks for you response and time 
> In dhcpd(8) I see that the options -y and -Y implement "synchronisation of the
> lease allocations to a number of dhcpd daemons", anyway, in dhcpd.conf(5)
> I can't find anywhere any statement that sets the dhcp server as 'primary'
> or 'backup'.

I think any daemon with -Y will send out updates as it acts on dhcp requests.
Any daemon with -y will listen for such updates and if received, will
update its lease file with the info learned from the sender.

Who of those two that hears a request first and manages to send out an
update would be a race I guess, but if they were carp'ed, then the
carp backup would have a fully consistent view as it starts serving
dhcp requests after the main carp node disappears. The first failover
would be quick and nice, falling back again perhaps should be done
after each dhcp client has done a renewal so that the current dhcpd
has sent updates back again before moving the service to the normal
node.

> Is a carp-like mechanism put in place with synchronisation?
> That is, in carp I can see the "state master" or "state backup",
> I would expect something similar for dhcpd's in synchronisation mode.

for the parallel to carped firewalls, this is more like pfsync than
the carp part.

> Or, dhcrelay(8) must be used for redundancy? If yes, how?

As the number of networks grows, I would certainly think about having
a small net somewhere with N+1 dhcpds that sync each other, and then
for all the dynamic networks, they would relay dhcp requests to this
"pool" of dhcp servers.

-- 
May the most significant bit of your life be positive.

  

Reply via email to