Cloudflare は、次の URL で DNS over HTTPS リゾルバーを提供しています。
https://cloudflare-dns.com/dns-queryCloudflare の DNS over HTTPS (DoH) エンドポイントは、DNS ワイヤフォーマットでは POST と GET を、JSON 形式では GET をサポートします。
POST でリクエストする場合、DNS クエリは HTTP リクエストのメッセージ本文として含め、MIME タイプ (application/dns-message) を Content-Type リクエストヘッダーで送ります。Cloudflare はクライアントが送った HTTP リクエストのメッセージ本文をそのまま使うため、メッセージ本文はエンコードしないでください。
GET でリクエストする場合、DNS クエリは URL にエンコードします。
JSON 形式を使う場合は application/dns-json を、DNS ワイヤフォーマットを使う場合は application/dns-message を設定します。
cURL の例は、DNS ワイヤフォーマット と JSON を参照してください。
DNS クエリは、HTTP リクエスト 1 件に対してちょうど 1 つ対応します。複数のクエリを同時に送るには、1 つの接続で複数のリクエストを多重化できる HTTP/2 または HTTP/3 を使います。
DoH では、HTTP/2 が推奨される最小バージョンです。これは 1.1.1.1 固有の制限ではなく、RFC 8484 ↗ で定められた DoH の動作です。
リクエストの例:
curl --http2 --header "accept: application/dns-json" "https://one.one.one.one/dns-query?name=cloudflare.com" --next --http2 --header "accept: application/dns-json" "https://one.one.one.one/dns-query?name=example.com"この API へのリクエストに認証は不要です。
Cloudflare の DNS over HTTPS リゾルバーは、TLS 1.2 と TLS 1.3 をサポートします。
| HTTP ステータス | 意味 |
|---|---|
400 |
DNS クエリが指定されていないか、小さすぎます。 |
413 |
DNS クエリが、許可される最大 DNS メッセージサイズを超えています。 |
415 |
サポートされていない Content-Type です。 |
504 |
クエリ応答の待ち時間中にリゾルバーがタイムアウトしました。 |