说明
使用 dnssec,任何尚未(或无法)进行 DNSSEC 的回复都会被即时签名。已实现带有 NSEC 黑谎言的经过验证的拒绝存在。推荐使用 ECDSA 作为算法,因为这会导致签名更小(与 RSA 相比)。不支持 NSEC3。
此插件每个服务器块只能使用一次。
语法
dnssec [ZONES... ] {
key file KEY...
cache_capacity CAPACITY
}
签名行为取决于指定的密钥。如果指定了多个密钥,其中至少有一个密钥设置了 SEP 位,且至少有一个密钥未设置 SEP 位,则签名将在分隔的 ZSK/KSK 模式下进行。DNSKEY 记录将使用已设置 SEP 位的所有密钥签名。所有其他记录将使用尚未设置 SEP 位的所有密钥签名。
在任何其他情况下,每个指定的密钥都将被视为 CSK(通用签名密钥),放弃 ZSK/KSK 分割。所有签名操作都在线完成。已实现带有 NSEC 黑谎言的经过验证的拒绝存在。推荐使用 ECDSA 作为算法,因为这会导致签名更小(与 RSA 相比)。不支持 NSEC3。
由于 dnssec 插件无法看到它签名的 RRSets 的原始 TTL,因此它将始终使用 3600 秒作为值。
如果在同一区域内指定了多个 dnssec 插件,则将使用最后指定的插件。
-
ZONES 应签名的区域。如果为空,则使用配置块中的区域。
-
key file
指示应从磁盘读取 KEY 文件。当指定多个密钥时,RRsets 将使用所有密钥签名。可以使用dnssec-keygen
生成密钥:dnssec-keygen -a ECDSAP256SHA256 <zonename>
。为区域 A 创建的密钥可以安全地用于区域 B。可以采用以下格式之一指定密钥文件的名称- 已生成密钥的基名
Kexample.org+013+45330
- 已生成的公钥
Kexample.org+013+45330.key
- 已生成的私钥
Kexample.org+013+45330.private
- 已生成密钥的基名
-
cache_capacity
指示缓存的容量。dnssec 插件使用缓存来存储 RRSIG。容量的默认值为 10000。
指标
如果已启用监视(通过 prometheus 插件),则会导出以下指标
coredns_dnssec_cache_entries{server, type}
- 缓存中的总元素,类型为“签名”。coredns_dnssec_cache_hits_total{server}
- 缓存命中的计数器。coredns_dnssec_cache_misses_total{server}
- 缓存未命中的计数器。
标签 server
指示处理该请求的服务器,有关详细信息,请参见 指标 插件。
示例
使用密钥 “Kexample.org.+013+45330.key”为 example.org
签署回复。
example.org {
dnssec {
key file Kexample.org.+013+45330
}
whoami
}
使用密钥“Kcluster.local+013+45129.key”对 kubernetes 区域的响应进行签名。
cluster.local {
kubernetes
dnssec {
key file Kcluster.local+013+45129
}
}