说明
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。