Sunday, December 25, 2011

PDNSD HowTo - A DNS Caching Personal Server (Fedora 16)


PDNSD is a non authoritative caching DNS server. It maintains a disk cache of the queries that your system performs and subsequent queries will be faster from the cache. It is safe enough to be used 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 seen 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 CentOS.
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 queryable 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
# ./configure
# make
# make install
The files are installed to /usr/local/bin and a pdnsd.conf is copied to the /etc folder.

Configuration

Your system's DNS configuration and pdnsd.conf 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 here.
         uptest = query;     Test if the network interface is active. The up 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 changes are not required.
resolv.conf:
In different Unix / Linux flavours, different files and configurations are 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 The 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 an error check 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 a minimum.
I personally use it with my laptop. It's very nice and has a minimal maintenance. 
-Bellamkonda Sudhakar

No comments:

Post a Comment