我知道以 * 开头的 DNS 记录称为通配符记录。以 @(at 符号)开头的 DNS 记录的名称是什么。这是根域的记录(例如,仅 example.com,而不是www.example.com)
我想了解更多信息,但在 Google 中搜索“@ record dns”没有返回任何有用的结果。
是什么正确的术语对于这种类型的记录,在哪里可以找到更详细的描述?
RFC 1035描述了 DNS 记录中 @ 的用法,但并未给出名称。
这是不是关于 @ 符号的作用或工作原理的问题。这是一个关于姓名对于这种记录
答案1
顶级记录是 DNS 区域根部的记录。有时也称为“裸域”。
例如,在“https://github.com/”中,它们是专门针对“github.com”的记录,而不是可能存在的子域名(例如“www.github.com”或“gist.github.com”)。
Apex 记录有一个特殊限制:它们不能是别名,因为 apex 包含不允许别名的 DNS 元数据[3]。请继续阅读以了解这如何成为问题。我使用术语“浮动”作为视觉隐喻,因为我即将描述的内容缺乏通用的标准名称,因为它是一种丑陋的黑客行为: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 响应。现在,您有一个跟踪(或者更确切地说,希望跟踪)正确端点的裸域。但它会随风而变。因此我将其描述为“浮动”。
这种临时解决方案没有统一的名称。AWS 将其称为别名,出于可靠性考虑,将其限制在自己的基础设施中;DME 将其称为“ANAME”记录 [2]。该模型甚至可以很容易地实现为名称服务器上 cron 中运行的 shell 脚本。它很脆弱,通常不可靠,完全不标准化,并且无法扩展到一项服务之外。
一个更好的解决方案是要求使用 SRV 记录,它允许声明例如“example.com”的“https”服务。此外,还有 xmpp 服务、sip 服务或您想要宣布的任何其他服务。SRV 记录可以存在于顶点。它们还可以将答案中结果端点的 A 和 AAAA (IPv6) 地址捆绑在一起,并选择备用端口号,而无需用户为此烦恼。
并非万能药:区域削减可能会增加客户端查找的次数,但这只是一种特殊情况,并不是容易陷入的情况,也很容易修复。
[1] HTTP/1.0 及更早版本可以免除,因为它们诞生于一个网络服务器被放在机架上并称之为“www”的时代。但 HTTP/2 应该能够适应现代架构。
[2]http://www.dnsmadeeasy.com/services/aname-records/
[3] 你们这些喜剧演员都不被允许提及 DNAME 记录作为奇特的反例。
答案2
在DNS文件中,“@”符号是用来表示“当前域”的占位符。
DNS 记录中的 @ 符号指的是不带任何 www 或子域名的域名记录。
答案3
@是“占位符”,“DNS 简写”, 为了 ”当前起源“ 或者$ORIGIN
。
也没有花哨的名字。
@在区域文件中定义RFC 1035- 第 35 页:
@ A free standing @ is used to denote the current origin.
但没有指定其他名称。
注意 ”当前起源“ 是不必要等同于“当前域“。
我认为使用名称“顶尖“ 也稍微不正确。
虽然现在你不经常看到它,但在手动配置的区域文件中,你可以明确设置 $ORIGIN,并且可以将其设置为与区域/域名不同的内容:
您可以设置$ORIGIN 到 .(点)这有效地禁用了@简写,但也防止了当粗心的管理员不一致地打算使用 FQDN,但没有用尾随的
.
更为罕见(且令人困惑)的是,您可以在区域文件中重置 $ORIGIN,并利用新域将用于后续不合格域的事实,并执行如下一些晦涩难懂的操作:
$ORIGIN 1.0.10.in-addr.arpa. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day @ IN NS dns1.example.com. NS dns2.example.com. ; The NS records above showcase several shorthand techniques ; 1. By starting the line with a blank character the line with ; the dns2 name server Resource Record is owned by the ; previous owner, i.e. the previous @ record ; 2. The @ is shorthand for $ORIGIN == 1.0.10.in-addr.arpa. ; 3. When the TTL field is omitted the default $TTL will be used. ; 4. When the class field is omitted the default IN internet class is used. ; ; After expanding all shorthand : 1.0.10.in-addr.arpa. 86400 IN NS dns1.example.com. 1.0.10.in-addr.arpa. 86400 IN NS dns2.example.com. ; The example below showcases how a short hostname is commonly ; used as shorthand. The DNS server will append $ORIGIN where ; a FQDN is expected. 1 PTR gateway.example.com. 2 PTR dns1.example.com. 3 PTR dns2.example.com ; note below also the effect of the common typo in dns2.example.com ; showcasing how any hostname not terminated with a . will be considered ; a "short" hostname rather than a FQDN once all shorthand is expanded: 1.1.0.10.in-addr.arpa. 86400 IN PTR gateway.example.com. 2.1.0.10.in-addr.arpa. 86400 IN PTR dns1.example.com. 3.1.0.10.in-addr.arpa. 86400 IN PTR dns2.example.com.1.0.10.in-addr.arpa. ; showcase below how resetting the $ORIGIN can be used ; for even more efficient shorthand $ORIGIN floor1.example.com. 20.1.0.10.in-addr.arpa. IN PTR alice ; will be completed with the new $ORIGIN and $TTL to: 20.1.0.10.in-addr.arpa. 86400 IN PTR alice.floor1.example.com. 21.1.0.10.in-addr.arpa. IN PTR betty 22.1.0.10.in-addr.arpa. IN PTR charlie 23.1.0.10.in-addr.arpa. IN PTR doug 24.1.0.10.in-addr.arpa. IN PTR ernest 25.1.0.10.in-addr.arpa. IN PTR fanny $ORIGIN floor2.example.com. 26.1.0.10.in-addr.arpa. IN PTR geoff ; will be completed with $ORIGIN and $TTL to: 26.1.0.10.in-addr.arpa. 86400 IN PTR geoff.floor2.example.com. 27.1.0.10.in-addr.arpa. IN PTR honey
然后@$ORIGIN 有几个不同的值。
答案4
我听说有人将其称为“巅峰纪录”,我想在缺乏明确定义的情况下这是最合适的术语。
巧合的是,在很多地方,出于风格原因,a 可以用 @ 符号代替,因此可以方便地记住“@pex 记录”。