unbound replaces CNAME query with A query?

Petr Menšík pemensik at redhat.com
Fri Mar 31 14:45:15 UTC 2023

On 3/31/23 16:09, Tuomo Soini wrote:
> On Fri, 31 Mar 2023 15:57:46 +0200
> Petr Menšík <pemensik at redhat.com> wrote:
> I have tried on my unbound and it never returns NXDOMAIN to me. The
> result is the same with kdig or dig, that makes no difference. I get
> All unbounds here without forwarders set up, is that the difference?

I have tried it inside a Rawhide container.

# unbound-control forward
off (using root hints)

# dig @localhost cnametest.bleve.fi. CNAME

; <<>> DiG 9.18.13 <<>> @localhost cnametest.bleve.fi. CNAME
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55072
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

; EDNS: version: 0, flags:; udp: 1232
;cnametest.bleve.fi.        IN    CNAME

cnametest.bleve.fi.    7118    IN    CNAME    nxdomain.foobar.fi.

;; Query time: 0 msec
;; SERVER: ::1#53(localhost) (UDP)
;; WHEN: Fri Mar 31 16:20:26 CEST 2023
;; MSG SIZE  rcvd: 77

Just after fresh restart, it is NOERROR. As it is later. Indeed, the 
query unbound sends to cnametest.bleve.fi is A? query. But the response 
delivered to dig is a correct one. Tested with unbound-1.17.1-2.fc38.x86_64.

Frame 641: 89 bytes on wire (712 bits), 89 bytes captured (712 bits) on 
interface virbr0, id 0
Ethernet II, Src: 7e:85:92:43:88:71 (7e:85:92:43:88:71), Dst: 
RealtekU_02:bd:85 (52:54:00:02:bd:85)
Internet Protocol Version 4, Src:, Dst:
User Datagram Protocol, Src Port: 46986, Dst Port: 53
Domain Name System (query)
     Transaction ID: 0x4302
     Flags: 0x0010 Standard query
     Questions: 1
     Answer RRs: 0
     Authority RRs: 0
     Additional RRs: 1
         cnametest.bleve.fi: type A, class IN
     Additional records
     [Response In: 719]

It responds to it with nameservers of bleve.fi. But to those servers it 
already sends CNAME query, not A? Attaching my pcap.

When I did dig @localhost ns bleve.fi. before cnametest, it returned 
SERVFAIL the first time. Only then it responded with NOERROR. So no, I 
do not know how to get NXDOMAIN response from unbound. I get similar 
results for the original query.

>> $ kdig cnametest.bleve.fi. CNAME | head -2
>> ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 35718
>> ;; Flags: qr rd ra ad; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL:
>> 0
>> dnsmasq does not handle CNAMEs at all. It requires upstream recursive
>> server to do the job and just passes the result to a client. bind can
>> to proper iteration job from root hints however.
>> If it is a bug, I would suggest creating issue at
>> https://github.com/NLnetLabs/unbound/
>> But maybe more precise steps should be described when it returns
>> NXDOMAIN. Just flushing the cache and doing your query does not seem
>> to be enough for me.

Petr Menšík
Software Engineer, RHEL
Red Hat, https://www.redhat.com/
PGP: DFCF908DB7C87E8E529925BC4931CA5B6C9FC5CB
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cnametest-bleve.fi-filtered.pcapng
Type: application/x-pcapng
Size: 6764 bytes
Desc: not available
URL: <http://lists.nlnetlabs.nl/pipermail/unbound-users/attachments/20230331/9844401b/attachment-0001.bin>

More information about the Unbound-users mailing list