You are here: Home Tech Use DJBDNS to slave a zone from a master

Use DJBDNS to slave a zone from a master

by Chris Shenton last modified Sep 24, 2009 04:45 PM
It's not like BIND but it's not hard either. Master-IP-based directories hold domain-name files that tell the "puller" where and what to get.

Change to the TinyDNS root dir:

cd /var/service/tinydns/root

Create a dir named for the IP of DNS zone master server:

mkdir 10.246.241.109

cd into that dir:

cd 10.246.241.109

Touch a file for each domain name to be slaved, axfr.$DOMAINNAME:

touch axfr.example.com
touch axfr.example.org

Go up to the root and run the slaver; it's a perl script written by Russ Nelson that looks for dirs named for masters' IP addresses with files named axfr.* in them and pull from the address the named domain:

/usr/local/bin/axfr.pl -D

The -D shows you what it's doing. This can be slow depending on the response time of ALL the masters it's querying. I don't know of a way to tell it to slave only one zone.

This is the same thing as cron runs to slave periodically:

55 * * * *    /usr/bin/cd /var/service/tinydns/root && env PATH=/bin:/sbin:/usr/bin:/usr/local/bin /usr/local/bin/axfr.pl

It does not respond to signals from the master to pull records. DJB doesn't believe in this complexity and would prefer slaves to pull from masters using simple scp or rsync instead of inventing new protocols.

Test:

cshenton@Asylum/~$ dig @ns.example.net example.org

; (1 server found)
;; ANSWER SECTION:
example.org.    86400   IN      A       192.168.1.2

;; AUTHORITY SECTION:
example.org.    86400   IN      NS      ns1.example.net.

;; ADDITIONAL SECTION:
ns1.example.net.     86400   IN      A       10.1.2.3

;; SERVER: 192.3.2.1.10#53(10.1.2.3)
Share this: