次の方法で共有


DNS サーバーのトラブルシューティング

仮想オペレーターを試す - DNS に関する一般的な問題をすばやく特定、解決するのに役立ちます。

この記事では、DNS サーバーの問題をトラブルシューティングする方法について説明します。

IP 構成を確認する

  1. コマンド プロンプトで ipconfig /all を実行し、IP アドレス、サブネット マスク、および既定のゲートウェイを確認します。

  2. 検索対象の名前に対して DNS サーバーが権限を持っているかどうかを確認します。 その場合は、 権限のあるデータに関する問題のチェックを参照してください。

  3. 次のコマンドを実行します。

    nslookup <name> <IP address of the DNS server>
    

    例えば次が挙げられます。

    nslookup app1 10.0.0.1
    

    エラーまたはタイムアウト応答が発生した場合は、再帰の 問題のチェックを参照してください。

  4. リゾルバーキャッシュをクリアします。 これを行うには、管理コマンド プロンプト ウィンドウで次のコマンドを実行します。

    dnscmd /clearcache
    

    または、管理 PowerShell ウィンドウで、次のコマンドレットを実行します。

    Clear-DnsServerCache
    

    サーバーが DNS クライアントとして機能している場合 (たとえば、独自の操作の名前を解決する必要がある場合)、 Clear-DnsClientCache を使用してローカル DNS クライアント キャッシュをクリアします。 サーバーの DNS サーバーとしての役割 (他のクライアントに DNS レコードを提供する) に関連する問題をトラブルシューティングする場合は、 Clear-DnsServerCache を使用してサーバーの権限のあるキャッシュをクリアし、古い DNS 情報を提供しないようにします。

  5. 手順 3. を繰り返します。

DNS サーバーの問題を確認する

イベント ログ

記録されたエラーがあるかどうかを確認するには、次のログを確認します。

  • アプリケーション

  • システム

  • DNS サーバー

nslookup クエリを使用してテストする

次のコマンドを実行し、クライアント コンピューターから DNS サーバーに到達できるかどうかを確認します。

nslookup <client name> <server IP address>
  • リゾルバーがクライアントの IP アドレスを返す場合、サーバーに問題はありません。

  • リゾルバーが "サーバー エラー" または "クエリ拒否" 応答を返す場合は、ゾーンが一時停止しているか、サーバーが過負荷状態である可能性があります。 DNS コンソールのゾーン プロパティの [全般] タブを調べることで、一時停止されているかどうかを確認できます。

リゾルバーから "サーバーへの要求がタイムアウトしました" または "サーバーからの応答がありません" という応答が返された場合、DNS サービスが実行されていない可能性があります。 サーバーのコマンド プロンプトで次のように入力して、DNS サーバー サービスを再起動してみてください。

net start DNS

サービスの実行中に問題が発生した場合、nslookup クエリで使用した IP アドレスをサーバーがリッスンしていない可能性があります。 DNS コンソールの [サーバーのプロパティ] ページの [ インターフェイス ] タブで、管理者は、選択したアドレスのみをリッスンするように DNS サーバーを制限できます。 構成された IP アドレスの特定の一覧にサービスを制限するように DNS サーバーが構成されている場合、DNS サーバーへの接続に使用される IP アドレスが一覧にない可能性があります。 一覧で別の IP アドレスを試すか、一覧に IP アドレスを追加できます。

まれに、DNS サーバーに高度なセキュリティまたはファイアウォール構成がある場合があります。 サーバーが中間ホスト (パケット フィルタリング ルーターやプロキシ サーバーなど) 経由でのみ到達可能な別のネットワーク上にある場合、DNS サーバーは標準以外のポートを使用してクライアント要求をリッスンおよび受信する可能性があります。 既定では、nslookup は UDP ポート 53 上の DNS サーバーにクエリを送信します。 そのため、DNS サーバーが他のポートを使用している場合、nslookup クエリは失敗します。 これが問題である可能性があると思われる場合は、既知の DNS ポートのトラフィックをブロックするために中間フィルターが意図的に使用されているかどうかを確認します。 そうでない場合は、UDP/TCP ポート 53 上のトラフィックを許可するように、ファイアウォールのパケット フィルターまたはポート規則を変更してみてください。

権限のあるデータに関する問題の確認

正しくない応答を返すサーバーがゾーンのプライマリ サーバー (ゾーンの標準プライマリ サーバーか、Active Directory 統合を使用してゾーンを読み込むサーバー) であるか、ゾーンのセカンダリ コピーをホストしているサーバーであるかを確認します。

サーバーがプライマリ サーバーの場合

