Before proceeding, it is advised to check the release notes for your PDNS version, as specified in the name of the distribution file.
Performance release. A lot of work has been done to raise PDNS performance to staggering levels in order to take part in benchmarketing efforts. Together with our as yet unnamed partner, PDNS has been benchmarked at 60.000 mostly cached queries/second on off the shelf PC hardware. Uncached performance was 17.000 uncached DNS queries/second on the .ORG domain.
Performance has been increased by both making PDNS itself quicker but also by lowering the number of backend queries typically needed. Operators will typically see PDNS taking less CPU and the backend seeing less load.
Furthermore, some real bugs were fixed. A couple of undocumented performance switches may appear in --help output but you are advised to stay away from these.
Developers: this version needs the pdns-2.5.1 development kit, available on http://downloads.powerdns.com/releases/dev. See also Appendix C.
Performance:
A big error in latency calculations - cached packets were weighed 50 times less, leading to inflated latency reporting. Latency calculations are now correct and way lower - often in the microseconds range.
It is now possible to run with 0 second cache TTLs. This used to cause very frequent cache cleanups, leading to performance degradation.
Many tiny performance improvements, removing duplicate cache key calculations, etc. The cache itself has also been reworked to be more efficient.
First 'CNAME' backend query replaced by an 'ANY' query, which most of the time returns the actual record, preventing the need for a separate CNAME lookup, halving query load.
Much of the same for same-level-NS records on queries needing delegation.
Bugs fixed:
Incidentally, the cache count would show 'unknown' packets, which was harmless but confusing. Thanks to Mike and Simon of NetNation for reporting this.
SOA hostmaster with a . in the local-part would be cached wrongly, leading to a stray backslash in case of multiple successively SOA queries. Thanks to Ascio Techologies for spotting this bug.
zone2sql did not parse Verisign zonefiles correctly as these contained a $TTL statement in mid-record.
Sometimes packets would not be accounted, leading to 'udp-queries' and 'udp-answers' divergence.
Features:
'cricket' command added to init.d scripts that provides unadorned output for parsing by 'Cricket'.
Brown paper bag release fixing a huge memory leak in the new Query Cache.
Developers: this version needs the new pdns-2.5.1 development kit, available on http://downloads.powerdns.com/releases/dev. See also Appendix C.
And some small changes:
Added support for RFC2038 compliant negative-answer caching. This allows remotes to cache the fact that a domain does not exist and will not exist for a while. Thanks to Chris Thompson for pointing out how tiny our minds are. This feature may cause a noticeable reduction in query load.
Small speedup to non-packet-cached queries, incidentally fixing the huge memory leak.
pdns_control ccounts command outputs statistics on what is in the cache, which is useful to help optimize your caching strategy.
An important release which has seen quite a lot of trial and error testing. As a result, PDNS can now run with a huge cache and concurrent invalidations. This is useful when running of a slower database or under high traffic load with a fast database.
Furthermore, the gpgsql2 backend has been validated for use and will soon supplant the gpgsql backend entirely. This also bodes well for the gmysql backend which is the same code.
Also, a large amount of issues biting large scale slave operators were addressed. Most of these issues would only show up after prolonged uptime.
New features:
Query cache. The old Packet Cache only cached entire questions and their answers. This is very CPU efficient but does not lead to maximum hitrate. Two packets both needing to resolve smtp.you.com internally would not benefit from any caching. Furthermore, many different DNS queries lead to the same backend queries, like 'SOA for .COM?'.
PDNS now also caches backend queries, but only those having no answer (the majority) and those having one answer (almost the rest).
In tests, these additional caches appear to halve the database backend load numerically and perhaps even more in terms of CPU load. Often, queries with no answer are more expensive than those having one.
The default ttls for the query-cache and negquery-cache are set to safe values (20 and 60 seconds respectively), you should be seeing an improvement in behaviour without sacrificing a lot in terms of quick updates.
The webserver also displays the efficiency of the new Query Cache.
The old Packet Cache is still there (and useful) but see Chapter 9 for more details.
There is now the ability to shut off some logging at a very early stage. High performance sites doing thousands of queries/second may in fact spend most of their CPU time on attempting to write out logging, even though it is ignored by syslog. The new flag log-dns-details, on by default, allows the operator to kill most informative-only logging before it takes any cpu.
Flags which can be switched 'on' and 'off' can now also be set to 'off' instead of only to 'no' to turn them off.
Enhancements:
Packet Cache is now case insensitive, leading to a higher hitrate because identical queries only differing in case now both match. Care is taken to restore the proper case in the answer sent out.
Packet Cache stores packets more efficiently now, savings are estimated at 50%.
The Packet Cache is now asynchronous which means that PDNS continues to answer questions while the cache is busy being purged or queried. Incidentally this will mean a cache miss where previously the question would wait until the cache became available again.
The upshot of this is that operators can call pdns_control purge as often as desired without fearing performance loss. Especially the full, non-specific, purge was speeded up tremendously.
This optimization is of little merit for small sites but is very important when running with a large packetcache, such as when using recursion under high load.
AXFR log messages now all contain the word 'AXFR' to ease grepping.
Linux static version now compiled with gcc 3.2 which is known to output better and faster code than the previously used 3.0.4.
Bugs fixed:
Packetcache would sometimes send packets back with slightly modified flags if these differed from the flags of the cached copy.
Resolver code did bad things with filedescriptors leading to fd exhaustion after prolonged uptimes and many slave SOA currency checks.
Resolver code failed to properly log some errors, leading to operator uncertainty regarding to AXFR problems with remote masters.
After prolonged uptime, slave code would try to use privileged ports for originating queries, leading to bad replication efficiency.
Masters sending back answers in differing case from questions would lead to bogus 'Master tried to sneak in out-of-zone data' errors and failing AXFRs.
Developers: this version is compatible with the pdns-2.1 development kit, available on http://downloads.powerdns.com/releases/dev. See also Appendix C.
This version fixes some stability issues with malformed or malcrafted packets. An upgrade is advised. Furthermore, there are interesting new features.
New features:
Recursive queries are now also cached, but in a separate namespace so non-recursive queries don't get recursed answers and vice versa. This should mean way lower database load for sites running with the current default lazy-recursion. Up to now, each and every recursive query would lead to a large amount of SQL queries.
To prevent the packetcache from becoming huge, a separate recursive-cache-ttl can be specified.
The ability to change parameters at runtime was added. Currently, only the new query-logging flag can be changed.
Added query-logging flag which hints a backend that it should output a textual representation of queries it receives. Currently only gmysql and gpgsql2 honor this flag.
Gmysql backend can now also talk to PgSQL, leading to less code. Currently, the old postgresql driver ('gpgsql') is still the default, the new driver is available as 'gpgsql2' and has the benefit that it does query logging. In the future, gpgsql2 will become the default gpgsql driver.
DNS recursing proxy is now more verbose in logging odd events which may be caused by buggy recursing backends.
Webserver now displays peak queries/second 1 minute average.
Bugs fixed:
Failure to connect to database in master/slave communicator thread could lead to an unclean reload, fixed.
Documentation: added details for strict-rfc-axfrs. This feature can be used if very old clients need to be able to do zone transfers with PDNS. Very slow.
Developers: this version is compatible with the pdns-2.1 development kit, available on http://downloads.powerdns.com/releases/dev. See also Appendix C.
This release adds the Generic MySQL backend which allows full master/slave semantics with MySQL and InnoDB tables (or other tables that support transactions). See Section A.4.
Other new features:
Improved error messages in master/slave communicator will help down track problems.
slave-cycle-interval setting added. Very large sites with thousands of slave domains may need to raise this value above the default of 60. Every cycle, domains in undeterminate state are checked for their condition. Depending on the health of the masters, this may entail many SOA queries or attempted AXFRs.
Bugs fixed:
'pdns_control purge domain' and 'pdns_control purge domain$' were broken in version 2.2 and did not in fact purge the cache. There is a slight risk that domain-specific purge commands could force a reload in previous version. Thanks to Mike Benoit of NetNation for discovering this.
Master/slave communicator thread got confused in case of delayed answers from slow masters. While not causing harm, this caused inefficient behaviour when testing large amounts of slave domains because additional 'cycles' had to pass before all domains would have their status ascertained.
Backends implementing special SOA semantics (currently only the undocumented 'pdns express backend', or homegrown backends) would under some circumstances not answer the SOA record in case of an ANY query. This should put an end to the last DENIC problems. Thanks to DENIC for helping us find the problem.
Developers: this version is compatible with the pdns-2.1 development kit, available on http://downloads.powerdns.com/releases/dev. See also Appendix C.
Again a big release. PowerDNS is seeing some larger deployments in more demanding environments and these are helping shake out remaining issues, especially with recursing backends.
The big news is that wildcard CNAMEs are now supported, an oft requested feature and nearly the only part in which PDNS differed from BIND in authoritative capabilities.
If you were seeing signal 6 errors in PDNS causing reloads and intermittent service disruptions, please upgrade to this version.
For operators of PowerDNS Express trying to host .DE domains, the very special soa-serial-offset feature has been added to placate the new DENIC requirement that the SOA serial be at least six digits. PowerDNS Express uses the SOA serial as an actual serial and not to insert dates and hence often has single digit soa serial numbers, causing big problems with .DE redelegations.
Bugs fixed:
Malformed or shortened TCP recursion queries would cause a signal 6 and a reload. Same for EOF from the TCP recursing backend. Thanks to Simon Kirby and Mike Benoit of NetNation for helping debug this.
Timeouts on the TCP recursing backend were far too long, leading to possible exhaustion of TCP resolving threads.
pdns_control purge domain accidentally cleaned all packets with that name as a prefix. Thanks to Simon Kirby for spotting this.
Improved exception error logging - in some circumstances PDNS would not properly log the cause of an exception, which hampered problem resolution.
New features:
Wildcard CNAMEs now work as expected!
pdns_control purge can now also purge based on suffix, allowing operators to purge an entire domain from the packet cache instead of only specific records. See also Section B.1.1 Thanks to Mike Benoit for this suggestion.
soa-serial-offset for installations with small SOA serial numbers wishing to register .DE domains with DENIC which demands six-figure SOA serial numbers. See also Chapter 14.
This is a somewhat bigger release due to pressing demands from customers. An upgrade is advised for installations using Recursion. If you are using recursion, it is vital that you are aware of changes in semantics. Basically, local data will now override data in your recursing backend under most circumstances. Old behaviour can be restored by turning lazy-recursion off.
Developers: this version has a new pdns-2.1 development kit, available on http://downloads.powerdns.com/releases/dev. See also Appendix C.
![]() | Most users will run a static version of PDNS which has no dependencies on external libraries. However, some may need to run the dynamic version. This warning applies to these users. To run the dynamic version of PDNS, which is needed for backend drivers which are only available in source form, gcc 3.0 is required. RedHat 7.2 comes with gcc 3.0 as an optional component, RedHat 7.3 does not. However, the RedHat 7.2 Update gcc rpms install just fine on RedHat 7.3. For Debian, we suggest running 'woody' and installing the g++-3.0 package. We expect to release a FreeBSD dynamic version shortly. |
Bugs fixed:
RPM releases sometimes overwrote previous configuration files. Thanks to Jorn Ekkelenkamp of Hubris/ISP Services for reporting this.
TCP recursion sent out overly large responses due to a byteorder mistake, confusing some clients. Thanks to the capable engineers of NetNation for bringing this to our attention.
TCP recursion in combination with a recursing backend on a non-standard port did not work, leading to a non-functioning TCP listener. Thanks to the capable engineers of NetNation for bringing this to our attention.
Unexpected behaviour:
Wildcard URL records where not implemented because they are a performance penalty. To turn these on, enable wildcard-url in the configuration.
Unlike other nameservers, local data did not override the internet for recursing queries. This has mostly been brought into conformance with user expectations. If a recursive question can be answered entirely from local data, it is. To restore old behaviour, disable lazy-recursion. Also see Chapter 11.
Features:
Oracle support has been tuned, leading to the first public release of the Oracle backend. Zone2sql now outputs better SQL and the backend is now fully documented. Furthermore, the queries are compatible with the PowerDNS XML-RPC product, allowing PowerDNS express to run off Oracle. See Section A.5.
Zone2sql now accepts --transactions to wrap zones in a transaction for PostgreSQL and Oracle output. This is a major speedup and also makes for better isolation of inserts. See Section 10.1.
pdns_control now has the ability to purge the PowerDNS cache or parts of it. This enables operators to raise the TTL of the Packet Cache to huge values and only to invalidate the cache when changes are made. See also Chapter 9 and Section B.1.1.
Maintenance release, fixing three small issues.
Developers: this version is compatible with 1.99.11 backends.
PowerDNS ignored the logging-facility setting unless it was specified on the commandline. Thanks to Karl Obermayer from WebMachine Technologies for noticing this.
Zone2sql neglected to preserve 'slaveness' of domains when converting to the slave capable PostgreSQL backend. Thanks to Mike Benoit of NetNation for reporting this. Zone2sql now has a --slave option.
SOA Hostmaster addresses with dots in them before the @-sign were mis-encoded on the wire.
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.8.
IBM DB2 Universal Database backend available for Linux. See Section A.6.
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