I just had a client recently ask, “Why doesn’t my secondary dns server update a zone?”

They’re running pdns and poweradmin packages:

poweradmin-2.1.4-1.el6.noarch
pdns-4.0.3-1pdns.el6.x86_64
pdns-backend-mysql-4.0.3-1pdns.el6.x86_64

on both ns1 and ns2 servers.  The ns2 server is set to be slave of ns1, so any changes made on ns1 automatically get populated on ns2.  However one of their reverse zones didn’t have name servers.  The first thing to always check is make sure that your zone has both your ns1 and ns2 servers listed as NS records.

example.com   IN   NS  ns1.exmaple.com.
example.com   IN   NS  ns2.exmaple.com.

Those records were missing from the zone, once they were added back in the zone properly updated the ns2 server.

Here is an example of our configuration, this is the primary name server which also runs PowerAdmin.

allow-recursion=0.0.0.0/0
allow-axfr-ips=x.x.x.x/32
#config-dir=/etc/powerdns
daemon=yes
disable-axfr=no
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
loglevel=3
#module-dir=/usr/lib/powerdns
master=yes
slave=no
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
#include-dir=/etc/powerdns/pdns.d
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=pdns
gmysql-dbname=pdns
gmysql-password=xxxxx

Note you should replace allow-axfr-ips=x.x.x.x with the ip address of the secondary DNS so it’s allowed to perform zone transfers.  Then secondly replace gmysql-password=xxxxx with your mysql password.

Their secondary name server uses this config, use this same configuration if you have multiple name servers all receiving updates from the primary.  But remember to allow each of the secondary name servers on the primary name server to transfer zones.

allow-recursion=0.0.0.0/0
config-dir=/etc/pdns
daemon=yes
disable-axfr=yes
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
#module-dir=/usr/lib/powerdns
master=no
slave=yes
slave-cycle-interval=60
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
#include-dir=/etc/powerdns/pdns.d
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=pdns
gmysql-dbname=pdns
gmysql-password=xxxxx

Hope this help you if you run into the same issue as our client.