为什么他们在named.conf BINDconfiguration文件中没有跟踪点名?

在DNS区域文件中指定$ ORIGIN指令时,如果您指定的是FQDN(完全限定的域名),那么根据定义,它应以尾部点结尾(例如$ORIGIN example.com.而不是$ORIGIN example.com )。 这是有道理的,因为后面的点明确指出,“com”或其他顶级域名是DNS根目录的子域名(它有一个空白名称或“”,并与顶级域名相隔)。

但是在一个BINDconfiguration文件中(在现代版本中名为named.conf),一个区域名称被标记为没有像这样的尾部点:

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

值得注意的是,如果在区域文件中没有指定$ ORIGIN指令,那么隐式地假定$ ORIGIN(通过BIND)是在named.conf文件中指定的区域名称。 根据我的观察,似乎BIND在从区域名称中假设时将尾部点添加到$ ORIGIN。

我的问题是为什么你指定一个没有尾点的区域名? 为什么不把上面的区域名称指定为zone "example.com." ? 是不是“example.com”区域名称的技术上不明确的标识符?

这并不是很含糊。 定义区域时,引号之间的string区域。 如果它提供的string完全按照原样提供,则不需要尾随点。

只有使用尾点才真正在区域文件中使用。 通过自动将$ORIGIN添加到文件中的任何条目中,可以避免不断地不断input区域名称。 如果您确实需要使用FQDN,例如指向外部域的CNAME,则只需添加点即可。