Hi, I have a situation where I'm working on a Remote PIPE backend [0] with DNSSEC and I'm running into a situation with NSEC. (Not working on 3 yet).
The situation is that I have my personal domain 'widodh.nl' from where I delegate 'secure.widodh.nl' to: - ns011.auroradns.eu - ns012.auroradns.nl - ns013.auroradns.info These servers run PowerDNS 4.0 with the Remote Backend. This works just fine, I can query (AAAA) these hostnames and they work: - secure.widodh.nl - a.secure.widodh.nl - b.secure.widodh.nl - c.secure.widodh.nl - e.secure.widodh.nl - f.secure.widodh.nl 'd' doesn't exist on purpose. Now, when I ask ns011.auroradns.eu directly it responds with a proper NSEC response: wido@wido-desktop:~$ dig @ns011.auroradns.eu NSEC d.secure.widodh.nl ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> @ns011.auroradns.eu NSEC d.secure.widodh.nl ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51915 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1680 ;; QUESTION SECTION: ;d.secure.widodh.nl. IN NSEC ;; ANSWER SECTION: c.secure.widodh.nl. 3600 IN NSEC e.secure.widodh.nl. AAAA RRSIG NSEC ;; Query time: 45 msec ;; SERVER: 2a00:f10:121:b00:434:a0ff:fe00:1bc7#53(2a00:f10:121:b00:434:a0ff:fe00:1bc7) ;; WHEN: Tue Jul 26 10:15:08 CEST 2016 ;; MSG SIZE rcvd: 89 wido@wido-desktop:~$ As you can see, 'c' and 'e' are before and after. For that to work I implemented 'getBeforeAndAfterNamesAbsolute' in by backend. Now, when I try to perform a NSEC query for 'd.secure.widodh.nl' without asking ns011 directly it fails with a SERVFAIL. When I trace with dig I see that it dies at v1.pcextreme.nl which is a PowerDNS 3.4.9 setup with a MySQL backend. The dig output is long, so a snippet: wido@crew:~$ dig -6 +trace NSEC c.secure.widodh.nl ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> -6 +trace NSEC c.secure.widodh.nl ;; global options: +cmd ... ... widodh.nl. 3600 IN NS v1.pcextreme.nl. widodh.nl. 3600 IN NS v2.pcextreme.nl. widodh.nl. 3600 IN NS v3.pcextreme.eu. widodh.nl. 3600 IN DS 44692 8 2 C9AABC5574CF0772A5AC75120DA56FE387BCF52DC8122B04EA7FC41B 8EFDF47C widodh.nl. 3600 IN RRSIG DS 8 2 3600 20160804065721 20160721071001 14028 nl. DaT8QiwTBDPnUTNdM25EMQl4zjRjwxL52pinbv/8nsWdx39egO9eOktK IpS+ntcTv22JYdI4yLrT3HjbeoPMBnAGPKOCQ9hSfnogNFeZATnV9Pti zPrvqsdsqeGgRWhFWHVY52TuPxjkC5D1B0ZkYPtKpj3/pduY8PYtA5M4 6Ko= ;; Received 418 bytes from 2a00:1188:5::212#53(ns4.dns.nl) in 14 ms secure.widodh.nl. 3600 IN RRSIG NSEC 8 3 3600 20160804000000 20160714000000 7725 widodh.nl. XWDj2A4iaEC3ZDxKaiRT/+qIrP7QZ+uuUHz/MYHh76cE2m0Kd4RGhK75 qErhKPOGzg0i+LJ1ePceRFHr0rFO1xPRyQlbAaqxOeeTARGXLLN4SPY5 Ze+qwA0RppIei0Fi2GXJ5+Lha/v57RcGpnLOGgz/NqU3HolTr0Fq+nnf 9j4= secure.widodh.nl. 3600 IN NSEC soekris.widodh.nl. NS DS RRSIG NSEC ;; Received 255 bytes from 2001:14a0:300:4::53#53(v2.pcextreme.nl) in 13 ms wido@crew:~$ v2.pcextreme.nl in this case does NOT respond with NS records delegating 'secure.widodh.nl' to the *auroradns* servers. Turning on query logging showed me: select min(ordername) from records where ordername > 'secure c' and domain_id=8131 and disabled=0 and ordername is not null select ordername, name from records where ordername <= 'secure c' and domain_id=8131 and disabled=0 and ordername is not null order by 1 desc limit 1 SELECT content,ttl,prio,type,domain_id,disabled,name,auth FROM records WHERE disabled=0 and name='secure.widodh.nl' and domain_id=8131 This setup seems to think that because 'widodh.nl' exists on that setup it has to look locally for the NSEC before and after and not delegate it towards the other nameservers. The last query yields three NS records and one DS record, just as it is supposed to do. I am starting to think this is a issue with PowerDNS 3.4.9 and the MySQL backend. However, I'm not 100% sure as the NSEC part of DNSSEC is still not 100% clear to me. Is there something I'm doing wrong here? Thank you in advance, Wido [0]: https://doc.powerdns.com/md/authoritative/backend-remote/ [1]: https://doc.powerdns.com/md/authoritative/backend-remote/#getbeforeandafternamesabsolute _______________________________________________ Pdns-dev mailing list Pdns-dev@mailman.powerdns.com https://mailman.powerdns.com/mailman/listinfo/pdns-dev