描述
使用 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 外掛程式,則將使用最後一個指定的外掛程式。
-
區域 應簽署的區域。如果為空,則使用配置區塊中的區域。
-
key file
表示應從磁碟讀取 金鑰 檔案。當指定多個金鑰時,RRset 將使用所有金鑰進行簽署。可以使用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}
- 快取中的總元素,類型為「signature」。coredns_dnssec_cache_hits_total{server}
- 快取命中的計數器。coredns_dnssec_cache_misses_total{server}
- 快取未命中的計數器。
標籤 server
指示處理請求的伺服器,請參閱 metrics 外掛程式以了解詳細資訊。
範例
使用金鑰 “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
}
}