On 1/19/25 16:48, Uwe Kleine-König wrote:
Hello Simon,

On Sun, Jan 19, 2025 at 12:07:25AM +0000, Simon Kelley wrote:
On 1/18/25 21:56, Uwe Kleine-König wrote:
Anyhow, I'll investigate how to update dnsmasq on my OpenWrt machine
with your patch and report back.

Thanks. I did some more testing and found a couple more bugs. One is
theoretical and one is real in the sense that I saw it happen, but it
requires the forwarder part of dnsmasq to be configured with

  --cache-rr=ANY,

so you probably haven't hit it. Anyway, I tagged 2.91test8, so best to test
that.

OK I did, and I see an improvement, namely:

        root@happy:~# dig +dnssec kk4.kleine-koenig.org DS

        ; <<>> DiG 9.20.4 <<>> +dnssec kk4.kleine-koenig.org DS
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45505
        ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 8, ADDITIONAL: 1

        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags: do; udp: 1232
        ; EDE: 29: (Result from negative cache for entire name)
        ;; QUESTION SECTION:
        ;kk4.kleine-koenig.org.         IN      DS

        ;; AUTHORITY SECTION:
        kleine-koenig.org.      2295    IN      SOA     ns2.kleine-koenig.org. 
hostmaster.kleine-koenig.org. 1736985600 86400 7200 3600000 3600
        2h1ek1sl5f0n5g07dos4u229nlrldiuh.kleine-koenig.org. 2295 IN NSEC3 1 0 0 
- 2P9C6ENEEA87649H171LI9VRHSJHD415 A NS SOA MX TXT AAAA RRSIG DNSKEY NSEC3PARAM 
CDS CDNSKEY SPF CAA
        jsj8simjbajncnrcii8eq3474hg5f6pt.kleine-koenig.org. 2295 IN NSEC3 1 0 0 
- KC9F61PEEQM0I99JMFUTDS2AG9ERP4JA CNAME RRSIG
        b862q755o9ujc0mu6llpi5hu4n0tm9em.kleine-koenig.org. 2295 IN NSEC3 1 0 0 
- BI486GC6KIU7IU4NLOCN8SL91BHSKRV5 A AAAA RRSIG
        kleine-koenig.org.      2295    IN      RRSIG   SOA 13 2 86400 
20250130000000 20250109000000 34607 kleine-koenig.org. 
o+4F0Nhr6KWw6dEVfgeGRv4B3n1yjdZKhTCPB03IIK9naZQGvdgUfLV2 
PADPEFYtDKv9ePRzyJTxobF+pCa2rA==
        2h1ek1sl5f0n5g07dos4u229nlrldiuh.kleine-koenig.org. 2295 IN RRSIG NSEC3 
13 3 3600 20250130000000 20250109000000 34607 kleine-koenig.org. 
5d5BQRag1NrEKo22RhuvvqUBIq1NJykKUIwZGrzlvmRtvEUwl0VtciHf 
6DnomyWFZqx5HIbuhTeOMu9CxdUjTg==
        jsj8simjbajncnrcii8eq3474hg5f6pt.kleine-koenig.org. 2295 IN RRSIG NSEC3 
13 3 3600 20250130000000 20250109000000 34607 kleine-koenig.org. 
NzUYWmFm4OhGVMMU6DFFnB+xxzxA8ZOQZkSPXxT6yEaiXVvP4bXziolM 
8o/2l0lcGO1j8ARAsVl4feDEfkY09A==
        b862q755o9ujc0mu6llpi5hu4n0tm9em.kleine-koenig.org. 2295 IN RRSIG NSEC3 
13 3 3600 20250130000000 20250109000000 34607 kleine-koenig.org. 
Sx2J6xvVOFULEK6uKDMvP+E3gqJ251Dv2rAkLW+w/b/Fokp7Kg8t/oit 
ZtDSi8InKqXfdiSUzLqWft9sjv2sXA==

        ;; Query time: 40 msec
        ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
        ;; WHEN: Sun Jan 19 16:53:06 CET 2025
        ;; MSG SIZE  rcvd: 848

(which lacked the DNSSEC stuff before).

