說明
CoreDNS 支援使用 TLS(傳輸層安全協定上的 DNS,RFC 7858)加密或使用 gRPC(https://grpc.dev.org.tw/, 非 IETF 標準)加密的查詢。通常,DNS 流量根本沒有加密(DNSSEC 僅簽署資源記錄)。
tls「外掛程式」允許您設定 DNS over TLS 和 DNS over gRPC 所需的加密金鑰。如果省略 tls 外掛程式,則不會進行任何加密。
gRPC 協定緩衝區定義在 pb/dns.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
中定義的名稱伺服器來解析查詢。此 Proxy 路徑使用傳統的舊 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
}
在連接埠 443 上啟動 DoH 伺服器,該伺服器類似於前一個範例,但對傳入的查詢使用 DoH。
https://. {
tls cert.pem key.pem ca.pem
forward . /etc/resolv.conf
}
只有 Knot DNS 的 kdig
支援 DNS over TLS 查詢,沒有任何命令列用戶端支援 gRPC,這使得偵錯這些傳輸比應該的更困難。
另請參閱
RFC 7858 和 https://grpc.dev.org.tw。