この問題は、ユーザーがゾーンにデータを入力したときにユーザー エラーが発生する可能性があります。 または、Active Directory レプリケーションまたは動的更新に影響する問題が原因である可能性があります。

サーバーがゾーンのセカンダリ コピーをホストしている場合

  1. プライマリ サーバー (このサーバーがゾーン転送をプルするサーバー) 上のゾーンを調べます。

    DNS コンソールでセカンダリ ゾーンのプロパティを調べることで、どのサーバーがプライマリ サーバーであるかを確認できます。

    プライマリ サーバーで名前が正しくない場合は、手順 4 に進みます。

  2. プライマリ サーバーで名前が正しい場合は、プライマリ サーバーのシリアル番号がセカンダリ サーバーのシリアル番号以下かどうかを確認します。 その場合は、プライマリ サーバーまたはセカンダリ サーバーのいずれかを変更して、プライマリ サーバーのシリアル番号がセカンダリ サーバーのシリアル番号を超えるようにします。

  3. セカンダリ サーバーで、DNS コンソール内から、または次のコマンドを実行して、ゾーン転送を強制します。

    dnscmd /zonerefresh <zone name>
    

    たとえば、ゾーンが corp.contoso.com の場合は、「 dnscmd /zonerefresh corp.contoso.com」と入力します。

  4. セカンダリ サーバーをもう一度調べて、ゾーンが正しく転送されたかどうかを確認します。 そうでない場合は、ゾーン転送の問題が発生している可能性があります。 詳細については、「 ゾーン転送の問題」を参照してください。

  5. ゾーンが正しく転送された場合は、データが正しいかどうかを確認します。 そうでない場合は、プライマリ ゾーンのデータが正しくありません。 この問題は、ユーザーがゾーンにデータを入力したときにユーザー エラーが発生する可能性があります。 または、Active Directory レプリケーションまたは動的更新に影響する問題が原因である可能性があります。

再帰の問題の確認

再帰が正常に機能するためには、再帰クエリのパスで使用されるすべての DNS サーバーが、正しいデータに応答して転送できる必要があります。 できない場合は、次のいずれかの理由で再帰クエリが失敗する可能性があります。

  • 完了する前に、クエリがタイムアウトになる。

  • クエリ中に使用されたサーバーが応答に失敗します。

  • クエリ中に使用されるサーバーは、不適切なデータを提供します。

元のクエリで使用されたサーバーでトラブルシューティングを開始します。 DNS コンソールのサーバー プロパティの [ フォワーダー ] タブを調べて、このサーバーがクエリを別のサーバーに転送するかどうかを確認します。 [ フォワーダーを有効にする ] チェック ボックスがオンで、1 つ以上のサーバーが一覧表示されている場合、このサーバーはクエリを転送します。

このサーバーがクエリを別のサーバーに転送する場合は、このサーバーがクエリを転送するサーバーに影響する問題がないか確認します。 問題を確認するには、「 DNS サーバーの問題を確認する」を参照してください。 そのセクションでクライアントでタスクを実行するように指示されたら、代わりにサーバーで実行します。

サーバーが正常で、クエリを転送できる場合は、この手順を繰り返して、このサーバーがクエリを転送するサーバーを調べます。

このサーバーがクエリを別のサーバーに転送しない場合は、このサーバーがルート サーバーにクエリを実行できるかどうかをテストします。 そのためには、次のコマンドを実行します。

nslookup
server <IP address of server being examined>
set q=NS
  • リゾルバーがルート サーバーの IP アドレスを返す場合、ルート サーバーと解決しようとしている名前または IP アドレスの間で委任が壊れている可能性があります。 「 壊れた委任をテスト する」の手順に従って、委任が壊れている場所を特定します。

  • リゾルバーから "サーバーへの要求がタイムアウトしました" という応答が返された場合は、ルート ヒントが機能しているルート サーバーを指しているかどうかを確認します。 現在のルートヒントを表示するには、ルートヒントを表示の手順を使用します。 ルート ヒントが機能しているルート サーバーを指している場合は、ネットワークの問題が発生している可能性があります。または、「 DNS サーバーの問題の確認 」セクションの説明に従って、リゾルバーがサーバーに対してクエリを実行できないようにする高度なファイアウォール構成がサーバーで使用されている可能性があります。 再帰タイムアウトの既定値が短すぎる可能性もあります。

壊れた委任をテストする

