tls

原始碼

tls 允許您為 TLS、gRPC、DoH 伺服器設定伺服器憑證。

說明

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