PowerDNS is a
DNS server program, written in
C++ and licensed under the
GPL. It runs on most
Unix
Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
derivatives. PowerDNS features a large number of different ''backends'' ranging from simple
BIND
BIND () is a suite of software for interacting with the Domain Name System (DNS). Its most prominent component, named (pronounced ''name-dee'': , short for ''name Daemon (computing), daemon''), performs both of the main DNS server roles, acting ...
style zonefiles to
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
s
and
load balancing/
failover algorithms
In mathematics and computer science, an algorithm () is a finite sequence of mathematically rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for per ...
. A DNS
recursor is provided as a separate program.
History
PowerDNS development began in 1999 and was originally a commercial proprietary product. In November 2002, the source code was made public under the open-source GPL v2 license.
Features
PowerDNS
Authoritative Server (pdns_server) consists of a general purpose authoritative server, and multiple
dynamically loadable backends that both run
multi-threaded. The core handles all packet processing and DNS intelligence, while one or more backends deliver
DNS records using arbitrary
storage methods.
Zone transfers and update notifications are supported, and the processes can run ''unprivileged'' and ''
chroot
chroot is a shell (computer), shell command (computing), command and a system call on Unix and Unix-like operating systems that changes the apparent root directory for the current running process and its Child process, children. A program that i ...
ed''. Various ''
caches'' are maintained to speed up query processing. ''
Run-time control'' is available through the pdns_control command, which allows reloading of separate zones, cache purges, zone notifications and dumps
statistics
Statistics (from German language, German: ', "description of a State (polity), state, a country") is the discipline that concerns the collection, organization, analysis, interpretation, and presentation of data. In applying statistics to a s ...
in
Multi Router Traffic Grapher /
rrdtool format. Realtime information can also be obtained through the optional built-in
web server
A web server is computer software and underlying Computer hardware, hardware that accepts requests via Hypertext Transfer Protocol, HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, co ...
.
There are many independent projects to create management interfaces for PowerDNS.
DNSSEC
The PowerDNS
Authoritative Server supports
DNSSEC as of version 3.0. While pre-signed zones can be served, it is also possible to perform online signing & key management. This has the upside of being relatively easy, but the downside that the cryptographic keying material is present on the servers itself (which is also true of any HTTPS server when not used with a
HSM for example).
Recursor
PowerDNS Recursor (pdns_recursor) is a ''resolving'' DNS server, that runs as a separate process.
This part of PowerDNS uses a combination of native threads and user-space threads, through the use of
Boost and the MTasker library, which is a simple cooperative multitasking library. It is also available as a standalone package.
It does not have to run a pdns_server process as a gatekeeper for pdns_recursor, if the goal is simply to provide caching/recursing/resolving nameservice as running pdns_recursor on its own is even more efficient than behind the authoritative component.
Support for
DNSSEC validation was added to the pdns_recursor in version 4.0.
DNSdist
PowerDNS DNSdist (dnsdist
) is a caching DNS proxy, with many features including:
* Load Balancing of DNS Queries
* DNS Encryption Support - DNS over HTTPS, DNS over TLS, both upstream and downstream (i.e. to clients and backends)
* Lua Policy Engine - Extensive capabilities for creating rules for processing DNS packets, such as changing the response, re-routing a query or blocking traffic over a max QPS from a subnet.
* Dynamic Rule Generation - Used to create Dynamic Blocks which are short-lived rules, automatically inserted based on configurable thresholds and the analysis of recently received traffic. Used to deal with DoS attacks
DNSdist is available as a standalone package, and can be deployed with PowerDNS Authoritative Server or Recursor, or any other third-party DNS server.
See also
*
Comparison of DNS server software
This article presents a comparison of the features, platform support, and packaging of many independent implementations of Domain Name System (DNS) name server software.
Servers compared
Each of these Domain Name System, DNS servers is an inde ...
References
External links
*
*
{{DEFAULTSORT:Powerdns
DNS software
Free software programmed in C++
Free network-related software
Lua (programming language)-scriptable software
DNS server software for Linux