Corefile 说明

Corefile 如何工作?

Corefile 是 CoreDNS 的配置文件。它定义了

  • 哪些服务器在哪些端口上监听以及使用哪种协议。
  • 每个服务器对哪个区域具有权威性。
  • 在服务器中加载哪些插件。

为了进一步说明,我们来看一下此 “Corefile”

ZONE:[PORT] {
    [PLUGIN]...
}
  • ZONE 定义此服务器的区域。可选的 PORT 的默认值为 53 或 -dns.port 标志的值。
  • PLUGIN 定义我们想要加载的 插件。这也是可选的,但是没有插件的服务器会对所有查询返回 SERVFAIL。每个插件可以具有许多具有 参数属性

即在下一个示例中

ZONE 为根区域 .PLUGINchaoschaos 插件 没有任何属性,但它确实需要一个 参数CoreDNS-001。此文本在 CH 类查询中返回:dig CH txt version.bind @localhost

. {
   chaos CoreDNS-001
}

如果 CoreDNS 找不到要加载的 Corefile,则它将加载以下内置文件,加载 whoami 插件

. {
    whoami
}

服务器

这是最小的 Corefile

. { }

它定义了一个在端口 53 上监听的服务器,并使其对根区域根区域下的所有内容具有权威性。让我们定义另一个对 .(根区域)具有权威性并加载它的服务器

. { }
. { }

这将使 CoreDNS 退出并显示错误

2017/07/23 20:39:10 cannot serve dns://.:53 - zone already defined for dns://.:53

原因是什么?因为我们已经为该区域在同一端口定义了一个服务器。如果我们更改第二个服务器上的端口号,从而创建另一个服务器,则可以进行

.    { }
.:54 { }

在定义新区域时,你可以创建一个新服务器或将其添加到现有服务器。此处我们定义一个一个处理两个区域的服务器;它可能会链接不同的插件

example.org {
    whoami
}
org {
    whoami
}

请注意,在查询进入时,最具体的区域会获胜,因此任何 example.org 查询都将经过上面为 example.org 定义的服务器。.org 的查询将进入另一个服务器。

反向区域

通常,当你想提供反向区域时,你需要说点什么

0.0.10.in-addr.arpa {
    whoami
}

为简化此操作,CoreDNS 只允许你说

10.0.0.0/24 {
    whoami
}

这还适用于 CIDR(1.0.0 版本)区域

10.0.0.0/27 {
    whoami
}

非默认协议

在 TLS 和 gRPC 上监听?使用

tls://example.org grpc://example.org {
    # ...
}

指定端口的方式相同,此处为在 gRPC 数据包上监听时的情况。

grpc://example.org:1443 {
    # ...
}

另请参阅

Corefile 的解析方式类似于 Caddyfile。我们支持该页面描述的所有内容,例如使用 环境变量

在 Corefile 中有用的其他有趣的插件有:import startupshutdown

Miek Gieben
发布时间:,标签为 Corefile文档,共使用了 475 个单词。