Friday, 2 December 2011

PDNSD How To - A DNS caching personal server

PDNSD is a non authoritative Caching DNS server. It maintains a disk cache of the queries that you system performs and subsequent queries will be faster from the cache. It is safe enough to be use on a personal Unix/Linux system as a home Desktop or a Laptop.
Info about its history, current developer Paul Rombouts and other technical info can be see here http://www.phys.uu.nl/~rombouts/pdnsd.html.

Versions and OS:
OS: Fedora 16 x86_64
PDNSD: 1.2.8 RPM

Downloads:
Fedora 12,13,14,15,15. This should also work with RHEL and Cent OS
PDNSD i386 RPM
PDNSD_x86_84 RPM


Source tar:
PDNSD-1.2.8 SRC RPM
PDNSD-1.2.8 SRC TAR BALL

Debian
PDNSD

Free BSD
PDNSD

Gentoo
PDNSD

Network Requirements:
Your system supports the local interface 'lo' with a 127.0.0.1 ip. This is a standard for all computers irrespective of what OS it is.

A query able DNS server, e.g. your ISP's DNS, OpenDNS, or your ADSL Router if it has got a DNS server.

Necessary firewall configuration that allows DNS query from your system to the forwarding or authoritative DNS server

Login to start and stop network services.


Installation:
The Downloaded RPM's can be installed with yum. login as root and use the shell terminal and run the commands below. Yum should take care of any missing dependencies.

#yum localinstall pdnsd-1.2.8-par_el5.x86_64.rpm

If you are using the source tar then

#cd <path to the pdnsd source folder>
#./configure
#make
#make install

The files are installed to /usr/local/bin and a pdnsd.conf is copied to the /etc folder.

Configuration:
Your systems DNS configuration and pdnsd.con require amendments as below.

pdnsd.conf
Use a editor like vi to edit the pdnsd.conf file Two sections need changing for the server to serve DNS queries. Leave the remaining sections as is.


global {
        perm_cache=16384; - this is in kB, increase it if you want more disk cacheing
        server_ip = 127.0.0.1; this is the local 'lo' network interface
        paranoid=on; A security feature to avoid cache poisoning 
}
Let other options be defaults.

server {
        ip = som.eip.add.ress;  Put your ISP's DNS-server address(es) here.
        uptest = query;     Test if the network interface is active. The above DNS is queried with a DNS request
        interface=eth0;     The interface connected to the network.
}

Other options in the config file will be as is and change not required.

resolv.conf
In different Unix / Linux flavours, different files and configuration used. resolv.conf is the most common dns setting in a Unix / Linux system. Comment out all existing nameservers and add

nameserver 127.0.0.1

Start Service and Test:
The installation has installed a service that needs to be started and used. Also set the service to start up a boot.

#chkconfig --levels 3456 pdnsd on
#service start pdnsd

To test
# nslookup google.com
Server:        127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:    google.com
Address: 74.125.230.148
Name:    google.com
Address: 74.125.230.144
Name:    google.com
Address: 74.125.230.146
Name:    google.com
Address: 74.125.230.147
Name:    google.com
Address: 74.125.230.145

If there is a error check is the service status, network connectivity, the up DNS server, pdnsd status with

#pdnsd-ctl status

This is a great software for internal LAN, laptops and desktops where the dns query takes a long time and speeds up internet browsing and limits the network DNS traffic to minimal.

I personally use it with my laptop. Its very nice and has a minimal maintenance. 

-Bellamkonda Sudhakar

No comments:

Post a Comment