[Dnsmasq-discuss] DNSSEC in dnsmasq's parent zone

Uwe Kleine-König uwe+dnsmasq at kleine-koenig.org
Sat Jan 18 21:56:35 UTC 2025


Hello Simon,

On 1/18/25 16:06, Simon Kelley wrote:
> I'm having a little difficulty understanding exactly what's going on in 
> your description, but I think I understand the underlying problem, and 
> I've demonstrated it and fixed it here, so I'm hoping it will fix your 
> case too.
> 
> What causes the problem is that when dnsmasq gets a query in forwarder 
> mode for a zone which it's authoritative for, it answers the query 
> itself instead of forwarding it.
> 
> The alternative to that is to forward the query to the configured 
> upstream recursor, which will recurse and ask dnsmasq in authoritative 
> mode. The recursor will then return the answer to dnsmasq acting as 
> forwarder and  the answer will get returned to the original requestor. 
> That gives the correct answer, but uses more bandwidth and takes longer, 
> so answering directly is the right thing to do; almost always.
> 
> The problem arises when the parent of the delegated zone is DNSSEC 
> signed and the client is doing DNSSEC validation, as delv does in your 
> example. We can assume that the delegated zone is NOT signed, since 
> dnsmasq doesn't provide facilities for DNSSEC in auth mode.
> 
> For explanation, assume that the parent zone is example.com, and 
> dnsmasq.example.com is delegated to dnsmasq with a suitable NS record.
> 
> delv will work down the chain of trust, starting at the root, and get as 
> far as example.com is gets to the delegation to dnsmasq.example.com, 
> notes it's a new zone, and therefore asks for a DS record for 
> dnsmasq.example.com. dnsmasq.example.com is not signed, so what it gets 
> is a signed proof that the DS record for dnsmasq.example.com doesn't 
> exist. It can now return data from dnsmasq.example.com which is not 
> DNSSEC signed, no problem. The DNSSEC standard specifies that DS records 
> comes from the parent auth server, so the recursor will ask the auth 
> server for the example.com domain for the DS record for 
> dnsmasq.example.com, and that is able to provide the signed proof of 
> non-existence.
> 
> The above works fine with any recursive server, but not via dnsmasq as a 
> forwarder when dnsmasq is also authoritative. The reason is that when 
> dnsmasq gets the query for DS dnsmasq.example.com, it notes that it is 
> authoritative for dnsmasq.example.com and returns the answer directly. 
> Since there's no DS record in it's data for the zone, it answers that 
> the DS record doesn't exist, which is fine, but it can't provide 
> cryptographic proof of non-existence. Delv can't prove that the the 
> subdmomain is not signed, but there are no signatures. It does the right 
> thing, and complains.
> 
> The fix for this is very simple: suppress answering queries for auth 
> zones locally when the query is for root of the zone AND for a DS 
> record. Now DS dnsmasq.example.com gets forwarded to the recursor, which 
> asks the auth server for example.com, which has the correct DNSSEC 
> signed "DS dnsmasq.example.com" does not exist answer. dnsmsq acting as 
> forwarder returns that to delv and all is good.
> 
> I've pushed a patch to the git repo to do exactly that at
> 
> https://thekelleys.org.uk/gitweb/? 
> p=dnsmasq.git;a=commit;h=8ce27433f8b2e17c557cb55e4f16941d309deeac
> 
> if you can get that code into you setup and try again, I'd be very 
> grateful.

It seems you interpreted the gaps in my report correctly. I'm not sure 
forwarding just the request to DS is sufficient, I would expect you also 
need to forward NS (or answer that from the --auth-server parameter?)

Anyhow, I'll investigate how to update dnsmasq on my OpenWrt machine 
with your patch and report back.

Thanks!
Uwe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/attachments/20250118/0d4115f3/attachment.sig>


More information about the Dnsmasq-discuss mailing list