*But* the SOA line mentioned there is the public one, which means that
that

        server=/kleine-koenig.org/192.168.128.3

was ignored here?! (It works when asking directly for the SOA:

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. If you add a DS record for kleine-koenig.org to your config, it should work, assuming that 192.168.128.3 is DNSSEC capable.

        root@happy:~# dig kleine-koenig.org SOA

        ; <<>> DiG 9.20.4 <<>> kleine-koenig.org SOA
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54931
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags:; udp: 1232
        ;; QUESTION SECTION:
        ;kleine-koenig.org.             IN      SOA

        ;; ANSWER SECTION:
        kleine-koenig.org.      3496    IN      SOA     ns1.kleine-koenig.org. 
hostmaster.kleine-koenig.org. 1736985600 86400 7200 3600000 3600

        ;; Query time: 30 msec
        ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
        ;; WHEN: Sun Jan 19 17:27:26 CET 2025
        ;; MSG SIZE  rcvd: 97

(note ns1.kleine-koenig.org for internal vs. ns2.kleine-koenig.org for
external).

The NS record is fine. It does get answered from the --auth-server param and
a client should get the same answer from either the parent zone's auth
server or the child zone's as long as both have been configured the same.
It's in the unsigned child zone, so DNSSEC RRs don't apply.

However I cannot confirm that: As in the first mail reported I don't get
any answer when asking for the NS record from the forwarder:

        root@happy:~# dig kk4.kleine-koenig.org NS

        ; <<>> DiG 9.20.4 <<>> kk4.kleine-koenig.org NS
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19436
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags:; udp: 1232
        ;; QUESTION SECTION:
        ;kk4.kleine-koenig.org.         IN      NS

        ;; Query time: 0 msec
        ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
        ;; WHEN: Sun Jan 19 16:54:52 CET 2025
        ;; MSG SIZE  rcvd: 50

dnsmasq logs the follwing for that query:

        Sun Jan 19 17:30:09 2025 daemon.info dnsmasq[1]: 99 127.0.0.1/57004 
query[NS] kk4.kleine-koenig.org from 127.0.0.1
        Sun Jan 19 17:30:09 2025 daemon.info dnsmasq[1]: 99 127.0.0.1/57004 
config kk4.kleine-koenig.org is NODATA

I can't reproduce this here it works for me.

Not sure this is a problem for the DNSSEC verification though.

It shouldn't be.

But there is an answer from the auth side:

        root@happy:~# dig @192.168.128.4 kk4.kleine-koenig.org NS

        ; <<>> DiG 9.20.4 <<>> @192.168.128.4 kk4.kleine-koenig.org NS
        ; (1 server found)
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19283
        ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
        ;; WARNING: recursion requested but not available

        ;; OPT PSEUDOSECTION:
        ; EDNS: version: 0, flags:; udp: 1232
        ;; QUESTION SECTION:
        ;kk4.kleine-koenig.org.         IN      NS

        ;; ANSWER SECTION:
        kk4.kleine-koenig.org.  600     IN      NS      happy.kleine-koenig.org.

        ;; Query time: 0 msec
        ;; SERVER: 192.168.128.4#53(192.168.128.4) (UDP)
        ;; WHEN: Sun Jan 19 16:55:01 CET 2025
        ;; MSG SIZE  rcvd: 108

The DS record is the only thing that HAS to come from the parent, to prove
that the child is not signed.

Ack.

Apart from the wrong server being asked I don't spot a relevant issue
when comparing the output of

        delv +rtrace +mtrace @192.168.128.3 happy.kk4.kleine-koenig.org
        delv +rtrace +mtrace @127.0.0.1 happy.kk4.kleine-koenig.org

I don't wanna spam the list with these outputs, but I can provide them
in private mail if you're interested. Having said that I think asking
the wrong server for some queries is a valid excuse for delv still
failing because the non-existance for kk4.kleine-koenig.org/DS isn't
properly signed then.

Send me stuff off-list. I'd like to see dnsmasq logs too.


Cheers,

Simon.



Best regards
Uwe


_______________________________________________
Dnsmasq-discuss mailing list
[email protected]
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

Reply via email to