Closed sndrsmnk closed 8 years ago
Reproduced the infrastructure (4.0.0 signing master, 4.0.0 slave, 3.4.8 auth) where the auth uses the same database as the slave (but has slave=no set).
When transferring the zone, RRSIGs end up in the database:
pdns-slave=> select count(*) from records where type='RRSIG';
count
-------
9
And get served when querying for them:
lieter $ dig @127.0.0.1 -p5301 lieter.nl +dnssec +short
A 13 2 3600 20160804000000 20160714000000 5721 lieter.nl. joFl6uT3/I7AJAJsfuxNyZXzxAA+ADnWHxFnw9L59QMXVCbTfBDzAXfS HVNeXSTGLkFyq1ctSrKEYdv88YemAA==
1.2.3.4
Could you supply us with master and slave logs of the XFR and run pdnsutil check-zone
on the master and the slave.
NB: the lack of output for pdnssec is expected. Output was extended for 4.0.0
I can reproduce this.
[sanders@haze:~] % dig @213.136.12.51 bokhard.nl +dnssec +short
213.154.236.176
A 8 2 300 20160804000000 20160714000000 6471 bokhard.nl. LIP6sgksEQY/o8J98RIAlvjC/LUKjizL4rnlWiq7yShGfm7tSaAcLlGN vcJPd3hucKiyWE64WlH2xzRQNbFMSymBVi2jV+cWH5uZj52WqQHDxLwB WkYe8h1tb6/xJgsa6r6goOF82j07UT0MeNOPzJmMU98f+liBP5zUqXP8 sso=
Jul 22 22:55:48 nsslave systemd[1]: Starting PowerDNS Authoritative Server...
[ .. ]
Jul 22 22:55:48 nsslave pdns_server[14330]: Jul 22 22:55:48 Done launching threads, ready to distribute questions
Jul 22 22:55:56 nsslave pdns_server[14330]: Jul 22 22:55:56 Initiating transfer of 'bokhard.nl' from remote '213.154.236.182'
Jul 22 22:55:56 nsslave pdns_server[14330]: Jul 22 22:55:56 Starting AXFR of 'bokhard.nl' from remote 213.154.236.182:53
Jul 22 22:55:56 nsslave pdns_server[14330]: Jul 22 22:55:56 AXFR started for 'bokhard.nl'
Jul 22 22:55:56 nsslave pdns_server[14330]: Jul 22 22:55:56 AXFR of 'bokhard.nl' from remote 213.154.236.182:53 done
Jul 22 22:55:56 nsslave pdns_server[14330]: Jul 22 22:55:56 Backend transaction started for 'bokhard.nl' storage
Jul 22 22:55:56 nsslave pdns_server[14330]: Jul 22 22:55:56 AXFR done for 'bokhard.nl', zone committed with serial number 2016070601
Jul 22 22:56:10 nsslave pdns_server[14330]: Jul 22 22:56:10 32 slave domains need checking, 0 queued for AXFR
Jul 22 22:55:56 services pdns_server[6834]: Jul 22 22:55:56 AXFR of domain 'bokhard.nl' initiated by 127.0.0.1
Jul 22 22:55:56 services pdns_server[6834]: Jul 22 22:55:56 AXFR of domain 'bokhard.nl' allowed: client IP 127.0.0.1 is in allow-axfr-ips
Jul 22 22:55:56 services pdns_server[6834]: Jul 22 22:55:56 AXFR of domain 'bokhard.nl' to 127.0.0.1 finished
(i have dnsdist in front of the master, i've had dnsdist out of the chain, same result, it's not dnsdist)
[sanders@haze:~] % dig @213.136.12.51 bokhard.nl +dnssec +short
213.154.236.176
root@nsslave:~# pdnssec check-zone bokhard.nl
Checked 24 records of 'bokhard.nl', 0 errors, 0 warnings.
While digging deeper, i found that in a working state, the fqdns in the database have a traling dot and in the non-working state they do not. Perhaps this is relevant in some way.
| RRSIG | NSEC3 8 3 86400 20160804000000 20160714000000 6471 bokhard.nl sVKQYqd...
| RRSIG | NSEC3 8 3 86400 20160804000000 20160714000000 6471 bokhard.nl. sVKQYqd...
The issue title is wrong. 3.4.8 is unable to serve a 4.0.0 presigned db (without the trailing dots)
My observations are: 4.0.0 is not adding dots, but has no problem if they are there 3.4.8 is adding dots, and is failing, as described above, if they are not there
Fixed in #4229
There might be an issue with pdns-server 4.0.0 and the slaving of DNSSEC pre-signed zones.
Once 4.0.0 AXFRs the zone, the RRSIG-records for the pre-signed data are no longer served by the authoritative servers. Downgrading to 3.4.8 and AXFRing again fixes the situation and the RRSIG-records once again appear on the authoritative servers.
Setup is as follows:
ns1.freshdot.net
is a 'hidden master' running pdns-server 4.0.0 (xenial-auth-40)nsslave.bit.nl
is an 'AXFR nameserver' running pdns-server 4.0.0 which only handles AXFRs (xenial-auth-40)nsauth1.bit.nl
is an 'authoritative master' running pdns-server 3.4.8 (pdns-static deb by PowerDNS)pgsql
'. Serversnsslave
andnsauth1
share the same DBgpgsql-dnssec=yes
' enabled.The zone (configured as type
MASTER
) onns1.freshdot.net
is 'live signed' by PowerDNS. The RRSIG-records are verified to be present in the database used bynsauth1.bit.nl
afternsslave.bit.nl
AXFR'ed the zone.The
show-zone
output onnsauth1.bit.nl
is not as verbose (v3.4.8):But on
nsslave.bit.nl
(v4.0.0) it looks perfectly sane:Our resolver logs:
Querying the auth server itself only returned the RRset queried, no RRSIGs, despite the '
+dnssec
' to dig.Note: at this moment the situation is normal/working again since i've downgraded
nsslave
to v3.4.8. It is a production machine and i can't keep it in a broken state for too long. ;)