Domain IP Lookup

4つの結果と、それぞれ異なる次の対応

NXDOMAIN名前が存在しない。再試行は無意味
TIMEOUT時間内に応答なし。一時的なことが多い
SERVFAILサーバーが処理できなかった。一時的な場合もある
REFUSEDポリシーにより拒否。障害や一時的な問題であることは稀
トラブルシューティング

DNSタイムアウトとSERVFAILの違い

読了時間:3分

DNSの名前解決の失敗は、すべて同じ形で起きるわけではありません。NXDOMAIN以外でよくある失敗の代表がタイムアウトとSERVFAILで、外から見るとどちらも使える答えが返ってこない点で似ていますが、根本の原因は大きく異なります。

タイムアウト:時間内に答えが届かなかった

タイムアウトは、その名のとおりです。クエリを送ったものの、設定した待機時間内に応答が返ってこなかったことを意味します。原因としては、権威サーバーの過負荷、ネットワーク経路のどこかでのパケットロス、ファイアウォールがDNSトラフィックを拒否せずに黙って破棄していること、などが考えられます。問い合わせる側から見ると、タイムアウトと、そもそも存在しないサーバーは区別がつきません。どちらも、ただ無反応なだけだからです。

SERVFAIL:答えは届いたが、その内容は「処理できない」

SERVFAILは無反応ではなく、れっきとした応答です。応答したサーバーは、クエリの処理中に問題が発生したことを明示的に伝えています。たとえば、ゾーンの設定ミス、DNSSEC検証の失敗、リゾルバー側の内部エラーなどです。SERVFAILを受け取れば、サーバー側で具体的な何かが起きたことが分かります。一方、タイムアウトでは、問題がどこにあるのかがほとんど分かりません。

コード何が起きたか再試行する価値
タイムアウト待機時間内に応答がまったく届かなかったあり。一時的なことが多い
SERVFAILサーバーは応答したが、クエリを処理できなかった場合による。バックオフを挟んで2〜3回試す価値あり
REFUSEDサーバーは理解したが、通常はポリシーにより回答を拒否したほぼなし。継続的なアクセス制限であることが多い
NXDOMAINその名前は存在しない。それがすべてなし。恒久的な答えなので再試行は不要

どちらも一時的な問題である可能性があるため、実務での対処はどちらも同じです。指数バックオフを使って少ない回数だけ再試行し、再試行を使い切ってから初めて本当の失敗として報告します。このツールが両方のコードを、確定的なNXDOMAINとは違う扱いにしているのも、まさにこのためです。

REFUSEDは、多くの場合ポリシーであり障害ではない

REFUSEDは、無反応ではなく「サーバーが断った」という点でSERVFAILと一緒に扱われがちですが、背景にある理由は通常まったく異なります。ネームサーバーがREFUSEDを返すのは、特定のゾーンにのみ応答するよう設定されていて、その範囲外のことを聞かれた場合、アクセス制御リストが問い合わせ元のIPをブロックしている場合、リゾルバーが自分のネットワーク外からのクエリを拒否するよう明示的に設定されている場合などです。たとえば、再帰リゾルバーがインターネット上の見知らぬ相手に再帰的な応答を提供しないのは、正しく意図された動作であり、バグではありません。自分で管理していないサーバーからREFUSEDが返ってきても、再試行やバックオフで解決することはまずありません。そもそも問い合わせ先のサーバーが正しいかどうかを確認すべきです。

よくあるSERVFAILの具体的な原因:壊れたDNSSEC

SERVFAILのなかでも特に厄介なのが、DNSSECを有効にしているのに設定が誤っているドメインで起きるケースです。署名の期限切れ、ネームサーバー側でキーをローテーションしたのにレジストラ側を更新していない、ドメインからルートまでの信頼の連鎖がどこかで途切れている、といった状況が当てはまります。DNSSECを守る検証リゾルバーは、暗号学的に検証できない答えを返すことを拒み、壊れた署名を黙って無視する代わりにSERVFAILを返します。厄介なのは、DNSSECをまったく検証しないリゾルバーからは、そのドメインが問題なく動くことが多い点です。そのため、「自分の環境では動く」と誤診しやすい一方で、実際には相当な割合の訪問者に対して、本当に壊れています。

ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。

関連記事

4つの結果と、それぞれ異なる次の対応

NXDOMAIN名前が存在しない。再試行は無意味
TIMEOUT時間内に応答なし。一時的なことが多い
SERVFAILサーバーが処理できなかった。一時的な場合もある
REFUSEDポリシーにより拒否。障害や一時的な問題であることは稀
トラブルシューティング

NXDOMAINとは?ドメインが解決されない理由

NXDOMAINは、DNSの観点ではそのドメインが存在しないことを意味します。タイムアウトでもサーバーの問題でもありません。実際の原因を解説します。

読了時間:3分

同じドメインでも応答が変わる3つの理由

ジオルーティング

地域ごとに別のエッジサーバー

キャッシュ

TTLもキャッシュも個別

スプリットホライズン

意図的に異なる回答

トラブルシューティング

DNSの応答が場所によって変わる理由

地理的なDNS、CDNのルーティング、リゾルバーのキャッシュ、スプリットホライズン構成から、同じドメインでも応答が異なる理由を理解します。

読了時間:4分

順に確認する4つの層

DNS

名前を解決

トランスポート

TCPが接続

TLS

証明書を検証

アプリケーション

HTTPが応答

トラブルシューティング

「このサイトにアクセスできません」エラーの原因を切り分ける方法

この汎用的なブラウザーエラーは、互いに無関係な複数の障害を含んでいます。DNSは、最初に関与の有無を確認するのに最も手早い切り分け先です。

読了時間:3分