powerDNS with SQLite backend as a slave for BIND

(powerDNS)[https://www.powerdns.com] it’s a great alternative for huge and bulky BIND server. Light footprint, and quick setup made that server as my obvious choice for slave server for primary BIND server. So let’s config begins:

Let’s download software first:

sudo yum install pdns-backend-sqlite

Then we have to pull schema which PDNS will use to store records:

wget https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsqlite3backend/schema.sqlite3.sql

Let’s create some some sqlite database:

mkdir /var/db/pdns
sqlite3 /var/db/pdns/pdns.db
.read schema.sqlite3.sql
.quit

If we are setting up slave – we need tell who is supermaster:

sqlite3 /var/db/pdns/pdns.db 'insert into supermasters values ('x.x.x.x', 'ns1.domain.com', 'admin');'

Let’s make sure that pdns.db is writeable:

chown -R pdns:pdns /var/db/pdns

pdns.conf it’s also straight forward:

nano /etc/pdns/pdns.conf

setuid=pdns
setgid=pdns
launch=gsqlite3
gsqlite3-database=/var/db/pdns/pdns.db

finaly we can check if master allows us to make tranfer:

dig @ns1.gex.pl spidersoft.com.au AXFR

On bind end config is super simple:

options {
    notify explicit;
    also-notify { x.x.x.x; y.y.y.y; };
    allow-notify { x.x.x.x; y.y.y.y; };
    allow-transfer { x.x.x.x; y.y.y.y; };
    ...