以 @ 开头的 DNS 记录名称是什么?

以 @ 开头的 DNS 记录名称是什么?

我知道以 * 开头的 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 记录”。

相关内容