有効なルート サーバーに対してクエリを実行して、次の手順でテストを開始します。 このテストは、壊れた委任を確認するために、ルートから始まり、テスト対象のサーバーまでのすべての DNS サーバーにクエリを実行するプロセスを案内します。

  1. テストするサーバーのコマンド プロンプトで、次のように入力します。

    nslookup
    server <server IP address>
    set norecursion
    set querytype= <resource record type>
    <FQDN>
    

    リソース レコードの種類は、元のクエリでクエリを実行していたリソース レコードの種類であり、FQDN はクエリ対象の FQDN (ピリオドで終了) です。

  2. 応答に委任されたサーバーの "NS" および "A" リソース レコードの一覧が含まれている場合は、サーバーごとに手順 1 を繰り返し、"A" リソース レコードの IP アドレスをサーバー IP アドレスとして使用します。

    • 応答に "NS" リソース レコードが含まれていない場合は、委任が壊れています。

    • 応答に "NS" リソース レコードが含まれているが、"A" リソース レコードがない場合は、 set recursion を入力し、"NS" レコードに一覧表示されているサーバーの "A" リソース レコードに対して個別にクエリを実行します。 ゾーン内の各 NS リソース レコードに対して "A" リソース レコードの有効な IP アドレスが少なくとも 1 つ見つからない場合は、委任が解除されます。

  3. 委任が壊れていると判断した場合は、委任されたゾーンの正しい DNS サーバーに対して有効な IP アドレスを使用して、親ゾーンの "A" リソース レコードを追加または更新して修正します。

現在のルート ヒントを表示する手順

  1. DNS コンソールを起動します。

  2. 再帰クエリに失敗した DNS サーバーを追加または接続します。

  3. サーバーを右クリックし、[ プロパティ] を選択します。

  4. [ルート ヒント] をクリックします。

ルート サーバーへの基本的な接続を確認します。

  • ルート ヒントが正しく構成されているように見える場合は、失敗した名前解決で使用されている DNS サーバーが IP アドレスでルート サーバーに ping を実行できることを確認します。

  • ルート サーバーが IP アドレスによる ping に応答しない場合、ルート サーバーの IP アドレスが変更されている可能性があります。 ただし、ルート サーバーの再構成を見ることはめったにありません。

ゾーン転送に関する問題

次のチェックを実行します。

  • プライマリ DNS サーバーとセカンダリ DNS サーバーの両方について、イベント ビューアーを確認します。

  • プライマリ サーバーで、セキュリティのために転送の送信が拒否されているかどうかを確認します。

  • DNS コンソールのゾーン プロパティの [ゾーン 転送 ] タブを確認します。 サーバーがゾーンのプロパティの [ ネーム サーバー ] タブに表示されているサーバーなど、サーバーの一覧へのゾーン転送を制限する場合は、セカンダリ サーバーがその一覧にあることを確認します。 サーバーがゾーン転送を送信するように構成されていることを確認します。

  • 「DNS サーバーの問題の確認」セクションの手順に従って、プライマリ サーバーで問題がないか確認 します。 クライアントでタスクを実行するように求められたら、代わりにセカンダリ サーバーでタスクを実行します。

  • セカンダリ サーバーが BIND などの別の DNS サーバー実装を実行しているかどうかを確認します。 その場合、問題の原因は次のいずれかである可能性があります。

    • Windows プライマリ サーバーは高速ゾーン転送を送信するように構成されている場合がありますが、サード パーティのセカンダリ サーバーでは高速ゾーン転送がサポートされていない可能性があります。 その場合は、サーバーのプロパティの [詳細設定] タブの [バインド セカンダリを有効にする] チェック ボックスをオンにして、DNS コンソール内からプライマリ サーバーでの高速ゾーン転送を無効にします。

    • Windows サーバー上の前方参照ゾーンに、セカンダリ サーバーがサポートしていないレコードの種類 (SRV レコードなど) が含まれている場合、セカンダリ サーバーでゾーンのプルに問題が発生する可能性があります。

プライマリ サーバーが BIND などの別の DNS サーバー実装を実行しているかどうかを確認します。 その場合、プライマリ サーバー上のゾーンに、Windows で認識されない互換性のないリソース レコードが含まれている可能性があります。

マスター サーバーまたはセカンダリ サーバーが別の DNS サーバー実装を実行している場合は、両方のサーバーが同じ機能をサポートしていることを確認します。 サーバーのプロパティ ページの [詳細設定 ] タブで、DNS コンソールで Windows サーバーを確認できます。 [バインド セカンダリの有効化] ボックスの他に、このページには [名前のチェック] ドロップダウン リストが含まれています。 これにより、DNS 名の文字に対する厳密な RFC 準拠の適用を選択できます。