The proposal utilises an EDNS0 option code to request that the DNS server appends an additional record to the response, conveying additional information. This includes the status of DNSSEC.
Would anyone happen to know if this proposal is planned to be supported by Unbound in the near future?
Avoiding the extended error topic entirely, let me respond to your
problem. If you need to know the cryptographic DNSSEC error status on
the client, you should run a validator on the client. This is because
there is no security for the connection between client and server, you
have to perform the DNSSEC validation yourself. I.e. I am trying to
tell you to not trust unsigned error codes, run end-host DNSSEC validation.
If you have something else, eg. DOH or TLS, then you trust that and you
imply you trust the server and then again you do not need to know the
status; you trust that connection and server to set the right value. Or
if you really want it anyway, just run the DNSSEC validator to see if
the response is genuine according to the desired configuration you want.
If you want to debug the upstream server, unbound has options like
log-servfail: yes that prints the reason for a servfail into the logs
for inspection, also DNSSEC related reasons.
I am running unbound locally (localhost), and use it as a front-end to the internets public DNS servers. For some client requests we would like to insist on DNSSEC, and others I would like to understand if DNSSEC failed, but still retain the option to get a result from the DNS lookup.
Right now, when receiving a SERVFAIL, I am forced to perform a second query to unbound with the CD flag set (disabling DNSSEC for the query). There are some issues with this approach
1) The original SERVFAIL may have been legitimate, the second query may not fail, but we now have unsigned results
2) The original SERVFAIL may have been a legitimate DNSSEC issue, but we cant tell
3) Increased latency on all SERVFAILs because of the second call
So, I am looking for a solution that can convey the DNSSEC status as part of the DNS response...
For some client requests we would like to insist on DNSSEC, and
others I would like to understand if DNSSEC failed, but still retain
the option to get a result from the DNS lookup.
Clearly, DNS Extended Error is exactly what you want. Your use-case is
quite common. But DNS Extended Error is not yet a RFC and not yet
implemented (see my message about the IETF hackathon).