为什么在 named.conf BIND 配置文件中区域名称没有尾随点?

为什么在 named.conf BIND 配置文件中区域名称没有尾随点?

在 DNS 区域文件中指定 $ORIGIN 指令时,如果您指定的是 FQDN(完全限定域名),则根据定义,它应该以尾随点结尾(例如,$ORIGIN example.com.而不是$ORIGIN example.com)。这是有道理的,因为尾随点明确地表明“com”或其他顶级域是 DNS 根的子域(具有空白名称或“”,并通过点与顶级域分隔)。

但是在 BIND 配置文件(现代版本中称为 named.conf)中,区域名称的标记没有尾随点,如下所示:

zone "example.com" IN {
    type master;
    file "master.example.com";
}

值得注意的是,如果区域文件中未指定 $ORIGIN 指令,则 BIND 会隐式假定 $ORIGIN 为在 named.conf 文件中指定的区域名称。根据我的观察,BIND 似乎在从区域名称中假定 $ORIGIN 时将尾随的点添加到 $ORIGIN。

我的问题是,为什么您指定区域名称时不带尾随点?为什么上面的区域名称不指定为zone "example.com."?“example.com”在技术上不是区域名称的模糊标识符吗?

答案1

这其实并没有什么歧义。定义区域时,引号之间的字符串区域。如果它完全按照您提供的字符串来处理,那么尾随的点实际上并不是必需的。

尾部点实际上只在区域文件内有用。通过自动添加$ORIGIN到文件中的任何条目,它可以让您免于不断反复输入区域名称。如果您确实需要使用 FQDN,例如指向外部域的 CNAME,则只需添加点即可。

相关内容