Replies: 31 comments 3 replies
-
can you also provide a domain name for which this is true given that salt? |
Beta Was this translation helpful? Give feedback.
-
and can you show the validation failure in some way? |
Beta Was this translation helpful? Give feedback.
-
I'll try, we're relatively new to this dnssec-topic. Unfortunately, with the regular dig command, we don't know how to demonstrate this accurately enough. We're testing it with the Zonemaster engine because, for example, DNSViz did not show the error. You can see the result of a test here: https://zonemaster.fi/result/cfb21f4fff62dcc1 I have created a test domain for you; you can query it live. Domain: 1713972008a2.de @ns1.dov4.de / ns2.dov4.de additional details: Metadata items: |
Beta Was this translation helpful? Give feedback.
-
I setup a recursor forwarding the domain to 49.13.70.254, added a trustanchor as the domain does not seem to be published.
A query for
Part of trace:
|
Beta Was this translation helpful? Give feedback.
-
Oh, right, that's an important piece of information I forgot to mention. The resolution of non-existent subdomains no longer works. This happens whenever there isn't an explicit entry, but only a wildcard. In our tests, these were always A or AAAA records. |
Beta Was this translation helpful? Give feedback.
-
Can you attach the zone file for the testdomain? |
Beta Was this translation helpful? Give feedback.
-
I hope that is sufficient. |
Beta Was this translation helpful? Give feedback.
-
Did you rectify the zone after setting/changing NSEC3 parameters?
|
Beta Was this translation helpful? Give feedback.
-
Sorry, I sent you the zone file from the hidden master. The rectify is done through the AXFR. We don't perform a rectify on the hidden master. Here is the zone file from the public name server again. |
Beta Was this translation helpful? Give feedback.
-
Hmm, this is getting a bit out of my area of expertise. I do note that last file lacks a NSEC3PARAM record. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
I now wonder how a secondary server serves the NSEC3PARAM record |
Beta Was this translation helpful? Give feedback.
-
@git-tec can you 'dig axfr' from the hidden signing primary, and from the secondary, and paste both? |
Beta Was this translation helpful? Give feedback.
-
yes, in the attachment |
Beta Was this translation helpful? Give feedback.
-
Interestingly, those are identical. If you do a |
Beta Was this translation helpful? Give feedback.
-
a non-existence proof involves up to 3 NSEC3s. In this case, the NSEC3
However, the NSEC3
so, whatever ehsu0 is the hash of, is being mis-handled here. I'll go investigate now. |
Beta Was this translation helpful? Give feedback.
-
that's Can you, on your hidden primary, |
Beta Was this translation helpful? Give feedback.
-
no result. there are only a |
Beta Was this translation helpful? Give feedback.
-
Did you rectify, as @omoerbeek asked in #14220 (comment) ? |
Beta Was this translation helpful? Give feedback.
-
and can you do the same query on your secondary? |
Beta Was this translation helpful? Give feedback.
-
We have done some further research and testing. Basically, on our hidden master, the max-ent-entries is enabled, but on the secondaries, max-ent-entries=0, so it is disabled. If we also disable max-ent-entries (max-ent-entries=0) on the hidden master, it refuses the AXFR -> AXFR-out zone 'DOMAIN.TLD', client 'XXXX', zone has too many empty non-terminals, aborting AXFR. We have disabled this option on our secondaries because otherwise, the behavior of wildcard queries changes significantly; see #7381 / #7292 The question is, however, what does all this have to do with the salt? This current issue does not arise with a "-" salt. |
Beta Was this translation helpful? Give feedback.
-
ah! that fits -my- testing, where deleting the ENT on the secondary reproduces your issue. |
Beta Was this translation helpful? Give feedback.
-
If we enable max-ent-entries on both sides, it works with all salts. Is it intentional that non-secure zones also get ENTs? |
Beta Was this translation helpful? Give feedback.
-
with nsec3 settings the partial nsec3 chain that fits into is
and |
Beta Was this translation helpful? Give feedback.
-
Disabling ENTs breaks DNSSEC. The wildcard behaviour you want is fundamentally incompatible with DNSSEC (and DNS, really, but without DNSSEC you mostly get away with it).
yes |
Beta Was this translation helpful? Give feedback.
-
I'm closing this ticket now as the problem was a misconfiguration and not a software bug. We can continue in https://github.com/PowerDNS/pdns/discussions if you like - in fact, shall I convert this issue to a discussion thread? |
Beta Was this translation helpful? Give feedback.
-
Yes, we can convert it into a discussion. Do we have a way to compensate you for the effort? We just find it very strange that the combination with DNSSEC and the wildcard works with Cloudflare.
|
Beta Was this translation helpful? Give feedback.
-
Okay, thanks for the report. But we still don't understand why it works with NSEC3 when we set the salt to a minus ("-")? we have set it for the domain 1713972008a2.de with secondary max-ent-entries=0. |
Beta Was this translation helpful? Give feedback.
-
I suspect this works by accident, depending on if the NSEC3 records needed for the proof are the same or distinct, something that is influenced by the seed (or the number of iterations for that matter). |
Beta Was this translation helpful? Give feedback.
-
On a side note, https://datatracker.ietf.org/doc/rfc9276/ recommends to use no salt and iteration count 0. |
Beta Was this translation helpful? Give feedback.
-
[] This is not a support question, I have read about opensource and will send support questions to the IRC channel, Github Discussions or the mailing list.
[] I have read and understood the 'out in the open' support policy
Short description
As soon as we use specific salts in our DNSSEC zones, NSEC3 validation no longer works. We create ECDSAP256SHA256 keys. We work with a hidden master that provides the DNSSEC material, and we then transfer this via AXFR to the public name servers. The same PowerDNS Authoritative version is installed on all servers.
Environment
Steps to reproduce
You take any secure zone and set one of the two NSEC3 salts
pdnsutil set-nsec3 DOMAIN.TLD '1 0 0 a70a2c4321f88fb4'
or
pdnsutil set-nsec3 DOMAIN.TLD '1 0 0 d70a2c7321f88fb4'
Afterwards, transfer it to the name servers via AXFR. After that, NSEC3 validation is no longer possible.
Other information
If you use the following salt or none at all, there are no problems.
pdnsutil set-nsec3 DOMAIN.TLD '1 0 0 7c75470678d947fe'
pdnsutil set-nsec3 DOMAIN.TLD '1 0 0 -'
This is our first bug report here, so please forgive us if any information is missing. We are happy to provide additional details if needed.
Beta Was this translation helpful? Give feedback.
All reactions