Ran into a zone conflict today and had to dust off more BIND knowledge. This occurred after I added a host to a zone which was enabled for dynamic updates for DHCP clients. Getting dynamic updates to work in conjunction with ISC DHCP requires a long rant of its own. Since there are no errors written to the console while you start the daemon, I find it always fun to watch your syslog.

$ tail -f -n 300 /var/log/syslog
 zone sub.domain.com/IN: journal rollforward failed: journal out of sync with zone
 zone sub.domain.com/IN: not loaded due to errors.
 all zones loaded
 #stop the service gracefully
 $ systemctl stop bind9.service
 #delete the .jnl file
 $ rm /var/lib/bind/sub.domain.com.jnl
 #start BIND again
 $ systemctl start bind9.service
 #confirm the zone loaded while watching output from tail
 zone sub.domain.com/IN: loaded serial 423

If you have dynamic zones it is best to “freeze” them first before editing and “thaw” them after to avoid this problem in the first place. The commands for this are:

$ rndc freeze sub.domain.com
 #edit sub.domain.com zonefile
 $ rndc reload sub.domain.com
 #reload it
 $ rndc thaw sub.domain.com
 #resume processing the zone with thaw

When BIND has a conflict while loading the zone, all you need to do is simply delete the zone file that will have the extension “.jnl”.  This will be where ever your zone files are located. They are typically in /var/lib/bind or /etc/bind/zones. One of these days I’ll compile a master page instead of a post about all of my trouble working with BIND.

    Advertisment ad adsense adlogger