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

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

BIND文件,由专业托pipe公司创build,之前:

$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创build,之后:

 $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”文件重复了名称服务器条目,一次为@,一次为*,
而我没有。

任何理由我也应该重复名称服务器条目(@和*)?

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

 @ IN 3600 A 199.9.99.85 @ IN 3600 A 199.9.99.86 

以下logging是通配符logging:

 * IN 3600 A 199.9.99.85 * IN 3600 A 199.9.99.86 

因此,当您查询可能存在的网站couldthispossiblyexist.mycoolsite.comblah1290eu.mycoolsite.com作为Alogging时,您将收到两个IP。

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

*是通配符logging,表示主域的所有可能的域,但不包括域本身。

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

[你说这是名称服务器条目是重复的,但事实并非如此 – 这显然是与A而不是NS的行重复,但现在不是]

有两个主要区别:

  • 第一个示例显式复制子域wwwA条目,即使它们将被* (通配符)子域A条目覆盖。 这应该不会影响查询www子域的结果。

    这只是为了维护区域文件的人的利益:通知他们实际上使用了www 。 通常最好列出您使用的实际子域名,而不是仅使用通配符,因为它有助于自我提醒未来谁可能pipe理该区域,哪些子域实际上正在使用。 如果你想迁移一天,这可能会有所帮助。

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

  • 第二个示例删除域本身的Alogging。

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

    可能被认为是一个错误 – 除非出于某种原因,您希望mycoolsite.com不要映射到任何内容,并且仅在指定子域时才可用。