Corefile
是 CoreDNS 的配置文件。它定义了
- 哪些服务器在哪些端口上监听以及使用哪种协议。
- 每个服务器对哪个区域具有权威性。
- 在服务器中加载哪些插件。
为了进一步说明,我们来看一下此 “Corefile”
ZONE:[PORT] {
[PLUGIN]...
}
- ZONE 定义此服务器的区域。可选的 PORT 的默认值为 53 或
-dns.port
标志的值。 - PLUGIN 定义我们想要加载的 插件。这也是可选的,但是没有插件的服务器会对所有查询返回 SERVFAIL。每个插件可以具有许多具有 参数 的 属性
即在下一个示例中
ZONE 为根区域 .
,PLUGIN 为 chaos
。chaos 插件 没有任何属性,但它确实需要一个 参数: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 {
# ...
}