BIND - 为什么重复的名称服务器条目(@和*)?

BIND - 为什么重复的名称服务器条目(@和*)?

我必须手动调整我的 DNS 服务提供商 BIND 文件。

BIND文件,由专业托管公司创建,之前:

$ORIGIN mycoolsite.com.  
$TTL 300  
@ SOA ns1.cheapreg.com. registry.cheapreg.com. ( ... )  
@ IN 3600 NS ns1.cheapreg.com.  
@ IN 3600 NS ns2.cheapreg.com.  
@ IN 3600 A 199.9.99.85  
@ IN 3600 A 199.9.99.86  
* IN 3600 A 199.9.99.85  
* IN 3600 A 199.9.99.86  
www IN 3600 A 199.9.99.85    
www IN 3600 A 199.9.99.86  

BIND 文件,由 layman 创建,之后:

$ORIGIN mycoolsite.com.  
$TTL 300
@ SOA ns1.cheapreg.com. registry.cheapreg.com. ( ... )  
@ IN 3600 NS ns1.cheapreg.com.  
@ IN 3600 NS ns2.cheapreg.com.  
* IN 3600 A 219.94.116.50  
* IN 3600 A 219.94.116.51  
* IN 3600 A 219.94.116.52    

不同之处在于“pro”文件重复了名称服务器条目,一次是@,一次是*,
而我没有。

有什么原因让我也应该复制名称服务器条目(@ 和 *)?

答案1

根据第一个绑定文件,我相信当您查询 mycoolsite.com 的 A 记录时,以下内容将发送两个 IP:

@ IN 3600 A 199.9.99.85
@ IN 3600 A 199.9.99.86

以下记录是通配符记录:

* IN 3600 A 199.9.99.85
* IN 3600 A 199.9.99.86

因此当您查询couldthispossiblyexist.mycoolsite.comblah1290eu.mycoolsite.com获取 A 记录时,您将收到两个 IP。

答案2

@代表主域本身的记录(即没有任何前缀)

*是一个通配符记录,代表所有可能的子域名主域,但不是域本身。

因此在这种情况下,当查询域本身时,新的区域文件将不会提供任何“A 记录”(即 IP 地址),而只会提供其子域。

[您说是名称服务器条目重复了,但事实并非如此 - 显然是带有 而不是 的行A重复NS了,但现在没有重复]

答案3

主要有两个区别:

  • 第一个例子明确地复制了A子域名的条目,尽管它们本来会被(通配符)子域名条目www覆盖。这根本不会影响子域名的查找结果。*Awww

    它的存在只是为了维护区域文件的人的利益:告诉他们www实际使用的是什么。列出您正在使用的实际子域名通常比仅使用通配符更好,因为它有助于提醒将来可能管理该区域的人实际正在使用哪些子域名。如果您将来想要迁移,这可能会有所帮助。

    至于你是否应该这样做——这不是强制性的。

  • 第二个示例删除A域本身的记录。

    这是一个问题,因为这意味着mycoolsite.com单独的(没有任何子域)不再映射到任何东西。当前区域的顶部(也称为@)是不是通配符子域名条目覆盖 - 通配符子域名条目仅适用于子域名。

    这是大概被认为是一个错误 - 除非由于某种原因你不想mycoolsite.com映射到任何东西,并且仅在指定子域时可用。

相关内容