用語辞典・エラー・運用

名前解決失敗

名前解決失敗とは

名前解決失敗は、端末やアプリが、入力された名前を接続先のIPアドレスなどへ変換できない状態です。公開Webサイトやメールのドメイン名では、DNSエラー(Domain Name System エラー/ドメイン・ネーム・システム・エラー)が主な原因になります。

名前解決にはDNS以外にも、OSのhostsファイルやローカルネットワーク向けの名前解決が使われる場合があります。そのため「名前解決失敗」と「DNSエラー」は常に同義ではありません。このページでは、インターネット上の公開ドメイン名で中心となるDNSの失敗を扱います。

「DNSエラー」は一種類の応答ではありません。名前不存在、記録不存在、サーバー失敗、タイムアウト、方針拒否、DNSSEC検証失敗など、結果コードと問い合わせ種類で原因が変わります。

ドメイン名が存在することと、その名前にA・AAAA・MXなど目的の記録があることは別です。正確な名前・分類・種類を記録します。

再帰リゾルバーからDNS階層をたどった結果を分類する名前不在、種類不在、サーバー失敗、タイムアウト、拒否、署名検証失敗を分ける
端末から再帰リゾルバー、ルート、TLD、権威サーバーDNSへ問い合わせ、空の名前、記録なし、サーバー故障、時間切れ、方針拒否、署名連鎖切れへ分岐するピクトグラム図解
図1リゾルバーは「名前やレコードが存在しない」という否定応答もTTLの間キャッシュします。修正後すぐに全利用者へ反映されるとは限りません。

公開ドメイン名で起きる主なDNSの結果

NXDOMAINそのドメイン名が存在しない

綴り、委任、ゾーン生成を確認します。

NODATA名前はあるが指定種類の回答がない

AがあってもAAAAはない、という状態があり得ます。

SERVFAILサーバーが答えを完成できない

権威サーバー失敗、不完全な委任、DNSSEC検証失敗などを調べます。

タイムアウト応答を期限内に受け取れない

UDP・TCPの到達性、パケットの大きさ、ファイアウォール、サーバー負荷を確認します。

REFUSED運用方針により問い合わせを拒否

再帰問い合わせを許可する接続元、ACL、応答を出し分ける範囲、要求数の上限を確認します。

DNSSEC検証失敗署名の連鎖を検証できない

DS・DNSKEY・署名・時刻を追います。

切り分けの順序

  1. 正確な問い合わせを保存するFQDN、種類、リゾルバー、時刻、応答コード・状態フラグを記録します。
  2. 別リゾルバーと比較するローカルキャッシュ・フィルターの問題か、権威サーバー側の共通問題かを分けます。
  3. 委任をルートからたどるNS、グルーレコード、権威サーバー応答を段階確認します。
  4. DNSSECを検証する検証有無で結果が違う場合、連鎖と署名時刻を確認します。
  5. 否定応答キャッシュを考慮するNXDOMAIN・NODATAのTTLとリゾルバーキャッシュを確認します。

ブラウザー表示だけで断定しない

ブラウザーは複数のDNS結果や安全DNS、ローカルリゾルバー、OSキャッシュをまとめた文言を表示します。nslookupdigで対象リゾルバーへ直接問い合わせし、AとAAAA、DNSSEC、応答区分を確認します。

IPアドレスを直接入力して接続できても、Hostヘッダー・TLS証明書・仮想ホストの扱いが通常と異なるため、Webページを開けるかどうかの完全な代替試験にはなりません。DNSの段階だけを切り分ける補助試験として使います。

DNSエラーは名前・レコード種類・リゾルバー・権威サーバー・検証・通信経路のどこで回答を得られなかったかに分解します。応答コードと否定応答キャッシュを残さず「DNSが壊れた」と一括りにしません。

否定応答とキャッシュ:RFC 2308/詳しいDNSエラー情報:RFC 8914「Extended DNS Errors」

関連用語