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.