记录 VS。Cname N 轮

Pat*_*k R 7 domain-name-system a-record cname-record

有经验的DNS管理员请帮助我理解...

我在开发环境中运行一个小型 DNS 服务器,该服务器在任何时候最多可解析 5 个域名。我的问题源于这里的讨论:有什么区别......

我的问题是这样的:

  • 当我有一个域名和至少一个指向该域的子域时,我应该使用什么?

一个答案是这样的:

  • 我认为适当的解决方案是使用 Cnames。这将允许我更改一次 IP 地址并同时影响多个主机名(cname)。这将帮助我让事情变得简单。这也将使管理 TTL 记录更加直接和可靠。我很容易犯错,所以这也会限制我犯错的机会。

另一个答案是这样的:

  • 其他人认为通过使用 A Name 记录可以加快查询速度(我不一定反对这一事实)。

我知道这两种方法都可行,但基于 DNS 的 RFC 所采用的标准让我相信我们应该正确使用 Cnames 和 A Names 并且是合适的。规则可以被打破,但如果你不能依赖它们又有什么意义呢?

如果您运行大型 DNS 服务器或有这样做的经验,请仅回答此问题。否则不要指望你的意见会改变我的意见。有人告诉我,这完全是个人喜好的问题,我希望不是这样。

如果你认为我在说一个非常古老的观点,请原谅我。

ryt*_*tis 11

好的,答案隐藏在您的问题中:

...小型DNS服务器...最多5个域名...

...使用 A Name 记录可以加快查询速度...

通常 DNS 查找很少进行,并且无论如何都会缓存在应用程序中或请求系统上。因此,这种“加速”论点只是假设性的。

我运行相当大的 DNS 基础设施,在本地为具有 300 多个不同域的数千台主机提供服务。

我将 A 记录保持在最低限度,并尽可能在合乎逻辑的情况下使用 CNAME。经验法则是:只为节点的主接口记录,以及需要反向解析到它的记录。其他一切(如服务器上运行的服务)都是 CNAME。

没有多个 A 的原因也是您期望(虽然不是必需的!!)有相应的 PTR。但是,如果您只有 1 个 IP,则不能。

换句话说:

name1 IN A IP1
IP1 IN PTR arpa.name1
name2 IN CNAME name1
Run Code Online (Sandbox Code Playgroud)

可以,但是

name1 IN A IP1
IP1 IN PTR arpa.name1
name2 IN A IP1
IP2 IN PTR arpa.name2
Run Code Online (Sandbox Code Playgroud)

不是这样(事实上你并不真的想要最后一个条目!)

但话又说回来,这真的是一个常识和偏好的问题,没有硬性规定。


Aln*_*tak 5

有一个A服务器的主(或“基础设施”)主机名记录。

然后,托管在其上的网站应使用CNAME指向该主机名的记录。

例外情况是,如果您希望“裸”域名(即没有www.前缀或类似前缀)起作用。DNS 规则意味着您通常不能CNAME为那些使用 a ,不幸的是,这意味着这些记录必须是A记录,即:

$ORIGIN example.net. ; host is in this domain
@      IN SOA ...
       IN NS ...
server IN A 192.0.2.1

$ORIGIN example.com. ; website is in this domain
@      IN SOA ...
       IN NS ...
       IN A 192.0.2.1 ; can't be a CNAME - other RRs already here
www    IN CNAME server.example.net.
Run Code Online (Sandbox Code Playgroud)

你要凭据?查看我的资料...