On 10 Apr 2017, at 1:04, Richard Gibson wrote:
On Sun, Apr 9, 2017 at 3:56 PM, Peter van Dijk
<peter.van.d...@powerdns.com>
wrote:
This section calls for limiting the TTL of cached address records to
the
lesser of the ANAME TTL and the TTL of the retrieved address
records, but
section 3 requires servers to follow chained responses. Are the TTLs
of
intermediate records in a chain supposed to be ignored?
What was the response on this point?
Oh, right. I suppose the right answer would be to take the lowest of all
involved TTLs.
Right; I definitely think there should be text explicitly defining
behavior
for timeouts, nonzero RCODEs, and bogus responses received when
looking up
ANAME targets. Section 4 covers part of it (for recursive servers
only),
but doesn't define how to determine when "resolution fails" or what to
do
when not opting to use the accompanying records as a fallback, and
there is
no guidance at all for authoritative servers.
Agreed.
*Section 3.2*
The wording of this section could use some improvement. It seems to
prohibit secondary servers from resolving ANAME targets when they
are
present at the same domain as address types... do I understand
correctly?
Yes, that is correct. We went through a few iterations and thought
exercises and this seemed like the optimal behaviour.
Dyn went another way with our ALIAS functionality, reserving
same-domain
address record sets for fallback data to be used whenever target
resolution
doesn't yield records of the appropriate type (including, perhaps
controversially, NXDOMAIN and NODATA empty responses). Assuming a
secondary
server predating ANAME, the Dyn behavior would be slightly better when
the
primary server is ignorant of that gap (i.e., the secondary would
always
serve fallback data) and identical behavior when it is not (i.e., the
authoritative would pre-expand as the draft specifies in Section 5).
It
also provides support for multi-type host names with single-type
targets,
e.g. static AAAA records sharing a domain with an ALIAS targeting a
name
providing only A records. Where it really shines, though, is in
handling
error cases like those discussed above—it was very important to our
customers that they could prevent us from ever issuing cacheable
negative
responses. What thought exercises took you in this direction?
Working back from the premise that there -will- be ANAME unaware
secondaries, we allow primaries to do the ANAME expansion during
outgoing AXFR (or on load, but in any case the secondary gets actual
(signed!) A/AAAA records). Thus, such a secondary will simply serve the
A/AAAA. To keep things simple, we decided that an ANAME aware auth will
do the same, so behaviour is consistent.
The alternative, of defining those records as fallback, means that ANAME
aware slaves that -do- receive a pre-expanded A/AAAA set, need
configuration knobs to figure out if they should look up the ANAME
target or not. We could automate this to a limit - say, if you are a
slave, you understand ANAME, and you do not have the private key for the
zone, then obviously you have to use what you find in the zone. However,
it was my feeling that this would yield more complexity than we want.
Anyway, I will ponder your use case.
As for ‘AAAA from config, A from ANAME’, we’ve been discussing
allowing multiple ANAMEs at a node, and then you could do something like
this:
www.example.com. ANAME www-v6.example.com.
www.example.com. ANAME example.com.my-cdn.com
www-v6.example.com. AAAA 2001:db8::80
Are such address records still subject to TTL decrementing
(presumably
starting at the time of zone transfer)? And when only a single
address
type
is present (e.g., just ANAME and A), does that still prevent
resolution of
the ANAME target for the other type?
(1) Yes, they are still subject to TTL decrementing, but if the slave
is
not ANAME-aware, no decrementing will happen and the draft allows
this, if
we wrote it all down correctly.
(2) Yes, when any address records are present, the ANAME is deemed to
have
already been expanded. If A is there and no AAAA, then this means
that
there is in fact no AAAA to be had.
I understand the motivation, but there's an interesting wrinkle with
respect to forward compatibility... what happens when a new address
type is
added to the DNS? The assumption that pre-expansion of any address
type
implies pre-expansion of all address types seems like it could lead to
some
dramatic changes in behavior as primary servers, secondary servers,
resolvers, and targeted zones become aware of the new type in a
nonuniform
fashion. Has any consideration been given to that concern?
Not by me so far, I’ll readily admit. Will ponder.
On a related note, should recursive resolvers query for ANAME targets
even
when they *don't* correspond to A or AAAA QTYPEs?
Probably not.
It is also mute on the use of DNSSEC for resolving ANAME target
records,
but that should probably be covered somewhere.
This is an interesting topic actually. There are existing deployments
of
PowerDNS ALIAS (which of course is quite similar to ANAME) that use
it
instead of ‘CNAME to unsigned’ so they can sign the target
addresses (that
they get via a non-DNSSEC but still secure path). This draft should
also
allow that. If you have suggestions for a section on ANAME target
resolving
and DNSSEC, please let us know.
Addressing the above points to explicitly define behavior for bogus
responses will cover the functional requirements, so this will likely
take
the form of MAY or SHOULD guidance for using DNSSEC when resolving
ANAME
targets.
Indeed.
Kind regards,
--
Peter van Dijk
PowerDNS.COM BV - https://www.powerdns.com/
_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop