DNS over HTTPSとは
DNS over HTTPSは、DNS問い合わせをHTTPS通信内で暗号化して送る方式です。略称はDoH(DNS over HTTPS/ディーエヌエス・オーバー・エイチティーティーピーエス、ディーオーエイチ)です。
クライアントは設定されたDoHサーバーのHTTPS URIへ、DNSのワイヤー形式メッセージをHTTP要求として送ります。一つのDNS問い合わせと応答の組が、一つのHTTP交換に対応します。
暗号化されるのはクライアントからDoHリゾルバーまでです。リゾルバーは問い合わせ名を処理し、その先の権威DNSとの通信が同じように暗号化される保証はありません。

プロトコルの層を順に包む
名前、種類、クラス、応答、応答コードなどDNS本来の意味を持つ。
GETまたはPOSTとMIMEタイプapplication/dns-messageを使い、HTTP状態も処理する。
証明書名を検証し、途中から問い合わせ・応答を読まれたり改ざんされたりしにくくする。
長時間維持するHTTPS接続でハンドシェイクを減らし、複数ストリームを並行処理できる。
HTTPキャッシュ有効期間はDNS応答内の最小TTLを越えないようにする。
ソース、時刻、名前を相関し得るため、プライバシー方針とログ方針を確認する。
GETとPOSTで同じDNSメッセージを運べる
POSTはDNSメッセージを要求本文へ入れます。GETはDNSメッセージをbase64url(ベース64ユーアールエル)でURIのクエリへ符号化します。DoHサーバーはRFC 8484上、両方を処理します。
HTTPが成功してもDNS応答はNXDOMAINやSERVFAILの場合があります。HTTP状態とDNS RCODEを別に読みます。
OS全体とブラウザー内でリゾルバーが違う場合がある
OSのスタブリゾルバーがDoHを使う構成、ブラウザーが独自にDoHサーバーを選ぶ構成、ネットワーク指定リゾルバーをアップグレードする構成があります。同じ端末でもアプリケーションごとに回答・フィルター・ログが違い得ます。
企業内だけで使う名前、ペアレンタル制御、キャプティブポータル、スプリットホライズンDNSと競合するため、代替処理の条件と管理方針を確認します。
ブートストラップと失敗時の代替処理を決める
DoHサーバーのホスト名を最初に解決するには、事前にアドレスを設定する、従来DNSでブートストラップするなどの方法が必要です。証明書失効確認が同じDNSに依存すると循環する場合もあります。
接続失敗時に平文DNSへ自動で戻すなら可用性は上がりますが、利用者が期待したプライバシーは失われます。厳格・自動モードを区別します。
DoHはDNSSEC・VPN・匿名化の代わりではない
DNSSECは、署名済みDNSデータの発信元の真正性と完全性を検証する仕組みで、問い合わせを暗号化して隠す機能とは別です。DoHリゾルバーが誤った未署名応答を返すことをTLSだけでは防げません。
DoHサーバーはクライアントIPと問い合わせを見ます。VPN外へDoH接続が出ればVPN事業者から問い合わせ内容は隠せても、DoH事業者へ観測点が移ります。
DoHを評価するときは暗号化の有無だけでなく、どのアプリケーションがどのリゾルバーを選び、障害時にどこへ戻り、リゾルバーが何を記録するかを確認します。
DoHのHTTP mappingとprivacy特性の確認資料:RFC 8484「DNS Queries over HTTPS」