The sys admin's daily grind – Pdnsd

Short-Term Memory

Article from Issue 184/2016

Cache it, if you can! When the latencies of his Internet connection seem to take longer than Napoleon's reign, sys admin Charly comes up with a solution for name resolution.

It is always annoying when I need to use Internet via a satellite route. The latency is really bad. To counteract this, I use caching wherever I can. My choice of cache for DNS requests is Pdnsd [1]. More or less any fat distribution will have the lean and fast daemon in its collection. When launched, the daemon parses the content of /etc/hosts and stores it in its cache. Any DNS requests that I make are added.

By default, the cache is 2MB. If you have built a very long /etc/hosts throughout your IT landscape, you can modify the cache size in /etc/pdnsd.conf. The matching option resides in the global section. It goes by the name of perm_cache and expects the size in bytes – I use 8192. By the way, the option is named perm_cache because the cache not only resides in RAM but also on the disk. In other words, Pdnsd does not need to build the cache from scratch after a reboot.

In the global configuration section, you will find other central settings. One setting that is very important is:

server_ip =;

What this means is that Pdnsd only responds to DNS requests that come from localhost. If you want to allow other machines on the same network to submit IP requests to Pdnsd, you need to replace with the interface that points to your internal network:

server_ip = eth1;

Options min_ttl and max_ttl let you define the minimum and maximum amounts of time the cache will keep an entry. The defaults – 15 minutes and one week – make a lot of sense in my opinion, and I tend to leave them that way. This is not true of the timeout parameter, which is typically 10 seconds; this is not enough if you make generous use of a satellite route. I tend to double this value to timeout = 20s;.

Say It!

After setting up a new Pdnsd, I like to make it more chatty by setting verbose = 3;. (In difficult cases, I maximize the verbosity by setting debug = on.) Once everything has reached a steady state, I comment out this option, and Pdnsd silently goes about its work.

Another option that I find useful is status_ctl = on. It allows me to send commands to Pdnsd on the fly using the pdnsd-ctl tool. Figure 1 shows the command

sudo pdnsd-ctl status

in action. Right at the top, you can see the cache utilization level, followed by an overview of the active threads and global configuration options. The sudo pdnsd-ctl empty-cache command lets you empty the cache, which can be necessary after DNS changes if you do not want to wait until the TTL expires. You can type sudo pdnsd-ctl help for an overview of the other commands.

Figure 1: The start of the output from sudo pdnsd-ctl status.

Although Pdnsd is unable to cure latency in satellite connections, it can at least alleviate the pain – and that is a good thing.

Charly Kühnast

Charly Kühnast is a Unix operating system administrator at the Data Center in Moers, Germany. His tasks include firewall and DMZ security and availability. He divides his leisure time into hot, wet, and eastern sectors, where he enjoys cooking, freshwater aquariums, and learning Japanese, respectively.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Charly's Column – Varnish

    Columnist Charly gives Apache a slick coat of Varnish for better performance.

  • Charly's Column: Mod_bw

    A powerful web server will not help you much if too many users are competing for the bandwidth of its network connection. Sys admin columnist Charly came to a decision: The big data hogs get less favorable spots at his watering hole in future.

  • Charly's Column: iWatch

    Recently, sys admin Charly was faced with the task of synchronizing a directory on a server with two NFS-mounted clients. He wanted the whole thing to happen quickly and to be easily manageable, which ruled out DRBD and GlusterFS.

  • Two Types of Round Trip

    Due to the COVID-19 lockdown, Charly has time to devote to gadgets like graphical ping tools, flashing space stations, and space walks.

  • Charly's Column: Pulse

    Equal treatment, as sys admin Charly so boldly proposes, should be the norm. What he really wants is a free tool to sync user data across multiple computers.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More