DNS over TLS

はじめに

従来の DNS クエリとレスポンスは、暗号化されずに UDP または TCP 経由で送信されます。これは、傍受やなりすましに対して脆弱です(DNS ベースのインターネット フィルタリングを含む)。 再帰リゾルバからクライアントへのレスポンスは、望ましくない変更や悪意のある変更に対して最も脆弱であり、多くの場合、再帰リゾルバと権威ネームサーバー間の通信には追加の保護機能が組み込まれています。

これらの問題に対処するために、Google Public DNS は、RFC 7858 で指定されている TLS 暗号化 TCP 接続で DNS 解決を提供しています。DNS-over-TLS は、クライアントとリゾルバ間のプライバシーとセキュリティを向上させます。これは DNSSEC を補完し、DNSSEC で検証された結果をクライアントへの送信中に変更やなりすましから保護します。

仕組み

クライアント システムは、厳格または日和見的プライバシーの 2 つのプロファイルのいずれかで DNS-over-TLS を使用できます。厳格なプライバシー プロファイルでは、ユーザーは DNS-over-TLS サービス用に DNS サーバー名(RFC 8310 の認証ドメイン名)を構成します。クライアントはポート 853 で DNS サーバーへの安全な TLS 接続を確立できる必要があります。安全な接続を確立できないとハードエラーとなり、クライアントの DNS サービスが機能しません。

日和見プライバシー プロファイルでは、DNS サーバーの IP アドレスは、ユーザーが直接構成することも、(DHCP などの手段を使用して)ローカル ネットワークから取得することもできます。クライアント リゾルバは、ポート 853 で、指定された DNS サーバーへの安全な接続を確立しようとします。安全な接続が確立されると、パス上のパッシブ オブザーバーからのユーザーのクエリのプライバシーが確保されます。クライアントはサーバーの真正性を検証しないため、アクティブな攻撃者から保護されません。クライアントがポート 853 で安全な接続を確立できない場合は、セキュリティやプライバシーを使用せずに、UDP または TCP を介して標準の DNS ポート 53 上の DNS サーバーと通信します。日和見プライバシーは、厳格なプライバシー プロファイルの普及を目指し、プライバシー強化の段階的な導入をサポートすることを目的としています。

厳格なプライバシー プロファイルを使用する場合、スタブリゾルバは次の手順で DNS over TLS 接続を確立します。

  1. スタブリゾルバは、DNS-over-TLS リゾルバ名 dns.google で構成されます。
  2. スタブリゾルバは、ローカル DNS リゾルバを使用して dns.google の IP アドレスを取得します。
  3. スタリゾルバは、これらの IP アドレスのポート 853 への TCP 接続を行います。
  4. スタブリゾルバは、Google Public DNS リゾルバとの TLS handshake を開始します。
  5. Google Public DNS サーバーは、TLS 証明書と、信頼できるルート証明書までの TLS 証明書の完全なチェーンを返します。
  6. スタブリゾルバは、提示された証明書に基づいてサーバーの ID を検証します。
    • ID を検証できない場合、DNS の名前解決に失敗し、スタブリゾルバからエラーが返されます。
  7. TLS 接続が確立されると、スタリゾルバは Google Public DNS サーバーとの間に安全な通信パスを確立します。
  8. これで、スタリゾルバが DNS クエリを送信し、接続を介してレスポンスを受信できるようになりました。

日和見プライバシー プロファイルを使用する場合、クライアントはまずサーバーへの安全な TLS 接続の作成を試みます。これは上記の方法と同様に行われますが、重要な違いが 1 つあります。それは、クライアントによって証明書の検証が行われないことです。これは、サーバーの ID を信頼できないことを意味します。ポート 853 でサーバーへの TLS 接続を確立できない場合、スタリゾルバはフォールバックして、ポート 53 で DNS サーバーと通信します。

プライバシー

DNS-over-TLS サービスには Google のプライバシー ポリシーが適用されます。

2019 年 6 月 27 日に、DNS-over-TLS サービスの EDNS クライアント サブネット(ECS)を再度有効化しました。ECS はサービス開始時に無効になっていました。

スタンダード サポート

Google Public DNS は、RFC 7858 に基づいて DNS-over-TLS を実装しています。さらに、高品質で低レイテンシの DNS サービスを提供するための次の推奨事項もサポートしています。

使ってみる

Android 9(Pie)以降を搭載したデバイスで構成する方法については、instructionsをご覧ください。

DNS-over-TLS は、IPv6 専用の Google Public DNS64 サービスでもサポートされています。複数のネットワークに接続するモバイル デバイスに DNS64 を構成するのはおすすめしません。DNS64 は IPv6 が利用可能な場合にのみ機能するためです。