TLS

tls 允许你配置 TLS、gRPC、DoH 服务器的服务器证书。

说明

CoreDNS 支持使用 TLS 加密的查询(通过传输层安全性 DNS,RFC 7858)或使用 gRPC 的查询(https://grpc.org.cn/, 不是 IETF 标准)。通常 DNS 流量根本不加密(DNSSEC 只对资源记录签名)。

tls“插件”允许你配置 DNS over TLS 和 DNS over gRPC 所需的加密密钥。如果省略了 tls 插件,则不会进行加密。

gRPC protobuffer 在 pb/dns.proto 中定义。它将 proto 定义为 DNS 消息的线路数据的一个简单包装器。

语法

tls CERT KEY [CA]

参数 CA 是可选的。如果未设置,则可以使用系统 CA 来验证客户端证书。

tls CERT KEY [CA] {
    client_auth nocert|request|require|verify_if_given|require_and_verify
}

如果指定了 client_auth 选项,则它控制客户端认证策略。选项值对应于 Go tls 包的ClientAuthType 值: 分别为 NoClientCert、RequestClientCert、RequireAnyClientCert、VerifyClientCertIfGiven 和 RequireAndVerifyClientCert。默认值为“nocert”。请注意,除非将这个选项设置为 verify_if_given 或 require_and_verify,否则指定参数 CA 没有意义。

示例

启动一个 DNS-over-TLS 服务器,该服务器在端口 5553 上获取传入的 DNS-over-TLS 查询,并使用在 /etc/resolv.conf 中定义的名称服务器来解析查询。此代理路径使用纯老的 DNS。

tls://.:5553 {
	tls cert.pem key.pem ca.pem
	forward . /etc/resolv.conf
}

启动一个 DNS-over-gRPC 服务器,该服务器与前面的示例类似,但对传入的查询使用 DNS-over-gRPC。

grpc://. {
	tls cert.pem key.pem ca.pem
	forward . /etc/resolv.conf
}

启动一个 DoH 服务器,该服务器在端口 443 上,与前面的示例类似,但对传入的查询使用 DoH。

https://. {
	tls cert.pem key.pem ca.pem
	forward . /etc/resolv.conf
}

只有 Knot DNS 的 kdig 支持 DNS-over-TLS 查询,没有命令行客户端支持 gRPC,这使得调试这些传输比它应该的更困难。

另请参见

RFC 7858 和 https://grpc.org.cn