PowerDNS isn’t working as expected (migration from bind)

binddebian-wheezydomain-name-systempowerdns

I am migrating our office DNS servers to powerdns with MySQL backend.
We quite often change our internal zone and therefore simple SQL query or web Ui would be much better than editing of text files for each DNS server.

I've followed this guide http://www.howtoforge.com/installing-powerdns-with-mysql-backend-and-poweradmin-on-debian-squeeze on clean Debian 7 installation and afterwards imported our existing bind zone files using zone2sql. But after I did it, in my sandbox I cannot resolve any domain name.

What was done:

  • fresh installation of Debian 7 from netinst without extra packages installed
  • follow mentioned above guide with some alterations (no manual db setup since it is already managed by package post instructions and latest version of poweradmin from GitHub)
  • import existing bind records using zone2sql tool (from all zone files by pointing directly to named.conf). It went smooth without any error or warning. Then fed it to MySQL database created during installation.
  • found that poweradmin child process crashes at start and removed /etc/poweradmin/pdns.d/pdns.local.bindbackend as it was said that this blocks reading of pdns.local.gmysql config

After that I've tried resolving some of local domain names and some of public. For public it was returning no results, for local it was returning "no recursion allowed" for CNAME records and no results for A records. However with bind everything works fine. When I go to poweradmin list of zones I can only see records for our local zone and no any other information (means all other sections are completely empty), but for local zone I can see all records are intact point to right domain name in case of CNAME or to correct IP address in case of A record.

Now question is – what was done wrong or did I miss anything?

Best Answer

Fixed by installing pdns-recursor package and binding pdns to listen on external interface (e.g 192.168.1.x) and use recursor on internal interface (e.g. 127.0.0.1).