@(BIND)中的 CNAME

@(BIND)中的 CNAME

我可以将类似这样的内容放入我的 .zone 文件中吗?

@       IN      CNAME   srvr-01.foo.bar.

或者这是无效的?如果无效,我该如何将访问者重定向mydomain.com到服务器srvr-01.foo.bar?(请注意,我没有得到服务器 IP,只有域名,这让我认为它可能会随机更改)

编辑:抱歉,我的错。我将其替换NSCNAME,这才是我真正想写的。

答案1

根据 RFC1912,这是非法的:

RFC1912 2.4:“CNAME 记录不允许与任何其他数据共存。”

但是 RFC1034 仅指出“不应”使用它。对我来说,这意味着它在技术上并不违法(RFC2119)。如果您的 DNS 软件支持它并且您知道自己在做什么,您可以使用它。但是互联网上有一些依赖于“CNAME xor 其他数据”的实现(例如 MS Exchange)。

简短的回答是:不要。

答案2

首先,了解其@含义很重要。

@是对当前原点值的引用。默认情况下,原点是区域的名称,但可以在区域文件中的任何位置使用$ORIGIN指令(例如$ORIGIN foo.example.com.)。

这意味着无法做出任何一般性陈述,@ IN CNAME ...因为其含义完全取决于当前的原始值。

可以说的是,添加CNAME记录的合法性取决于是否存在同名的其他记录。CNAME记录不允许与其他数据共存。

上述情况的直接结果是,CNAME在区域顶点拥有记录永远是不合法的,因为区域顶点总是至少拥有SOANS条记录。

相关内容