DDNS handling of "dumb" DHCP clients

Uwe Meyer-Gruhl dhcp_email at congenio.de
Thu Aug 9 09:25:52 UTC 2012

I have a question regarding handling of DDNS updates for "dumb" 
non-Windows DHCP clients (e.g. printers):

As far as I understand the documentation, the sole supported DDNS update 
style is "interim", so I only tried that:

ddns-update-style interim;
ddns-updates on;
update-optimization off;
do-forward-updates on;
do-reverse-updates on;
update-static-leases on;

host printer {
     ddns-hostname printer;
     ddns-domainname print.mydomain.net;

Forward and reverse DDNS zones are configured, too.

With interim DDNS mode, the client sends DHCPDISCOVER or DHCPREQUEST. 
This packet MAY include an FQDN option (DHCP option 81) which can ask 
for the client wanting to update the forward map by itself by setting a 
bit. If the FQDN bit is unset or option 81 is missing at all, this is a 
sure sign that the client cannot handle the forward DDNS update by itself.

With "ignore client-updates", the DHCP server can even instruct capable 
clients not to do the update by themselves.

In all of the cases where the client does/can/should not handle the 
forward update itself, I would expect the DHCP server to do it, 
especially if "do-forward-updates" is "on". However, I find that if 
"ignore client-updates" is configured, the DHCP server does not do 
forward DDNS updates (which in turn prevents reverse updates, too).

But, even if "allow client-updates" ist configured, the presence of an 
FQDN option is needed in order to initiate a forward update. I had 
expected that the configuration of "ddns-hostname" and "ddns-domainname" 
would suffice instead of an FQDN coming from the client. My host entries 
are generated from a database, because it knows better than the clients 
what their DNS names are (or should be). Being able to override the 
client-provided DNS names is a crucial feature, IMHO, but the dhcpd.conf 
man page describes that mechanism only for the deprecated ad-hoc style:

       "For the ad-hoc DNS update method, the client's FQDN is derived  in  two
        parts.    First, the hostname is determined.   Then, the domain name is
        determined, and appended to the hostname.

        The DHCP server determines the client's hostname by first looking for a
        ddns-hostname   configuration  option,  and using that if it is present.
        If no such option is present, the server looks for a valid hostname  in
        the  FQDN option sent by the client.  If one is found, it is used; oth-
        erwise, if the client sent a host-name option, that  is  used.   Other-
        wise,  if  there  is a host declaration that applies to the client, the
        name from that declaration will be used.  If none of these applies, the
        server will not have a hostname for the client, and will not be able to
        do a DNS update.

        The domain name is determined based strictly on the  server  configura-
        tion, not on what the client sends.   First, if there is addns-domain-
        name  configuration option, it is used.   Second, if there is adomain-
        name   option  configured, that is used.  Otherwise, the server will not
        do the DNS update."

Essentially, I have not managed to make a "dumb" DHCP client work with 
letting the DHCP server do all the DDNS updates for it. There always has 
to be an FQDN option that must come from the client. There are plenty of 
configuration options that seem to handle everything I need, but I have 
not figured out how to do it.

Is this possible at all?

More information about the dhcp-users mailing list