PowerDNS is a DNS server developed by PowerDNS.COM BV, and known for its variety of backends.

PowerDNS is a DNS server, designed and running on most UNIX operating systems. It allows dynamic DNS changes through several backends, therefore making DNS zones edition easier than the basic BIND configuration scheme. PowerDNS 3.0 includes a DNSSEC support.

Basics

In its basic configuration, PowerDNS (shortened "pdns" in a technical environment) runs with 2 components:

  • A core server, pdns_server, handling DNS-related operations.
  • Loadable backends running as independent threads, handling data storage and organisation.

At the moment, the documentation refers to the following backends:

  • The random backend: silly little backend for demonstration and testing. Generates a random IP address for a given domain name.
  • Pipe backend: the core server handles communication and gets its data from a third-party program, used as the backend. This setup allows the system administrator to use the possibilities of UNIX pipes, and build more complex DNS queries handling processes.
  • MySQL/pgSQL backend: the core server gets its data from a MySQL or pgSQL database, which has to follow a given structure.
  • Oracle backend: same behaviour as above, with some Oracle specifics.
  • SQLite: same behaviour as above, with some SQLite specifics.
  • IBM DB2: same behaviour as above, with some IBM DB2 specifics.
  • OpenDBX backend: same behaviour as above. The module is independent.
  • Bind backend: allows PowerDNS to work as an intermediate process between the client and Bind zone files.
  • ODBC backend (windows only): allows PowerDNS to get information from any source of which it has the correct ODBC driver for.
  • LDAP backend (unmaintained and declared unstable): allows PowerDNS to store its data in a lightweight directory.
  • Geo backend: allows PowerDNS to handle DNS requests on an IP/country basis, using a GeoIP-like database.
  • Lua backend: allows PowerDNS to resolve queries using a Lua script.
  • TinyDNS (recent and experimental): allows PowerDNS to store data in a CDB file.
  • Remote backend: allows PowerDNS to use sockets, pipe and other network components to resolve its DNS queries.

Note: backends are usually referred to as modules, meaning anyone can develop his own DNS queries handler.

The PowerDNS recursor

The recursor is an additional component for a PowerDNS server. The core server can be configured to proxy requests to the recursor, acting as a DNS resolver. It allows the use of caches, recursing and resolving. Running the recursor on its own is therefore more efficient than running it behind the authoritative pdns_server. The pdns_recursor is known to run on several broadband providers infrastructures, as it can handle numerous requests through a multi-threaded behaviour (MTasker library homepage).