这是一个关于区域顶点(或根部)CNAME的规范问题
相对普遍的知识是CNAME
,域顶端的记录是一种禁忌做法。
例子:
example.com. IN CNAME ithurts.example.net.
在最好的情况下,名称服务器软件可能会拒绝加载配置,在最坏的情况下,它可能会接受此配置并使 example.com 的配置无效。
最近,我让一家网络托管公司将指令传递给一个业务部门,我们需要将我们域的顶点 CNAME 命名为新记录。知道这将是一个自杀配置,当提供给 BIND 时,我告诉他们我们将无法遵守,这通常是愚蠢的建议。该网络托管公司的立场是,标准定义 RFC 并没有完全禁止它,并且他们的软件支持它。如果我们不能对顶点进行 CNAME,他们的建议是根本没有顶点记录,并且他们不会提供重定向网络服务器。...什么?
我们大多数人都知道RFC1912坚持这一点A CNAME record is not allowed to coexist with any other data.
,但让我们在这里对自己诚实,RFC 只是信息性的。我所知道的最接近禁止这种做法的措辞来自RFC1034:
如果节点上存在 CNAME RR,则不应存在其他数据;这可确保规范名称及其别名的数据不能不同。
不幸的是,我已经在这个行业工作了足够长的时间,我知道“不应该”与“必须不”不同,这对于大多数软件设计师来说已经足够了。知道任何缺少指向灌篮的简洁链接都会浪费我的时间,我最终让公司因为推荐的配置可能会在没有适当披露的情况下破坏常用软件的配置而受到责骂。
这让我们进入问答环节。这一次,我希望我们能够真正了解顶级 CNAME 的疯狂,而不是像我们通常在有人发布该主题时所做的那样回避这个问题。RFC1912是不受限制的,就像我没有想到的任何其他适用于此的信息 RFC 一样。让我们关闭这个婴儿。
我在互联网上读到域(例如 example.com)的主要记录应该是 A 记录,如果您使用 CNAME 记录,则会发生不好的事情。
我在一家拥有多个客户的网络公司工作。每个客户都有他们的业务域(他们通常拥有),但我希望 a) 能够在不联系他们的情况下更新他们的站点所在的服务器,b) 有一个备用域来访问他们的所有站点。
我工作的公司有一个我控制的域,例如 mycompany.com
为此,对于每个客户端,我创建了例如(client1.mycompany.com、client2.mycompany.com)记录,指向我们托管网站的服务器。
现在,由于许多客户拥有自己的域,我要求客户 IT 人员为 clientdomain.com 创建一个 CNAME 记录,指向 client1.mycompany.com。这允许我更新 client1.mycompany.com 指向的 IP 地址,而无需涉及客户 IT 人员,因为他们拥有的只是指向我控制的内容的 CNAME 记录。
这似乎有效。
但是,我读到创建 CNAME 记录作为主要记录可能会导致电子邮件问题(其中一些域有 MX 记录,但通常客户端有自己的邮件服务器)。我读到的信息并没有很详细,我也不太明白。
有人可以详细说明为什么将 CNAME 记录设置为主要记录被认为是一个坏主意,因为它似乎有效吗?
我的印象是只有子域可以有 CNAME 记录:主域需要定义自己的所有记录。但是,apt-get.com
似乎只有一个 CNAME 记录。这怎么工作?
$ dig apt-get.com
; <<>> DiG 9.8.1-P1 <<>> apt-get.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45743
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;apt-get.com. IN A
;; ANSWER SECTION:
apt-get.com. 86336 IN CNAME thie5ku9.dsgeneration.com.
thie5ku9.dsgeneration.com. 60 IN A 208.73.211.242
thie5ku9.dsgeneration.com. 60 IN A 208.73.211.246
thie5ku9.dsgeneration.com. 60 IN A 208.73.211.166
thie5ku9.dsgeneration.com. 60 IN A 208.73.211.232
thie5ku9.dsgeneration.com. 60 …
Run Code Online (Sandbox Code Playgroud)