Originally Posted by nsvora
While testing the DDNS server configuration with proprietory client implementation for DHCP and DDNS, I noticed a strange thing. Any help here is appreciated.
DHCP and DDNS server are running on a single LINUX machine having following version:
Linux ns1.testdns.com 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:54:53 EST 2006 i686 i686 i386 GNU/Linux
The DHCP server was able to generate the dynamic IP Address as specified in the dhcpd.conf.
DDNS server was able to add the entries in the forward and reverse zone files eg : testdns.com and 1.168.192.in-addr.arpa
This ensures that DHCP and DDNS server settings are correct.
I modified the client host name and restarted the named service so that changes are reflected in the zone files. The forward zone file was expected to be updated with the modified host name.
Forward zone had two entries viz; one with old host name and other with new host name.
I have found that this is happening because in DDNS client code,
before updating the server database with modified host name, we are checking whether a record with “new” host name exists. And server replies in negative for this ( which is correct ) and client adds a new record for the new host name.
But previous entry with the old host name is never deleted from the server.
So, observation was multiple host names pointing to same IP.
This check is done via “Prerequisite” record sent by the DDNS client. Since the prerequisite check fails, client doesn’t send request for deletion of the “old” host name entry.
Forward zone file :/var/named/chroot/var/named/dyn/testdns.com
Could you kindly let me know if this behavior is correct to have multiple entries in the forward zone on change of host name. What should prerequisite record check for while updating the record?
( Similar would be observed for reverse zone on change of IP Address i.e multiple IP point to same name. )
No need to restart named. DDNS works by DHCP telling the DNS server "Hey, I have this host. . .here's the info. Oh, hey. . .this host hasn't replied back on it's lease, so delete it."
You changed a host name, never renewed the IP (so that DHCP knows what's going on), and restarted the DNS server. Throw enough wrenches into any situation and you'll get gawd-awful unexpected results.
Bottom line: next time, change the host name and renew the IP. That's all you need to do. DHCP and DNS will update accordingly, and change the serial number on your zone files so they propogate properly. Servers shouldn't be restarted, as the client changes will be almost immediate (again, as long as you renew the DHCP address), and if they're not, no big deal as it's just a name pointing to an IP. . .you'll get to the proper computer either way.
I forgot to add. . .it's best if you only either let clients update their own records or the DHCP server, but not both. IMHO, only let the DHCP server update records, as clients aren't exactly the greatest on cleaning up after themselves, and letting clients play with DNS isn't exactly the most secure thing in the first place.