HTTP プロキシは DNS-over-HTTPS サービスへのリクエストを運べます。Google Public DNS の JSON インターフェースでは、明示的なクエリは次のようになります。

curl --fail --proxy http://proxy.example.net:8080 --noproxy "" \
  --get --data-urlencode "name=example.net" \
  --data-urlencode "type=A" \
  https://dns.google/resolve

プロキシは HTTPS 接続を dns.google まで運びます。HTTP プロキシ一覧 は、この公開クエリの候補を選ぶ場所のひとつで、公開プロキシ経由のアクセスが許可されている場合に使えます。Google のリゾルバーが name パラメーターに応答します。これはプロキシに自身の DNS キャッシュを返すよう求めるものでも、他のアプリケーションが使う DNS 設定を変更するものでもありません。

HTTP ステータスだけでなく、JSON の Status と返されたレコードを読み取ってください。正常に配信された HTTP 応答が DNS の失敗を表すこともあります。type を必要なレコード(AAAA や MX など)に変更してください。1 回の A クエリはすべてのレコード種別の完全な一覧ではありません。

このエンドポイントの JSON 形式は文書化された Google API です。標準的な DoH のワイヤー形式クライアントは代わりに DNS メッセージと application/dns-message を使います。通常の nslookup 呼び出しは HTTPS_PROXY が設定されているというだけでは、どちらの HTTP インターフェースも得られません。

関連記事