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 <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 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

Share this page:

7 Comment(s)

Add comment

Please register in our forum first to comment.

Comments

By:

Worked nicely on my F16.

By F16 I mean Fedora Linux not the jet fighter  

 

Cheers,

Dimi

By: Alok

Before i install it on my cent os 6 machine, can you clarify whether this package has external dependencies which are not there in the official repositories.

By: Mahesh

will it cach all dns lookups such as A,MX,NS,PTR etc.

or it will only cache A records

Pls clarify me

By: xSwitcheR

Ive been searching for PDNSD rpm couple of week or so but couldnt find. link provided by above article is dead. Please verify this.. as im concern about this matter, maybe the author of pdnsd no longer maintaining the project.. hmm.. hopefully there's someone willing to fork this project ... 

 regards,

By: Erwin M.

Neither the project link nor the RPM link works anymore, I get a 404. I think the new homepage for the project is http://members.home.nl/p.a.rombouts/pdnsd/index.html

By: Erwin M.

I wrote a systemd file for the pdnsd. It's my first time with systemd, let me know if I made some mistakes. But the config file is working.

[Unit]
Description=PDNSD
ConditionPathExists=/usr/local/etc/pdnsd.conf
ConditionPathIsDirectory=/var/cache/pdnsd
After=NetworkManager.service

[Service]
Type=forking
ExecStart=/usr/local/sbin/pdnsd --daemon -p /var/run/pdnsd.pid
PIDFile=/var/run/pdnsd.pid

[Install]
WantedBy=multi-user.target

I like to start it after the NetworkManager, because I need pdnsd for the Globe 4G stick. You can enable it with:

systemctl daemon-reload 
systemctl start pdnsd.service
systemctl status pdnsd.service
systemctl enable pdnsd.service

By: Nico


 
 :D