Hi,

I'm puzzled by RFC 9824's distortion of NXDOMAIN return code. That RFC seems to provide ways to restore the response code; however, their "should" and "recommended" words are all spelled lowercase in Section 5. In addition, the forwarded message below says BIND9 doesn't appear to be doing such restoration.

Any forecast on how this topic is going to evolve?

TIA
Ale


-------- Forwarded Message --------
Subject: [dmarc-ietf] Re: Compatibility of "np" tag with RFC 9824 (Compact Denial of Existence in DNSSEC)
Date: Thu, 11 Jun 2026 12:33:37 +0200
From: Matteo Contrini <[email protected]>
To: [email protected]

On 11/06/2026 10:57, John R. Levine wrote:
Please see my response to your erratum.

RFC 9824 section 5 explains how resolvers recover the correct NXDOMAIN response so they don't break every application that expects NXDOMAIN to work.  We debated this at great length while writing the RFC.

R's,
John

Thanks for the answer, John. For the record, I'm not the author of that erratum.

I've read Section 5 of RC 9824 multiple times, let me try to rephrase what it says and provide my observations:

- For DNS queries that don't have the DO bit set ("DNSSEC answer OK"), it says that authoritative nameservers could simply return NXDOMAIN. It also says that this is unlikely to be useful since queries usually go to a recursive resolvers, and modern resolvers are all DNSSEC aware, so this doesn't apply. Fine.

- A recursive resolver that understands the NXNAME signal and receives a query from a client without the DO bit set can decide to replace the NOERROR response code with NXDOMAIN. This mechanism is however optional, and I see no indication that it's being applied in the real world so far.

I've checked 8.8.8.8 and 1.1.1.1, I've looked at the source code of BIND9, Unbound and PowerDNS and unless I missed something they don't appear to be doing this. In my experience, DNS libraries usually don't set the DO bit by default (nor does "dig"), so most implementations will likely fall in this category of queries and in the current state won't see NXDOMAIN.

- A resolver that receives a query with the DO bit set won't do any replacement and respond with NOERROR + NXNAME, if that's the case. The client will therefore need to read the NXNAME bit to infer non-existence. Is this correct or I'm reading it wrong? If so, RFC 9989 makes no mention of this and assumes you can just check for NXDOMAIN.

- According to Section 5.1 of RFC 9824 a resolver can also request an authoritative server to respond with NXDOMAIN even when compact NSEC is used, with the CO flag. At the moment, Cloudflare and NS1 authoritative servers don't appear to support this, while Bunny DNS does. For this to be useful, however, the CO flag needs to be set by both the resolver and the query client (otherwise the NXDOMAIN would be reverted to NOERROR). DNS libraries don't set this bit by default (nor does "dig"), so an implementation needs to be aware that they should set also the CO flag when they use the DO flag.

Did I get this right? If so, I still think that RFC 9989 is at least missing some guidance for developers:

- If an implementation doesn't set the DO bit, it currently receives a NODATA response with most (or all?) resolvers. Replacement of NOERROR with NXDOMAIN by resolvers is optional and isn't happening at the moment.

- If an implementation sets the DO bit, they need to be aware of RFC 9824 and read the NSEC NXNAME bit because no replacement is done by default. RFC 9989 makes no mention of this possibility and assumes you can always read NXDOMAIN.

- If an implementation sets both the DO flag and the CO flag, most of the time it falls back to the previous point, currently. Hopefully this will improve, but support for the flag is optional.

Happy to be shown wrong!

--
Matteo


_______________________________________________
dmarc mailing list -- [email protected]
To unsubscribe send an email to [email protected]
--
Visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from 
this list.

Reply via email to