首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unbound.conf服务器选项“私有域”-域名是否以点结尾?

unbound.conf服务器选项“私有域”-域名是否以点结尾?
EN

Server Fault用户
提问于 2018-03-02 23:19:35
回答 1查看 5.7K关注 0票数 2

unbound.conf用于配置解束缚,这是一个缓存DNS解析器。版本1.6.8的文档说:

代码语言:javascript
复制
Server Options
    private-domain: <domain name>
        Allow this domain, and all its subdomains to contain private
        addresses. Give multiple times to allow multiple domain names
        to contain private addresses. Default is none.

我们使用Debian拉伸运行未绑定版本1.6.0 (手册和引用的文档在这里没有什么不同)。

我们已经测试了以下三个变体

  • 编辑/etc/unbound/unbound.conf
  • 检查unbound-checkconf
  • 重新启动systemctl restart unbound.service
  • 监视未绑定日志文件。

备选案文1(以圆点结尾):

代码语言:javascript
复制
private-domain: domain.example.

备选案文2(不以圆点结尾):

代码语言:javascript
复制
private-domain: domain.example

备选案文3(按给定顺序排列):

代码语言:javascript
复制
private-domain: "domain.example. domain.example"

对于所有三个变体,unbound-checkconf返回:

代码语言:javascript
复制
unbound-checkconf: no errors in /etc/unbound/unbound.conf

在变式3中,我们在日志文件中找到:

代码语言:javascript
复制
debug: ignoring duplicate private-domain: domain.example.

这是有意义的,因为同一个域名的一个条目必须是足够的,并且它似乎验证了对于两种编写域名的方法(带/不带点),未绑定具有相同的处理方式。

这两种方法都有效,但是在未绑定的情况下定义私有域名的正确语法是什么?域名是否应该以圆点结尾?结尾的点是有用的还是没有意义的?一个不必要的或缺失的点会有什么影响?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-11-10 16:35:36

这个问题很古老,但对我来说仍然是搜索中的第一个条目,所以我觉得值得一试。

底线:在这种情况下,以及在其他大多数情况下,domain.example (没有尾随.)和domain.example. (使用训练.)之间并没有实际的区别。因此,两者都是正确的。

现在长话短说。这个答案--也是从2018年开始这里唯一的其他评论--是从规范的内容出发的,2018年对OP的评论也是如此。虽然RFC与Unbound使用域名的方式之间可能存在语义上的差异,但这将偏离规范,很可能被认为是一个bug。

RFC 10343.1节定义了域名的核心语法:

当用户需要键入域名时,每个标签的长度被省略,标签由点(".")分隔。由于完整的域名以根标签结尾,这将导致以点结尾的打印形式。我们使用这个属性来区分:

  • 表示完整域名的字符串(通常称为“绝对”)。例如,“poneria.ISI.EDU”
  • 表示域名的起始标签的字符串,它不完整,应该由本地软件使用本地域的知识(通常称为“相对”)来完成。例如,ISI.EDU域中使用的"poneria“。

相对名称要么相对于已知的来源,要么与用作搜索列表的域列表相对应。

注意最后一句:除非定义了“用作搜索列表的域列表”,否则没有尾随点的名称将被视为相对于“众所周知的起源”-i.e.,名称层次结构的根。对于公共DNS,DNS根对应于根区;私有名称层次结构很少偏离此约定。

出于实际目的,这意味着没有尾随.的完全限定域名(FQDN)几乎总是相对于名称层次结构的根来考虑,这相当于相同的“绝对”域。因此,domain.example == "domain.example相对于根“== domain.example.

什么时候不同的表述会有影响呢?当您处理的是域名的片段而不是FQDN时。在这种情况下,您应该省略期间,并考虑在FQDN上使用句号。如果运行example.com. (请注意句点;根服务器向您发送*.example.com流量)并希望将east.example.com.设置为子域,则east是子域;east.是顶级域(TLD) .east

再说一遍:规范就是这么说的。检查您正在配置的工具的文档,就像往常一样。规范还有其他方面,特别是DNS压缩,其中引入了一些额外的语义。如果您没有真正解析或生成DNS连接协议中的消息,则可以忽略这些消息。

希望这能完全回答这个问题。我希望这对某人有帮助。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/899757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档