PowerDNS

From Wikipedia, the free encyclopedia

PowerDNS
Latest release: 2.9.20 / March 15, 2006
Use: DNS server
License: GNU General Public License
Website: www.powerdns.com

PowerDNS is a versatile DNS server, written in C++ and licensed under the GPL. It runs on most Unix derivatives and on Microsoft Windows. PowerDNS features a large number of different backends ranging from simple BIND style zonefiles to relational databases and load balancing/failover algorithms. A DNS recursor is also included as a separate program. Anecdotal evidence suggests that around 10% of all world domains are powered by this nameserver, 49% of the German .DE zone and 7% of the .NET zone. [1]

PowerDNS is a product of the Dutch company PowerDNS.COM BV, with numerous contributions from the Open Source community. The principal author is Bert Hubert.

Contents

[edit] Features

PowerDNS consists of a single core, and multiple dynamically loadable backends that 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 chrooted. Various caches are maintained to speed up query processing. Runtime control is available through the pdns_control command, which allows reloading of separate zones, cache purges, zone notifications and dumps statistics in Multi Router Traffic Grapher format. Realtime information can also be obtained through the optional built-in web server.


[edit] Recursor

The pdns_recursor is a resolving DNS server, that runs as a separate process. The authorative pdns_server can be configured to proxy recursive queries to the recursor, and optionally overlay authoritative zone data.

This part of PowerDNS is single threaded, but is written as if it were multi-threaded, by the use of the MTasker library, which is a simple cooperative multitasking library. It is also available as a standalone package.

It does 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 probably even more efficient than behind the authorative component.

As of 2007, the Recursor is used by several of the largest Internet providers of the world, including AOL, Shaw Cable and Neuf Cegetel.

[edit] Backends

bind and bind2 
Reads zone data from regular BIND style zonefiles
db2 
Queries an IBM_DB2 database server
geo 
Allows different answers to DNS queries coming from different IP address ranges or based on the geographic location
gmysql 
Supports MySQL databases
gpgsql 
Supports PostgreSQL databases
goracle 
Supports Oracle databases
gsqlite 
Supports SQLite databases
ldap 
Fetches zone data from a hierarchical LDAP directory
odbc 
Retrieves zone information from a database supported by the ODBC library
opendbx 
A database backend optimized for speed, load balancing and fail-over based on the OpenDBX library. It currently supports MySQL, PostgreSQL, SQLite, Firebird, Interbase, SQL Server and Sybase ASE
pipe 
Asks a separate process for answers
random 
Returns random data (for testing only)
xdb 
Can talk to Tridge's Trivial Database or to regular *db tables on disk. This backend provides the highest performance

[edit] PowerDNS and Wikimedia

As of early 2005, PowerDNS in combination with the bind and geo backends is used by Wikimedia to handle all DNS traffic. By using the geobackend, incoming clients can be redirected to the nearest Wikipedia server (based on their geographic location). This facility provides an effective way of load balancing and it reduces response times for the clients.

[edit] See also

[edit] External links

In other languages