查询路由

哪个插件将处理查询?

在以下 Corefile 中,进行测验

. {
  proxy . 8.8.8.8:53
  file db.example.com
}

www.google.com 的查询将由代理还是文件插件处理?在下方给出答案。

此 Corefile 实际上说了什么?它指定我们应该为此节创建对根 (.) 的查询和其下面的所有内容(因此针对所有域名)。

接下来,所有查询都应该转发到 8.8.8.8:53。

由于文件插件指定应该从 db.example.com 文件中回答哪些区域,因此应用顶层区域,该区域是根 (.)

因此,我们遇到一种情况,即两个插件都将被调用,以获取相同名称(对于调用其他链接插件的插件,这种情况可能是完全有效的)。

代理不会调用文件,因为插件存在之后,查询将得到解答并完成 - 反之亦然。

要了解此处发生的情况,我们必须查看 插件排序

...
dnssec:dnssec
file:file
etcd:etcd
proxy:proxy
...

我们会看到文件排在首位,而代理排在稍后。这意味着在上述示例中,所有查询都路由到文件插件。它将很乐意使用 SERVFAIL 回答这些问题,因为它可能无法在文件中找到 www.google.com,文件主要包含 *.example.com 中的名称。

为了解决此问题,我们应该分别创建节或为文件插件指定原始数据

. {
  proxy . 8.8.8.8:53
  file db.example.com example.com
}

抢先提出功能请求:是的,如果 CoreDNS 能够检测并发出此类警告(它现在无法做到),那就太棒了。

Miek Gieben
发布:,使用 271 个单词标记为 CorefileDocumentationQueryRouting