home

dns replication using rsync

Buy Himcolin No Prescription Tenormin No Prescription Chitosan For Sale Buy Requip Online Buy Online Soma Buy Vasotec No Prescription Proventil No Prescription Zoloft Ultram For Sale Buy Lukol Online Buy Online Lexapro Buy Ultram No Prescription Styplon No Prescription Imitrex For Sale Buy Lincocin Online Buy Online Coumadin Buy Accutane No Prescription Prozac No Prescription Calan For Sale Buy Tentex Royal Online Buy Online Emsam Buy Snoroff No Prescription Lasuna No Prescription Brafix For Sale Buy Toprol XL Online Buy Online Kytril

There are many ways to transfer domain information among DNS Servers, but the preferred method using djbdns (or tinydns) is through rsync using ssh.

There is a tiny program/script called axfrdns, but this is most likely used to update DNS servers running bind.

Since tinydns/djbdns uses a single data file to store domain information, it is easy to simply setup a few servers that will “replicate” dns — providing master-master replication and synchronization, as opposed to master-slave replication.

Here’s how some friends and I have it setup.

We created a dnsadmin user on each box. We then created public/private ssh keys using ssh-keygen:

% ssh-keygen -t dsa -b 2048

After copying the generated id_dsa.pub entry to the other server’s trusted, authorized_keys2 :

% cat id_dsa-from-one-server.pub >> /home/dnsadmin/.ssh/authorized_keys2

We then tested a quick copy:

% scp -i /home/dnsadmin/.ssh/id_dsa testfile.txt dnsadmin@example.com:/tmp/

And after some permission fixes, came up with this script that goes in /var/tinydns/root/ to update dns on all 3 boxes:

#!/bin/bash
## pushes out dns changes to backup servers
make=”/usr/bin/make”
rsync=”/usr/bin/rsync”
chown=”/usr/bin/chown”
remoteips=”xxx.xxx.xxx.xxx”
remoteuser=”dnsadmin”
identity=”/home/dnsadmin/.ssh/id_dsa”
$make
$chown dnsadmin:root /var/tinydns/root/data.cdb
$chown dnsadmin:root /var/tinydns/root/data
for ip in $remoteips; do
$rsync -az -e “ssh -i $identity” data $remoteuser@$ip:/var/tinydns/root/data
$rsync -az -e “ssh -i $identity” data.cdb $remoteuser@$ip:/var/tinydns/root/data.cdb
done