Before proceeding, you should check the release notes for your PDNS version, as specified in the name of the distribution file.
Two bugfixes, one stability/security related. No new features.
Developers: this version is compatible with 1.99.11 backends.
Bugfixes:
zone2sql refused to work under some circumstances, taking 100% cpu and not functioning. Thanks to Andrew Clark and Mike Benoit for reporting this.
Fixed a stability issue where malformed packets could force PDNS to reload. Present in all earlier 2.0 versions.
Mostly bugfixes, no really new features.
Developers: this version is compatible with 1.99.11 backends.
Bugs fixed:
chroot() works again - 2.0rc1 silently refused to chroot. Thanks to Hub Dohmen for noticing this.
setuid() and setgid() security features were silently not being performed in 2.0rc1. Thanks to Hub Dohmen for noticing this.
MX preferences over 255 now work as intended. Thanks to Jeff Crowe for noticing this.
IPv6 clients can now also benefit from the recursing backend feature. Thanks to Andy Furnell for proving beyond any doubt that this did not work.
Extremely bogus code removed from DNS notification reception code - please test! Thanks to Jakub Jermar for working with us in figuring out just how broken this was.
AXFR code improved to handle more of the myriad different zonetransfer dialects available. Specifically, interoperability with Bind 4 was improved, as well as Bind 8 in 'strict rfc conformance' mode. Thanks again for Jakub Jermar for running many tests for us. If your transfers failed with 'Unknown type 14!!' or words to that effect, this was it.
Features:
Win32 version now has a zone2sql tool.
Win32 version now has support for specifying how urgent messages should be before they go to the NT event log.
Remaining issues:
One persistent report of the default 'chroot=./' configuration not working.
One report of disable-axfr and allow-axfr-ips not working as intended.
Support for relative paths in zones and in Bind configuration is not bug-for-bug compatible with bind yet.
The MacOS X release! A very experimental OS X 10.2 build has been added. Furthermore, the Windows version is now in line with Unix with respect to capabilities. The ODBC backend now has the code to function as both a master and a slave.
Developers: this version is compatible with 1.99.11 backends.
Implemented native packet response parsing code, allowing Windows to perform AXFR and NS and SOA queries.
This is the first version for which we have added support for Darwin 6.0, which is part of the forthcoming Mac OS X 10.2. Please note that although this version is marked RC1, that we have not done extensive testing yet. Consider this a technology preview.
The Darwin version has been developed on Mac OS X 10.2 (6C35). Other versions may or may not work.
Currently only the random, bind, mysql and pdns backends are included.
The menu based installer script does not work, you will have to edit pathconfig by hand as outlined in chapter 2.
On Mac OS X Client, PDNS will fail to start because a system service is already bound to port 53.
This version is distributed as a compressed tar file. You should follow the generic UNIX installation instructions.
Bugs fixed:
Zone2sql PostgreSQL mode neglected to lowercase $ORIGIN. Thanks to Maikel Verheijen of Ladot for spotting this.
Zone2sql PostgreSQL mode neglected to remove a trailing dot from $ORIGIN if present. Thanks to Thanks to Maikel Verheijen of Ladot for spotting this.
Zonefile parser was not compatible with bind when $INCLUDING non-absolute filenames. Thanks to Jeff Miller for working out how this should work.
Bind configuration parser was not compatible with bind when including non-absolute filenames. Thanks to Jeff Miller for working out how this should work.
Documentation incorrectly listed the Bind backend as 'slave capable'. This is not yet true, now labeled 'experimental'.
Windows changes. We are indebted to Dimitry Andric who educated us in the ways of distributing Windows software.
pdns.conf is now read if available.
Console version responds to ^c now.
Default pdns.conf added to distribution
Uninstaller missed several files, leaving remnants behind
DLLs are now installed locally, with the pdns executable.
pdns_control is now also available on Windows
ODBC backend can now act as master and slave. Experimental.
The example zone missed indexes and had other faults.
A runtime DLL that is present on most windows systems (but not all!) was missing.
The Windows release! See Chapter 3. Beware, windows support is still very fresh and untested. Feedback is very welcome.
Developers: this version is compatible with 1.99.11 backends.
Windows 2000 codebase merge completed. This resulted in quite some changes on the Unix end of things, so this may impact reliability
ODBC backend added for Windows. See Section A.9.
IBM DB2 Universal Database backend available for Linux. See Section A.7.
Zone2sql now understands $INCLUDE. Thanks to Amaze Internet for nagging about this
The SOA Mininum TTL now has a configurable default (soa-minimum-ttl)value to placate the DENIC requirements.
Added a limit on the simultaneous numbers of TCP connections to accept (max-tcp-connections). Defaults to 10.
Bugs fixed:
When operating in virtual hosting mode (See Chapter 8), the additional init.d scripts would not function correctly and interface with other pdns instances.
PDNS neglected to conserve case on answers. So a query for WwW.PoWeRdNs.CoM would get an answer listing the address of www.powerdns.com. While this did not confuse resolvers, it is better to conserve case. This has semantical concequences for all backends, which the documentation now spells out.
PostgreSQL backend was case sensitive and returned only answers in case an exact match was found. The Generic PostgreSQL backend is now officially all lower case and zone2sql in PostgreSQL mode enforces this. Documentation has been been updated to reflect the case change. Thanks to Maikel Verheijen of Ladot for spotting this!
Documentation bug - postgresql create/index statements created a duplicate index. If you've previously copy pasted the commands and not noticed the error, execute CREATE INDEX rec_name_index ON records(name) to remedy. Thanks to Jeff Miller for reporting this. This also lead to depressingly slow 'ANY' lookups for those of you doing benchmarks.
Features:
pdns_control (see Section B.1.1) now opens the local end of its socket in /tmp instead of next to the remote socket (by default /var/run). This eases the way for allowing non-root access to pdns_control. When running chrooted (see Chapter 7), the local socket again moves back to /var/run.
pdns_control now has a 'version' command. See Section B.1.1.
This release is important because it is the first release which is accompanied by an Open Source Backend Development Kit, allowing external developers to write backends for PDNS. Furthermore, a few bugs have been fixed:
Lines with only whitespace in zone files confused PDNS (thanks Henk Wevers)
PDNS did not properly parse TTLs with symbolic sufixes in zone files, ie 2H instead of 7200 (thanks Henk Wevers)
IMPORTANT: there has been a tiny license change involving free public webbased dns hosting, check out the changes before deploying!
PDNS is now feature complete, or very nearly so. Besides adding features, a lot of 'fleshing out' work is done now. There is an important performance bug fix which may have lead to disappointing benchmarks - so if you saw any of that, please try either this version or 1.99.8 which also does not have the bug.
This version has been very stable for us on multiple hosts, as was 1.99.9.
PostgreSQL users should be aware that while 1.99.10 works with the schema as presented in earlier versions, advanced features such as master or slave support will not work unless you create the new 'domains' table as well.
Bugs fixed:
Wildcard AAAA queries sometimes received an NXDOMAIN error where they should have gotten an empty NO ERROR. Thanks to Jeroen Massar for spotting this on the .TK TLD!
Do not disable the packetcache for 'recursion desired' packets unless a recursor was configured. Thanks to Greg Schueler for noticing this.
A failing backend would not be reinstated. Thanks to 'Webspider' for discovering this problem with PostgreSQL connections that die after prolonged inactivity.
Fixed loads of IPv6 transport problems. Thanks to Marco Davids and others for testing. Considered ready for production now.
Zone2sql printed a debugging statement on range $GENERATE commands. Thanks to Rene van Valkenburg for spotting this.
Features:
PDNS can now act as a master, sending out notifications in case of changes and allowing slaves to AXFR. Big rewording of replication support, domains are now either 'native', 'master' or 'slave'. See Chapter 12 for lots of details.
Zone2sql in PostgreSQL mode now populates the 'domains' table for easy master, slave or native replication support.
Ability to disable those annoying Windows DNS Dynamic Update messages from appearing in the log. See log-failed-updates in Chapter 14.
Ability to run on IPv6 transport only
Logging can now happen under a 'facility' so all PDNS messages appear in their own file. See Section 6.3.
Different OS releases of PDNS now get different install path defaults. Thanks to Mark Lastdrager for nagging about this and to Nero Imhard and Frederique Rijsdijk for suggesting saner defaults.
Infrastructure for 'also-notify' statements added.
This is again a feature and an infrastructure release. We are nearly feature complete and will soon start work on the backends to make sure that they are all master, slave and 'superslave' capable.
Bugs fixed:
PDNS sometimes sent out duplicate replies for packets passed to the recursing backend. Mostly a problem on SMP systems. Thanks to Mike Benoit for noticing this.
Out-of-bailiwick CNAMES (ie, a CNAME to a domain not in PDNS) caused a 'ServFail' packet in 1.99.8, indicating failure, leading to hosts not resolving. Thanks to Martin Gillstrom for noticing this.
Zone2sql balked at zones editted under operating sytems terminating files with ^Z (Windows). Thanks Brian Willcott for reporting this.
PostgreSQL backend logged the password used to connect. Now only does so in case of failure to connect. Thanks to 'Webspider' for noticing this.
Debian unstable distribution wrongly depended on home compiled PostgreSQL libraries. Thanks to Konrad Wojas for noticing this.
Features:
When operating as a slave, AAAA records are now supported in the zone. They were already supported in master zones.
IPv6 transport support - PDNS can now listen on an IPv6 socket using the local-ipv6 setting.
Very silly randombackend added which appears in the documentation as a sample backend. See Appendix C.
When transferring a slave zone from a master, out of zone data is now rejected. Malicious operators might try to insert bad records otherwise.
'Supermaster' support for automatic provisioning from masters. See Section 12.2.1.
Recursing backend can now live on a non-standard (!=53) port. See Chapter 11.
Slave zone retrieval is now queued instead of immediate, which scales better and is more resilient to temporary failures.
max-queue-length parameter. If this many packets are queued for database attention, consider the situation hopeless and respawn.
Internal:
SOA records are now 'special' and each backend can optionally generate them in special ways. PostgreSQL backend does so when operating as a slave.
Writing backends is now a lot easier. See Appendix C.
Added Bindbackend to internal regression tests, confirming that it is compliant.
A lot of infrastructure work gearing up to 2.0. Some stability bugs fixed and a lot of new features.
Bugs fixed:
Bindbackend was overly complex and crashed on some systems on startup. Simplified launch code.
SOA fields were not always properly filled in, causing default values to go out on the wire
Obscure bug triggered by malicious packets (we know who you are) in SOA finding code fixed.
Magic serial number calculation contained a double free leading to instability.
Standards violation, questions for domains for which PDNS was unauthoritative now get a SERVFAIL answer. Thanks to the IETF Namedroppers list for helping out with this.
Slowly launching backends were being relaunched at a great rate when queries were coming in while launching backends.
MySQL-on-unix-domain-socket on SMP systems was overwhelmed by the quick connection rate on launch, inserted a small 50ms delay.
Some SMP problems appear to be compiler related. Shifted to GCC 3.0.4 for Linux.
Ran ispell on documentation.
Feature enhancements:
Recursing backend. See Chapter 11. Allows recursive and authoritative DNS on the same IP address.
NAPTR support, which is especially useful for the ENUM/E.164 community.
Zone transfers can now be allowed per netmask instead of only per IP address.
Preliminary support for slave operation included. Only for the adventurous right now! See Section 12.2
All record types now documented, see Chapter 16.
Wildcard CNAMES do not work as they do with bind.
Recursion sometimes sends out duplicate packets (fixed in 1.99.9 snapshots)
Some stability issues which are caught by the guardian
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend
Named.conf parsing got a lot of work and many more bind configurations can now be parsed. Furthermore, error reporting was improved. Stability is looking good.
Bugs fixed:
Bind parser got confused by filenames with underscores and colons.
Bind parser got confused by spaces in quoted names
FreeBSD version now stops and starts when instructed to do so.
Wildcards were off by default, which violates standards. Now on by default.
--oracle was broken in zone2sql
Feature enhancements:
Line number counting goes on as it should when including files in named.conf
Added --no-config to enable users to start the pdns daemon without parsing the configuration file.
zone2sql now has --bare for unformatted output which can be used to generate insert statements for different database layouts
zone2sql now has --gpgsql, which is an alias for --mysql, to output in a format useful for the default Generic PgSQL backend
zone2sql is now documented.
Wildcard CNAMES do not work as they do with bind.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend
This version is now running on dns-eu1.powerdns.net and working very well for us. But please remain cautious before deploying!
Bugs fixed:
Webserver neglected to show log messages
TCP question/answer miscounted multiple questions over one socket. Fixed misnaming of counter
Packetcache now detects clock skew and times out entries
named.conf parser now reports errors with line number and offending token
Filenames in named.conf can now contain :
Feature enhancements:
The webserver now by default does not print out configuration statements, which might contain database backends. Use webserver-print-arguments to restore the old behaviour.
Generic PostgreSQL backend is now included. Still rather beta.
FreeBSD version does not stop when requested to do so.
Wildcard CNAMES do not work as they do with bind.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend
The main focus of this release is stability and TCP improvements. This is the first release PowerDNS-the-company actually considers for running on its production servers!
Major bugs fixed:
Zone2sql received a floating point division by zero error on named.confs with less than 100 domains.
Huffman encoder failed without specific error on illegal characters in a domain
Fixed huge memory leaks in TCP code.
Removed further file descriptor leaks in guardian respawning code
Pipebackend was too chatty.
pdns_server neglected to close fds 0, 1 & 2 when daemonizing
Feature enhancements:
bindbackend can be instructed not to check the ctime of a zone by specifying bind-check-interval=0, which is also the new default.
pdns_server --list-modules lists all available modules.
Performance enhancements:
TCP code now only creates a new database connection for AXFR.
TCP connections timeout rather quickly now, leading to less load on the server.
FreeBSD version does not stop when requested to do so.
Wildcard CNAMES do not work as they do with bind.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend, gpgsqlbackend
A lot of new named.confs can now be parsed, zone2sql & bindbackend have gained features and stability.
Major bugs fixed:
Label compression was not always enabled, leading to large reply packets sometimes.
Database errors on TCP server lead to a nameserver reload by the guardian.
MySQL backend neglected to close its connection properly.
BindParser miss parsed some IP addresses and netmasks.
Truncated answers were also truncated on the packetcache, leading to truncated TCP answers.
Feature enhancements:
Zone2sql and the bindbackend now understand the Bind $GENERATE{} syntax.
Zone2sql can optionally gloss over non-existing zones with --on-error-resume-next.
Zone2sql and the bindbackend now properly expand @ also on the right hand side of records.
Zone2sql now sets a default TTL.
DNS UPDATEs and NOTIFYs are now logged properly and sent the right responses.
Performance enhancements:
'Fancy records' are no longer queried for on ANY queries - this is a big speedup.
FreeBSD version does not stop when requested to do so.
Zone2sql refuses named.confs with less than 100 domains.
Wildcard CNAMES do not work as they do with bind.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend, gpgsqlbackend
The big news in this release is the BindBackend which is now capable of parsing many more named.conf Bind configurations. Furthermore, PDNS has successfully parsed very large named.confs with large numbers of small domains, as well as small numbers of large domains (TLD).
Zone transfers are now also much improved.
Major bugs fixed:
zone2sql leaked file descriptors on each domain, used wrong Bison recursion leading to parser stack overflows. This limited the amount of domains that could be parsed to 1024.
zone2sql can now read all known zonefiles, with the exception of those containing $GENERATE
Guardian relaunching a child lost two file descriptors
Don't die on a connection reset by peer during zone transfer.
Webserver does not crash anymore on ringbuffer resize
Feature enhancements:
AXFR can now be disabled, and re-enabled per IP address
--help accepts a parameter, will then show only help items with that prefix.
zone2sql now accepts a --zone-name parameter
BindBackend maturing - 9500 zones parsed in 3.5 seconds. No longer case sensitive.
Performance enhancements:
Implemented RFC-breaking AXFR format (which is the industry standard). Zone transfers now zoom along at wirespeed (many megabits/s).
FreeBSD version does not stop when requested to do so.
BindBackend cannot parse zones with $GENERATE statements.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend, gpgsqlbackend
Major bugs fixed:
Database backend reload does not hang the daemon anymore
Buffer overrun in local socket address initialisation may have caused binding problems
setuid changed the uid to the gid of the selected user
zone2sql doesn't coredump on invocation anymore. Fixed lots of small issues.
Don't parse configuration file when creating configuration file. This was a problem with reinstalling.
removed a lot of unnecessary gettimeofday calls
removed needless select(2) call in case of listening on only one address
removed 3 useless syscalls in the fast path
Usability improvements:
Fixed error checking in init.d script (show, mrtg)
Added 'uptime' to the mrtg output
removed further GNUisms from installer and init.d scripts for use on FreeBSD
Debian package and apt repository, thanks to Wichert Akkerman.
FreeBSD /usr/ports, thanks to Peter van Dijk (in progress).
Stability may be an issue as well as performance. This version has a tendency to log a bit too much which slows the nameserver down a lot.
Decreasing a ringbuffer on the website is a sure way to crash the daemon. Zone2sql, while improved, still has problems with a zone in the following format:
name IN A 1.2.3.4 IN A 1.2.3.5To fix, add 'name' to the second line.
Zone2sql does not close filedescriptors.
FreeBSD version does not stop when requested via the init.d script.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend, gpgsqlbackend
fully functioning bindbackend - will try to parse named.conf, but probably fail
This is the first public release of what is going to become PDNS 2.0. As such, it is not of production quality. Even PowerDNS-the-company does not run this yet.
Stability may be an issue as well as performance. This version has a tendency to log a bit too much which slows the nameserver down a lot.
Decreasing a ringbuffer on the website is a sure way to crash the daemon. Zone2sql is very buggy.
Features present in this document, but disabled or withheld from the current release:
gmysqlbackend, oraclebackend, gpgsqlbackend
fully functioning bindbackend - will not parse configuration files