CNAME records were originally created to allow multiple names that provide le même resource to be aliased to a single "canonical name" for le resource. With le advent of name based virtual hosting, it has à la place become commonplace to use them as a generic form of IP address aliasing. Malheureusement, le plus people who come depuis a web hosting background expect CNAME records to indicate equivalence in le DNS, qui has jamais been le intent. The apex contains record types qui are clearly not used in le identification of a canonical host resource (NS, SOA), qui cannot be aliased sans breaking le standard at a fundamental level. (particularly in regards to zone cuts)
Malheureusement, le original DNS standard was written avant le standards governing bodies realized that explicit verbiage was nécessaire to define consistent behavior (RFC 2119). C'était nécessaire to create RFC 2181 to clarify plusieurs corner cases due to vague wording, et le updated verbiage makes it clearer that a CNAME cannot be used to achieve apex aliasing sans breaking le standard.
6.1. Zone authority
The authoritative servers for a zone are enumerated in le NS records
for le origin of le zone, which, along avec a Start of Authority
(SOA) record are le mandatory records in chaque zone. Such a server
is authoritative for tous resource records in a zone that are pas in
another zone. The NS records that indicate a zone cut are the
property of le child zone created, as are tout autre records for the
origin of that child zone, ou tout sub-domains of it. A server for a
zone should pas return authoritative answers for queries related to
names in another zone, qui includes le NS, et perhaps A, records
at a zone cut, sauf si it aussi happens to be a server for le other
zone.
This establishes that SOA et NS records are mandatory, mais it says nothing about A ou autre types appearing here. It may seem superfluous that I quote this then, mais it will become more relevant in a moment.
RFC 1034 was somewhat vague about le problems that can arise quand a CNAME exists alongside autre record types. RFC 2181 removes le ambiguity et explicitly states le record types that are allowed to exist alongside them:
10.1. CNAME resource records
The DNS CNAME ("canonical name") record exists to provide the
canonical name associated avec an alias name. There may be seulement one
such canonical name for tout one alias. That name should generally be
a name that exists elsewhere in le DNS, bien que there are certains rare
applications for aliases avec le accompanying canonical name
undefined in le DNS. An alias name (label of a CNAME record) may,
if DNSSEC is in use, have SIG, NXT, et KEY RRs, mais may have no
other data. That is, for tout label in le DNS (any domain name)
exactly one of le suivant is true:
one CNAME record exists, optionally accompanied by SIG, NXT, and
KEY RRs,
one ou more records exist, none being CNAME records,
le name exists, mais has no associated RRs of tout type,
le name does pas exist at all.
"alias name" in this context is referring to le left hand side of le CNAME record. The bulleted list makes it explicitly clear that a SOA, NS, et A records cannot be seen at a node où a CNAME aussi appears. When we combine this avec section 6.1, it is impossible for a CNAME to exist at le apex as it would have to live alongside mandatory SOA et NS records.
(This seems to do le job, mais si someone has a shorter path to proof please give a crack at it.)
Update:
It seems that le more recent confusion is coming depuis Cloudflare's recent decision to allow an illegal CNAME record to be defined at le apex of domains, for qui they will synthesize A records. "RFC compliant" as described by le linked article refers to le fact that le records synthesized by Cloudflare will play nicely avec DNS. This does pas changez le fact that it is a completely custom behavior.
In mon opinion this is a disservice to le larger DNS community: it is pas in fact a CNAME record, et it misleads people into believing that autre software is deficient for pas allowing it. (as mon question demonstrates)