Hi Viktor,
How do we get the desired behaviour clarified so implementers of
servers and clients have a reference when trying to resolve their
disagreement? IMO, the CNAME should precede the A, but that still
isn't precise enough. Some are asking if it's sufficient that all
CNAME precede all A.
Which clients that are not recursive resolvers talk directly to
authoritative nameservers (not counting "nslookup", "dig", ...)?
Those, like ping, where a foo.local is provided by a local,
authoritative, nameserver. DNS is increasing being used on a local
level, e.g. as a distributed key/value lookup. That's one reason why
new servers are coming along and meeting old clients.
If an order is to be specified, then it should not only order all
applicable CNAME RRs before any records that bear the final anwer, but
also order the CNAME records in a chain of CNAMEs, so that the source
CNAME precedes the target CNAME:
I agree. That would seem to give the simplest client implementation,
and probably matches early BIND.
However, it is not clear why the order of records in a non-recursive
response needs to be constrained in any way. Surely, recursive
resolvers can reorder the records as necessary?
I have a lack of DNS Fu. If the recursive resolver looking up (A?
foo.local) talked to the authoratitive server that answered (A
bar.local=1, CNAME foo.local=bar.local) then, assuming it understood
that completely answered the question, might it not simply copy the
answer back to the client without re-ordering?
Cheers, Ralph.