Running A MySQL-Based DNS Server: MyDNS - Page 3
3 Install dnscache
One very important thing to know about MyDNS is that it does not support external (recursive) DNS lookups, i.e. MyDNS will deliver answers only for domains that it is authoritative for! If you want to resolve other domains like, for example, www.google.com, you will have to install a DNS resolver like dnscache on your system, and it has to be installed on a separate IP address. To find out why the DNS server (MyDNS) and the DNS resolver (dnscache) are separated like that, have a look here: http://cr.yp.to/djbdns/separation.html
Normally, your ISP gives you IP addresses of name servers that you use for your internet connection at home or in your office so that your workstation can resolve names like www.google.com. The name server IP addresses are actually IP addresses of DNS resolvers like dnscache. Now if you want to give your customers your own name server IP addresses, you must set up a DNS resolver and give your customers the IP address of that DNS resolver.
Now, if you only have one IP address on your server, you could say, "Ok, I bind MyDNS to 127.0.0.1 and dnscache to my public IP address to get around this bottleneck.". Please read here to find out why this is a bad idea: http://www.fefe.de/djbdns/#sameip
If you do not want to install a DNS resolver on your system, you can skip this section.
Now lets say you have two public IP addresses, 22.214.171.124 and 126.96.36.199, and you want MyDNS to listen on 188.8.131.52 and dnscache to listen on 184.108.40.206.
Do the following steps to install dnscache:
Create the dnscache init script:
Create the system startup links:
update-rc.d dnsctl defaults
On Fedora and RedHat:
chkconfig --levels 235 dnsctl on
Then we compile and install dnscache:
mkdir -p /var/package
ln -s /etc/dnscache /service
Now dnscache is listening on 220.127.116.11. Now we have to tell MyDNS that it should listen on 18.104.22.168 only. Therefore we have to change the listen directive in /etc/mydns.conf:
and restart MyDNS:
Now if you try to resolve domain names on 22.214.171.124, you should get an answer. E.g., to resolve www.google.com, you can run
dig @126.96.36.199 www.google.com
In the same way you should be able to resolve domains handled by MyDNS (e.g. www.somedomain.com), but this time you dig 188.8.131.52:
dig @184.108.40.206 www.somedomain.com
4 Getting The Zones And Records From The Primary To The Secondary DNS Server
If both the primary and the secondary DNS server use MyDNS, you have three possibilities to get the data from the primary to the secondary DNS server:
I recommend that you use MySQL replication. I have written a very precise guide about how to set this up here: http://www.howtoforge.com/mysql_database_replication so I do not have to cover this topic here again.