PowerDNS FAQ
Here you can find the answer to some of the most frequently asked questions about PowerDNS. If you have a question not answered by this page you can add
add your question by clicking on the "Edit this page" link at the bottom of this page.
More Specific Information
about the gmysql/gpgsql backend: gmysql/gpgsql
about the AXFR Support in PowerDNS Server: AXFR
PowerDNS Recursor Lua Scripting Examples: Lua
INSTALLING AND RUNNING POWERDNS
Enter any Frequently Asked Questions and Answers here please!
Q: Where is the old official FAQ?
A: All questions from the original faq ( http://rtfm.powerdns.com/pdns-users-faq.html) are being incorporated into this wikifaq. But its nice to have an old reference.
Q: What is PowerDNS and why is it called that way?
A: Because it has *more* *POWER*
Q: What is PowerDNS recursor?
A: The recursor (as we like to call it) is a caching nameserver. It operates just like all the other caching nameservers like bind8, bind9, dnscache, maradns. It has its own FAQ on http://wiki.powerdns.com/trac/wiki/RecursorFAQ
Q: I'm on a Linux SMP system and performance is dysmal, what can I do?
A: Upgrade to 2.6 and a recent glibc. Debian Woody is too old for it to benefit from kernel 2.6. Expect massive performance improvements.
Q: Where did powerdns.org go? And where can I find its contents?
A: It was registered by another party after a misunderstanding with our registrar. The contents have moved to http://wiki.powerdns.com
Q: What happened to the CVS repository?
A: We switched to Subversion, the repository is on svn://svn.powerdns.com/
Q: I opened a ticket with 'cvstrac', where did it go?
A: Here: http://ds9a.nl/cgi-bin/cvstrac/pdns/rptview?rn=4 New tickets should be opened here: http://wiki.powerdns.com/projects/trac/newticket
Q: I'm a developer, can I help?
A: Yes - grep the source for XXX or TODO or FIXME, you have your work cut out for you :-) Also, look at http://wiki.powerdns.com/projects/trac/wiki/TodoList
Q: The ADDITIONAL is section different than bind's answer, why? Q: My powerdns is not answering with a verbose *ADDITIONAL SECTION* that includes A records for the namservers of the domain queried.
A: Powerdns by default does not 'trust' other zones in its own database so you may want to add out-of-zone-additional-processing=yes to your configuration to tell him to do so. If the domain your nameservers are in is known to your powerdns' backend it will now include them into the additional section.
Q: The logfile is showing "Authoritative empty NO ERROR to 1.2.3.4 for 'powerdns.nl' (AAAA).."
A: As the name implies, this is not an error. It tells you there are questions for a domain which exists in your database, but for which no record of the requested type exists. To get rid of this error, add log-dns-details=off to your configuration.
Q: Can I launch multiple backends simultaneously?
A: You can. This might for example be useful to keep an existing BIND configuration around but to store new zones in, say MySQL. The syntax to use is launch=bind,gmysql. Have a look at https://answers.launchpad.net/powerdns/+faq/1229
Q: PowerDNS does not give authoritative answers, how come?
A: This is almost always not the case. An authoritative answer is recognized by the 'AA' bit being set. Many tools prominently print the number of Authority records included in an answer, leading users to conclude that the absence or presence of these records indicates the authority of an answer. This is not the case.
Verily, many misguided country code domain operators have fallen into this trap and demand authority records, even though these are fluff and quite often misleading. Invite such operators to look at section 6.2.1 of RFC 1034, which shows a correct authoritative answer without authority records. In fact, none of the non-deprecated authoritative answers shown have authority records!
Sorry for sounding like DJB on this, but we get so many misguided questions about authority..
Q: Which backend should I use? There are so many!
A: If you have no external constraints, the Generic MySQL (gmysql) and Generic PostgreSQL (gpgsql) ones are probably the most used and complete. By all means do not use the non-generic MySQL backend, which is deprecated and only available for older installations.
The Oracle backend also has happy users, we know of no deployments of the DB2 backend. The BIND backend is pretty capable too in fact, but many prefer a relational database.
Q: I try to launch the pgmysqlbackend and it can't find it!
A: You did not read the changelog, nor the README. The 'pgmysql' backend is no more and has been split into the gmysql and gpgsql backends, with the common code residing within PowerDNS itself.
Q: PowerDNS compiles under OpenBSD, but crashes immediately, now what?
A: This is due to a compiler problem, which has been worked around for the [ ports tree] (as of 2009/06/23); OpenBSD's packages of 2.9.22 include this fix.
Q: I'm trying to build from CVS but I get lots of weird errors!
A: Read the 'HACKING' file, it lists the build requirements (mostly autoconf, automake, libtool). In many cases, it may be easier to build from the source distribution though.
Q: I'm on Solaris 7 and AAAA records do not work
A: Indeed, and this is pretty sad. Either upgrade to Solaris 8 or convince people to write the replacement functions needed to encode AAAA if the host operating system does not offer them.
Q: When compiling I get errors about 'sstream' and 'ostringstream', or BITSPERCHAR
A: Your gcc is too old. Versions 2.95.2 and older are not supported. Many distributions have improved gcc 2.95.2 with an ostringstream implementation, in which case their 2.95.2 is also supported. We like gcc 3.2.1 best.
Q: Ok, I've installed gcc 3.2.1 but now the gpgsql backend won't link
A: Sadly, the gcc C++ on-disk object format has changed a few times since the 2.95 days. This means that gcc 3.2.1 cannot link against libpq++.so compiled with 2.95. The trick is to recompile PostgreSQL with 3.2.1 too and have it install in a separate location. Then reconfigure the pdns compile to look there, with ./configure --with-pgsql-lib=/opt/postgresql-with-3.2.1/lib
Q: I've installed PostgreSQL 7.3 (or later) and it has no libpq++.so
A: As of 7.3, libpq++ has been split out of the main PostgreSQL distribution. See here. It would in fact be a great idea to move the gpgsql backend to the C interface instead of the C++ one. On Debian 'Sid', libpq++.so hides in the libpqpp-dev package.
Q: PowerDNS crashes when I install the pdns-static .deb on Debian SID
A: Indeed. Install the .debs that come with Debian or recompile PowerDNS yourself. If not using MySQL, the crashes will go away if you remove setuid and setgid statements from the configuration.
Q: Why don't my slaves act on notifications and transfer my updated zone?
A: Raise the serial number of your zone. In most backends, this is the first number of the SOA contents field. If this number is lower to equal to that on a slave, it will not consider your zone updated.
Q: Master or Slave support is not working, PDNS is not picking up changes
A: The Master/Slave apparatus is off by default. Turn it on by adding a slave and/or master statement to the configuration file. Also, check that the configured backend is master or slave capable and you entered exactly the same string to the Domains tables _without_ the ending dot.
Q: My masters won't allow PowerDNS to access zones as it is using the wrong local IP address
A: Mark Bergsma contributed the query-local-address setting to tell PowerDNS which local IP address to use.
Q: I compiled PowerDNS myself and I see weird problems, especially on SMP
A: There are known issues between gcc <3.2 and PowerDNS on Linux SMP systems. The exact cause is not known but moving to our precompiled version always fixes the problems. If you compile yourself, use a recent gcc!
Q: I see this a lot: Backend error: Failed to execute mysql_query, perhaps connection died?
A: Check your MySQL timeout, it may be set too low. This can be changed in the my.cnf file.
Q: PowerDNS does not answer queries on all my IP addresses (and I've ignored the warning I got about that at startup)
A: Please don't ignore what PowerDNS says to you. Furthermore, read 3 questions up about the local-address setting, and use it to specify which IP addresses PowerDNS should listen on.
Q: Can I use a MySQL database with the Windows version of PowerDNS?
A: You can. MySQL support is supplied through the ODBC backend, which is compiled into the main binary. So if you want to use MySQL you can change the pdns.conf file, which is located in the PowerDNS for Windows directory, to use the correct ODBC data sources. If you don't know how to use ODBC with MySQL:
- Download MyODBC from http://www.mysql.com/ - Install the MySQL ODBC driver
Then you can follow the instructions located in Chapter 3. But instead of selecting the Microsoft Access Driver you select the MySQL ODBC Driver and configure it to use your MySQL database.
For other databases for which an ODBC driver is available, the procedure is the same as this example.
Q: How to compile on Mac OS X?
A: I succesfully compiled PowerDNS 2.9.20 on Mac OS X 10.4.8 (Intel) with Boost 1.33.1!
This is how I did it (in Terminal):
1. Download PowerDNS to ~/src with "curl -L -O --url http://downloads.powerdns.com/releases/pdns-2.9.20.tar.gz"
2. Extract with "tar -xvzf pdns-2.9.20.tar.gz" 3. Download Boost to ~/src with "curl -L -O --url http://surfnet.dl.sourceforge.net/sourceforge/boost/boost_1_33_1.tar.gz" 4. Extract with "tar -xvzf boost_1_33_1.tar.gz" 5. Go to PowerDNS directory with "cd pdns-2.9.20" 6. Configure PowerDNS with "CXXFLAGS=-I/Users/djuribaars/src/boost_1_33_1 ./configure --with-mysql-includes=/usr/local/mysql/include" (Where "djuribaars" is my Mac OS X username, and "/usr/local/mysql/include" is my MySQL includes directory")
7. Compile with "make"
8. Install with "sudo make install"
9. It works!!
Good luck!
08-05-2007 (pdns 2.9.21; boost 1.34.0; MAC OS X 10.4.9; MySQL 5.0.37) Compiles succesfully but fails to start with "Cannot create semaphore: Function not implemented". Argh. Also tried with pdns 2.9.20; boost 1.33.1; MySQL 5.0.37 and still same message attempting to start pdns_server. Any clues?
15-03-2010 You additionally need to set -DDARWIN inside CXXFLAGS, as described at
http://fukamachi.org/wp/2009/06/24/compiling-powerdns-on-osx-1057/#comment-43903
Here's what I did: http://lsimons.wordpress.com/2010/03/15/powerdns-29-2-22-on-mac-os-x-10-5-8/
Q: Is the bind backend complete and usable without worries?
A: NO. First of all, the backend does not interpret human-readable $TTL values, so unexpected things will happen (like 420-day TTL values on your NS records). Make sure you replace the $TTL value with some integer value. Other peculiarities are 'documented' in the source: check pdns/backends/bind/TODO.
Q: Can i have pdns_recursor forward all queries to another recursive nameserver?
A: NO. forward-zones does not resemble the BIND feature 'forwarding'. Although it is possible to forward for '.' in the forward-zones configuration statement, this currently does not set the RD (recursion desired bit) on its own questions, thus the remote recursive nameserver will only answer with what it has in cache and not 'recurse' for you. Also note that for example the OpenDNS nameservers will refuse any queries that do not carry the RD bit.
Q: How do I use Zone2SQL to import from bind into PowerDNS?
A: See link: http://wiki.powerdns.com/trac/wiki/Zone2SQLFAQ
Q: Linux Netfilter says your conntrack table is full?
A: Thats a common problem with Netfilter Conntracking and DNS Servers, just tune your kernel variable (/etc/sysctl.conf) net.ipv4.netfilter.ip_conntrack_max up accordingly. Try setting it for a million if you don't mind spending some MB of RAM on it for example.
Q: Does PowerDNS support splitting of TXT records (multipart or multiline) with the MySQL backend?
A: PowerDNS with the MySQL backend does NOT support this. Simply make the "content" field in your database the appropriate size for the records you require.