Hello Simon,

On Thu, Jan 23, 2025 at 12:23:38AM +0000, Simon Kelley wrote:
> On 1/20/25 10:32, Uwe Kleine-König wrote:
> 
> > > It was ignored. The logic is somewhat tortuous, but it goes like this.
> > > The server=/kleine-koenig.org/192.168.128.3 is not available for queries
> > > which need DNSSEC validation; a DS query always needs DNSSEC validation, 
> > > so
> > > it doesn't get sent to 192.168.128.3.
> > 
> > Huh. Is this a bug that is hard to fix, or this is beneficial in any
> > situation and so works as intended?
> 
> The rationale goes like this.
> 
> The most common use for server=/example.com/<ip> is to resolve names which
> don't appear in the public DNS, accessible, via delegations, from the root.
> Typically addresses in RFC1918 space behind a NAT router. After all if it
> was delegated from the global DNS, there would be no point: the ordinary
> recursors could find the data.

ack.

> If that domain isn't connected to the global DNS via delegation, it's even
> less likely to be connected to the global DNS via a chain-of-trust, so
> there's no point in doing DNSSEC validation. If the domain is DNSSEC signed,
> since there's no chain-of-trust from the root, there needs to be a DS record
> in dnsmasq's configuration which provides a trust anchor for that domain.

What you say is right, but I cannot follow your conclusion.

Agreed, in the say 99% (just to have a number without comma) where there is no
chain-of-trust to the public DNS it's nonsensical to ask the specified
server-IP about DNSSEC stuff. But it's also (and IMHO even more)
nonsensical to ask the upstream recursor about DNSSEC for my invented
domain. So we have: The current implementation is useless and surprising
in 99% and wrong in the remaining 1%. Sending also the DNSSEC queries
about your private domain to the server is only useless in 99% (but not
surprising) and the right thing to do in the remaining 1%. So I'd claim
that not distinguishing between DNSSEC and "ordinary" and just
forwarding all requests concerning example.com to <ip> is the right and
consistent thing to do and might even be easier to implement.
Additionally asking the public recursor about your home domain might
even be considered a privacy issue.

> Hence the rule that DNSSEC validation is turned off be default for a domain
> which is being answered by a domain-specific server, but it gets turned back
> on again is there's a DS record configured for the domain.
> 
> The hardest part of allowing configuration to make a  domain-specfic server
> behave as if there is a DS record in the dnsmasq config when there isn't is
> inventing a backwards-compatible extension to the option syntax: internaly
> it's just setting a bit in the structurethat represents the server.
> 
> maybe
> 
> dnssec-server=/example.com/1.2.3.4
> 
> or
> 
> server=/example.com/dnssec-1.2.3.4
> 
> or
> 
> server=dnssec/example.com/1.2.3.4

With my above argument and if you really want to keep the current
behaviour possible, I'd say: Make the behaviour that you call "dnssec"
the default and create a syntax to enable that split configuration where
all ordinary queries go to 1.2.3.4 but the DNSSEC ones to upstream.

I look forward to your reply and wonder if it contains another DNS
lesson because I'm missing something relevant.

Best regards
Uwe

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

Reply via email to