<div dir="ltr"><div class="gmail_quote"><div class="gmail_attr">Hello,</div><div dir="ltr"><div><br></div><div>I am trying to understand the behavior of unbound and why it sometimes removes the "A" answer that comes back with a query for a CNAME.  My setup is as follows:</div><div><br></div><div>'<a href="http://aws.example.com" target="_blank">aws.example.com</a>' (hosted in Route53):</div><div>   - test CNAME to '<a href="http://test.local.example.com" target="_blank">test.local.example.com</a>'</div><div>   - outbound resolver rule for '<a href="http://local.example.com" target="_blank">local.example.com</a>' to point to unbound server</div><div><br></div><div>'<a href="http://local.example.com" target="_blank">local.example.com</a>' is the domain for the unbound server (pfsense)</div><div>   - local-data for '<a href="http://test.local.example.com" target="_blank">test.local.example.com</a>. A 172.21.0.252 ' </div><div>   - forward-zone domain override configured for '<a href="http://aws.example.com" target="_blank">aws.example.com</a>' to point to inbound resolver in AWS</div><div><br></div><div>There is a site-to-site VPN between my network and AWS</div><div><br></div><div>Whenever I query unbound for '<a href="http://test.aws.example.com" target="_blank">test.aws.example.com</a>' I will only get the CNAME answer back.  However, if I query the AWS resolver for '<a href="http://test.aws.example.com" target="_blank">test.aws.example.com</a>' I get back the CNAME and the A record with the correct answer '172.21.0.252'.  Using packet captures, when I query unbound for '<a href="http://test.aws.example.com" target="_blank">test.aws.example.com</a>', I can confirm unbound goes out to the AWS resolver, the AWS resolver queries unbound for '<a href="http://test.local.example.com" target="_blank">test.local.example.com</a>', unbound replies, and then AWS replies to unbound with the correct answer of both the CNAME and the A record.  However, the internal client using unbound as its resolver only gets the CNAME.</div><div><br></div><div>If I look in the query logs in unbound, I see this message:</div><div><br></div><div>"info: sanitize: removing extraneous answer RRset: <a href="http://test.local.example.com" target="_blank">test.local.example.com</a>. A IN"</div><div><br></div><div>I found the part of the code that outputs this message (<a href="https://github.com/NLnetLabs/unbound/blob/master/iterator/iter_scrub.c#L699-L708" target="_blank">https://github.com/NLnetLabs/unbound/blob/master/iterator/iter_scrub.c#L699-L708</a>) and the comments indicate that removing any answers that don't have the same domain name as the query is on purpose.  If so, why is that?  As an experiment, I added in a CNAME in '<a href="http://aws.example.com" target="_blank">aws.example.com</a>' called 'google' and pointed it to '<a href="http://www.google.com" target="_blank">www.google.com</a>' and that doesn't have this problem, but the domain name is clearly different, so if this on purpose I'm not sure why this worked but a CNAME that points to unbound local-data doesn't work.</div><div><br></div><div>As for why I'm contorting myself for all this, I'm trying to change the domain of the unbound box (and all its clients) but some clients still use old fully-qualified names, and I want to provide backward compatibility. I have a (not great) work around but I'm trying to understand this behavior.</div><div><br></div><div>Thanks in advance for any help provided.</div><div><br></div><div>- treyd</div><div><br></div><div><br></div><div><br></div></div>
</div></div>