How to install and configure djbdns from source
as a Cachening Localhost Proxy resolver to increase resolving
efficiency on Debian 6 Squeeze
It seems DjbDNS on Debian Squeeze has been not included as a Debian
package. There is still possibility to install djbdns from an older
deb package or install it from source. I however decided to install
it from source as finding the old Debian package for Lenny and Etch
takes time, plus I'm running an amd64 version of Debian and this
might even more complicate the situation.
Installing it from source is not really a Debian way but at least
it works.
In this article I assume that
daemontools and
ucspi-tcp are preliminary installed, if not one needs to
install them with:
debian:~# apt-get install ucspi-tcp daemontools
...
The above two ones are required as DJBDNS is originally made to run
through djb's daemontools.
Here is the exact step I took to have it installed as local caching
DNS server on a Debian Squeeze server:
1. Download and untar DjbDNS
debian:~# wget -q http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
debian:~# tar -zxvvf djbdns-1.05.tar.gz
...
2. Add DjbDNS users to /etc/passwd
Creating the below two users is not arbitrary but it's
recommendable.
echo 'dnscache:*:54321:54321:dnscache:/dev/null:/dev/null'
>> /etc/passwd
echo 'dnslog:*:54322:54322:dnslog:/dev/null:/dev/null' >>
/etc/passwd
3. Compile DJBDNS nameserver
First it's necessery to use the below echo command to work around a
common Linux bug:
debian:~# echo gcc -O2 -include /usr/include/errno.h >
conf-cc
Next make it:
debian:~# make
4. Install the compiled djbdns binaries
debian:~# make setup check
# here comes some long install related output
If no errors are produced by
make setup check this means
that the djbdns should have installed itself fine.
As installation is compileted it's a good idea to report about the
newly installed DjbDNS server if running a mail server. This info
is used by Dan Bernstein to gather statistical data about the
number of installations of
djbdns servers throughout the
world.
5. Do some general configurations to the newly installed
DJBDNS
Now let's copy the list of the IP addresses of the global DNS root
servers in
/etc/.
debian:~# cp -rpf dnsroots.global /etc/
debian:~# ./dnscache-conf dnscache dnslog /etc/dnscache
0.0.0.0
dnscache-conf will generate some default configuration files
for djbdns in
/etc/dnscache
Next allow the networks which should be able to use the just
installed djbdns server as a caching server:
debian:~# cd /etc/dnscache/root/ip
debian:~# touch 192.168.1
debian:~# touch 123.123
First command will allow all ips in range
192.168.1.* to be
able to access the DNS server and the second command will allow all
ips from
123.123.1-255.1-255 to be able to query the
server.
Some further fine tunning can be done from the files:
/etc/dnscache/env/CACHESIZE and
/etc/dnscache/env/DATALIMIT
As a last step, before it's running, we have to link the
/etc/dnscache to daemontools like so:
debian:~# ln -sf /etc/dnscache
/etc/service/dnscache
If the daemontools is not linked to be accessible via
/etc/service it's also a good to link it there:
debian:~# ln -sf /etc/service /
Now the DJBDNS should be running fine, to test if it's running
without errors through daemontools I used:
debian:~# ps ax|grep -i readproc
5358 pts/18 R+ 0:00 grep -i readproc
11824 ? S 0:00 readproctitle service errors:
...........
If no errors are displayed it's configured and running to also test
if it's capable of resolving I used the host command:
debian:~# host host pc-freak.net localhost
Using domain server:
Name: localhost
Address: 127.0.0.1#53
Aliases:
pc-freak.net has address 83.228.93.76
pc-freak.net mail is handled by 0
mail.pc-freak.net.
Now the DJBDNS is properly installed and if you test it for a while
with
time host somehost.com localhost , you will see how
quick it is in resolving.
After running DJBDNS does not require almost no maintance and it's
rock solid and great just like all other Dan Bernstein's written
software.
Enjoy ;)