1.1.1.1 は、キャッシュに回答がない場合、代わりに権威ネームサーバーへ問い合わせます。権威ネームサーバーは、ドメインの実際のレコードを持つ DNS サーバーです。このページでは、1.1.1.1 がどのネームサーバーに問い合わせるか、ネームサーバーに到達できない場合の動作、最終的な応答の決まり方を説明します。
foo.bar.example.com のような多階層のドメイン名を解決するとき、1.1.1.1 はチェーン上のすべてのサーバーに完全な名前を見せません。各サーバーが必要とする最小限の情報だけを送ります。たとえば、.com TLD サーバーへ問い合わせるときは、example.com を探す必要があることだけを伝えます。サブドメイン部分(foo.bar)は含めません。これにより、中間サーバーへ露出する情報量を抑え、プライバシーの漏洩を減らします。
1.1.1.1 は、参照のたびにリモートのルートサーバーへ問い合わせるのではなく、ローカルに保持したルートゾーンファイルのコピー ↗ を使います。ルートゾーンファイルには、すべてのトップレベルドメイン(TLD)サーバーのアドレスが含まれます。ローカルに置くことで、ルートサーバーへのネットワーク往復を避けられます。レイテンシが下がり、プライバシーが向上し、グローバルな DNS ルートサーバーシステムへの負荷も減ります。
ほとんどのドメインは、冗長化のために複数の権威ネームサーバーを持ちます。1.1.1.1 は問い合わせが必要になると、実測した性能に基づいて選びます。リゾルバーは各ネームサーバーの指標を追跡します。往復時間(クエリがサーバーへ行き、戻るまでの時間)や応答品質などです。そのうえで、リクエストを処理しているデータセンターから見て、これまで最も速く、最も安定していたネームサーバーを選びます。
選んだネームサーバーが時間内に応答しない、またはエラーを返すと、1.1.1.1 は同じゾーンの別のネームサーバーへ再試行します。詳細は 再試行の動作 を参照してください。
性能測定を最新に保つため、一部のクエリは別のネームサーバーにも送られます。以前は遅かったサーバーでも、性能が改善していれば再評価できます。この選択を支えるシステムの背景は、BigPineapple アーキテクチャのブログ記事 ↗ を参照してください。
ネームサーバーが時間内に応答しない、または一時的なエラーを返すと、1.1.1.1 は同じゾーンの別の権威ネームサーバーへクエリを再試行します。応答しないサーバーは優先度を下げ、以降のクエリはより健全な候補を優先します。1.1.1.1 は優先度を下げたサーバーを定期的に再確認し、回復を検知します。
複数のクライアントが同時に同じドメインを要求した場合、1.1.1.1 は上流クエリを重複排除し、進行中の 1 件のリクエストで待機中の全クライアントに応答します。再試行のタイミングと順位付けのロジックは継続的に調整され、変わることがあります。
あるクエリに対して、1.1.1.1 がクライアントへ返す回答は 1 つだけです。権威ネームサーバーの回答が食い違う場合、1.1.1.1 がどの応答を選ぶかは、受け取った応答の種類によって決まります。
関連する DNS 応答コードは次のとおりです。
NOERROR— クエリは成功しました。応答には要求したレコードが含まれるか、名前は存在するが要求したタイプのレコードがないこと(NODATAと呼ばれることもあります)を示します。NXDOMAIN— ドメイン名が存在しません。SERVFAIL— ネームサーバー内部でエラーが発生し、回答できませんでした。REFUSED— ネームサーバーがクエリへの回答を拒否しました。
ネームサーバー間の食い違いに対する 1.1.1.1 の扱い:
NOERRORとNXDOMAIN: どちらも有効な権威回答です。1.1.1.1 は先に受け取った応答を返し、残りのネームサーバーへ比較のための問い合わせはしません。同じゾーンの権威ネームサーバーは一貫していることが期待されます。同じ名前に対して一方がNXDOMAIN、もう一方がNOERRORを返す場合、権威側の設定ミスを示します。- タイムアウトと有効な応答: タイムアウトは回答ではありません。1.1.1.1 は別のネームサーバーへ再試行し、最初に受け取った有効な応答を返します。
SERVFAILまたはREFUSEDと有効な応答: 一時的な失敗は上流エラーとして扱い、権威回答とはみなしません。1.1.1.1 は別のネームサーバーへ再試行し、最初の有効な応答を返します。すべてのネームサーバーがエラーを返した場合のみ、クライアントへ失敗を返します。通常はSERVFAILです。ネームサーバーが一貫してREFUSEDを返した場合はREFUSEDです。