Query forwarding & DNSSEC

Havard Eidnes he at uninett.no
Mon Sep 23 12:59:37 UTC 2019


Hi,

we're trying to configure unbound to

1) get access to a "local view" of the DNS, accessible via a
   couple of local recursors

2) get DNSSEC validation working, since the local recursors are
   not configured to do validation

via a configuration similar to this:

----------
server:
    auto-trust-anchor-file: "/etc/unbound/root.key"
    prefetch: yes
    prefetch-key: yes
    unblock-lan-zones: yes
    insecure-lan-zones: yes

forward-zone:
    name: "."
    forward-addr: a.b.c.d
    forward-addr: a.b.f.g
----------

We've tried both unbound 1.6.0 (Debian...) and 1.9.3.

For some "external" DNSSEC-secured domain under .no, this works,
and the 'ad' flag lights up as it should in the response.  Also,
for known-insecure external zones under .no this seems to work as
intended (I get the expected response).

However, for whatever reason, lookups in what can be called the
"local domain" fails with SERVFAIL.  Cranking up the logging of
unbound, I find in the log

info: Could not establish a chain of trust to keys for example.no. DNSKEY IN

(actual name withheld).  I've run "dig" towards both of the
forward-addr listed name servers, and they both return a "nodata"
response when queried for the DNSKEY or the DS record for the
"example.no" domain (as they should).  So why does unbound think
it has a DNSKEY to validate against?!?

If I add

  domain-insecure: example.no

to the configuration (it's not really desireable to have to set
up and maintain this list) I can do lookups of NS, SOA etc., and
get data from the "local view".  I can even get a nodata response
to a DNSKEY query for "example.no", but looking up the DS record
for the domain even after this marking still fails with SERVFAIL,
and the above message can once again be found in the log from
unbound.

A side note: I did notice that unbound still wants to do RFC 8145
signaling, so sends "_ta-4f66. NULL IN" queries to the
forward-addr name servers, and they both respond with SERVFAIL...

Does anyone have a good explanation to why with the first config,
unbound seems to think it has a DNSKEY for "example.no" to do
validation against?  And in the second, with an empty DNSKEY
response, why does the DS record lookup still return SERVFAIL?

Confused,

- Håvard



More information about the Unbound-users mailing list