DHCP DDNS not working for Linux clients

This is the same problem asked here but there is no indication it was ever resolved for Eddie. Plus, I have already looked at the various answers and tried what was suggested without success.


I have a Linux box running a DHCP service (V3.0.7) and BIND9 (9.6.0-P1). I've configured it to have the DHCP service update the local DNS zone. The DNS updates are working perfectly for Windows and Mac clients but not for Linux (Debian Lenny and Ubuntu 8.10). Looking at the dhcp.leases file I see DDNS related information added for the leases handed out to Win and Mac clients but that information is not present for the leases handed out to he Linux clients. Lease file extract:
lease 192.168.10.199 {
  starts 4 2010/01/07 00:56:43;
  ends 5 2010/01/08 00:56:43;
  tstp 5 2010/01/08 00:56:43;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:e5:4d:9e:e9;
  uid "\001\000\014\345M\236\351";
  set ddns-rev-name = "199.10.168.192.in-addr.arpa.";
  set ddns-txt = "316ae6c100af725fdd91f9de7f200d6c7a";
  set ddns-fwd-name = "dell.mylocaldomain";
  client-hostname "dell";
}
lease 192.168.10.198 {
  starts 4 2010/01/07 05:14:39;
  ends 5 2010/01/08 05:14:39;
  binding state active;
  next binding state free;
  hardware ethernet 00:1c:42:e2:6f:4a;
  client-hostname "ubuntu";
}

Relevant part of dhcpd.conf:

authoritative;
ddns-updates on;
ddns-update-style interim;
ignore client-updates; # Have also tried allow client-updates, no change

update-static-leases on;
include "/etc/rndc.key";

zone mylocaldomain {
    primary 192.168.10.1;
    key rndckey;
}

zone 10.168.192.in-addr.arpa. {
    primary 192.168.10.1;
    key rndckey;
}

I've gone to the extend of stopping both the DHCP and DNS services and clearing out all information relating to the clients, such as leases and DNS records. The zone journal files were deleted and the services restarted. Upon forcing the clients to renew their leases I still have the same results.

What am I missing? Why are the Linux leases not updating DNS and why would it even matter what OS the clients have when it's the DHCP service that should be doing the updating?


Solution 1:

Is your Linux DHCP client asking for dynamic DNS update? I can't see any information in your question about that, and without it your Linux DHCP requests won't get DDNS registration on the server side. Look at the "DYNAMIC DNS" section in dhclient.conf(5) for details of the settings required.

Solution 2:

My issue was with the A and PTR records for an Ubuntu 10.04 (Lucid) DHCP client not being updated on a Windows 2003 Server running both the DHCP and DNS services.

I found this thread with a web search for windows dhcp ddns linux client, so even if this doesn't solve the OP's problem, there's a good chance it will solve someone else's who came the way I did.

After examining the logs in C:\WINDOWS\System32\dhcp, I could see the DHCP→DNS updates happening for all the clients on our LAN except for the Ubuntu box, similar to John's description of his problem. Making me think that it was something the DHCP client had to request. (Even though I had explicitly ticked the option for "Always dynamically update DNS A and PTR records" in the DHCP server properties. Hmph.)

This post gave me the precise solution I needed:

send fqdn.fqdn "mymachine.mydomain";
send fqdn.encoded off;
#                 ^^^ not sure if this is essential, or even desired, but
#                     it worked, so I'm not complaining.
send fqdn.server-update on;
do-forward-updates on;
#                  ^^ which may be the default anyway

added to /etc/dhcp3/dhclient.conf did the trick. After renewing the lease, the DHCP-to-DNS update went right through for the Ubuntu client, just as it had for the Windows DHCP clients.