我知道以 * 开头的 DNS 记录称为通配符记录。以@(at 符号)开头的 DNS 记录的名称是什么。这是根域的记录(例如只是 example.com,而不是www.example.com)
我想了解更多,但在 Google 中搜索“@record dns”没有返回任何有用的结果。
此类记录的正确术语是什么?我在哪里可以找到更详细的描述?
RFC 1035描述了在 DNS 记录中使用 @,但没有给出名称。
这不是关于 @ 符号的作用或它如何工作的问题。这是关于这种记录的名称的问题。
我知道以 * 开头的 DNS 记录称为通配符记录。以@(at 符号)开头的 DNS 记录的名称是什么。这是根域的记录(例如只是 example.com,而不是www.example.com)
我想了解更多,但在 Google 中搜索“@record dns”没有返回任何有用的结果。
此类记录的正确术语是什么?我在哪里可以找到更详细的描述?
RFC 1035描述了在 DNS 记录中使用 @,但没有给出名称。
这不是关于 @ 符号的作用或它如何工作的问题。这是关于这种记录的名称的问题。
在 DNS 文件中,“@”符号是一个占位符,用于表示“当前域”。
您的 DNS 记录中的 @ 符号是指您的域名记录,没有任何 www 或子域名。
顶点记录是 DNS 区域根部的记录。有时称为“裸域”。
例如,在“https://github.com/”中,它们是专门针对“github.com”的记录,而不是针对可能存在的子域的记录,例如“www.github.com”或“gist.github.com” .
Apex 记录有一个特殊的限制:它们不能是别名,因为 apex 包含不允许使用别名的 DNS 元数据[3]。继续阅读以了解这是如何成为一个问题的。我使用术语“浮动”作为视觉隐喻,因为我将要描述的内容缺乏一个通用的标准名称,因为它是一个丑陋的 hack:HTTP 使用主机记录解析端点,因此 URL 为“https:/ /github.com”表示查找“github.com”的A和AAAA记录。是的,该协议足够傲慢 [1] 以假设您的整个域的主机地址是 Web 服务器的地址。(这就是为什么我们最终在域名前加上“www”作为服务选择器的原因)。作为对查询的响应,您将获得一个 IP 地址。
不幸的是,IP 地址有时会在没有警告的情况下发生变化。
今天最常见的例子是 Amazon Web Services 提供的负载均衡器。解决方案是在您的人性化域中使用别名记录,指向基础架构提供商保持最新的隐藏技术域(例如“my-elb-name-1-1160186271.ap-southeast- 1.elb.amazonaws.com")
这对“www.example.com”没问题,但对裸露的“example.com”却不行,因为别名在顶点是被禁止的。
结果,诸如 Route 53 之类的 DNS 提供商最终遭遇了黑客攻击:在顶点的欺骗记录,跟踪外部资源并合成虚假的 A/AAAA 响应。现在你有了一个裸域,可以跟踪,或者更确切地说,希望跟踪正确的端点。但随风而变。因此,我将其描述为“浮动”。
这个kludge没有一致的名称。AWS 称它为别名,出于可靠性考虑,将其限制在自己的基础设施上;DME 称之为“ANAME”记录 [2]。该模型甚至可以很容易地实现为在您的名称服务器上运行 cron 的 shell 脚本。它很脆弱,通常不可靠,根本没有标准化,并且不能扩展到一项服务之外。
一个更好的解决方案是要求使用 SRV 记录,它允许一个人改为声明,例如,“example.com”的“https”服务。比方说,xmpp 服务、sip 服务或您想要宣布的任何其他服务。SRV 记录可以存在于顶点。他们还可以将结果端点的 A 和 AAAA (IPv6) 地址捆绑在答案中,并选择备用端口号,而无需为此打扰用户。
不是万能的灵丹妙药:区域切割存在轻微危险,可能会增加客户端查找的数量,但这是一种边缘情况,不是您可以轻易犯错也不容易修复的情况。[1] HTTP/1.0 和更早的版本是可以原谅的,因为它们起源于您刚刚在机架中安装 Web 服务器并将其称为“www”的时代。但 HTTP/2 应该响应现代架构。[2] http://www.dnsmadeeasy.com/services/aname-records/ [3] 不允许你们这些喜剧演员提到 DNAME 记录作为异国情调的反例。
我听说这被称为“Apex Record”,我认为这是在没有明确定义的情况下最合适的术语。
巧合的是,出于风格原因,在许多地方 a 可以替换为 @ 符号,因此它可以方便地助记“@pex 记录”。