本記事はマイクロソフト社員によって公開されております。
こんにちは。Windows Commercial Support Directory Services チームです。
今回は、サーバーの再起動後、Active Directory と DNS サーバーがデッドロックの状態に陥り、Active Directory と DNS サーバーがお互いに起動しない事象について紹介します。
この記事では、事象の詳細な原因と対処策について説明します。
原因
ドメイン コントローラーは OS の起動時、起動までの間に変更された最新のデータベース情報を取得するために初期同期と呼ばれる処理を実施し、これが完了するまでは Active Directory としての機能を提供いたしません。
この時ドメイン コントローラーは複製パートナーとの通信を実施するために、DNS 名前解決を試みます。
一方、DNS サーバーは Active Directory 統合ゾーンを利用している場合は Active Directory から DNS のゾーン情報を読み込む処理を行い、読み込み処理が完了しサービスが起動することで、初めて DNS サーバーとしての機能が利用できるようになります。
そのため、以下の条件に合致した場合、Active Directory と DNS サーバーがお互いを利用する状態が発生し、サービスのタイムアウトまで待つ間にデッドロックが発生いたします。
- 同一ドメイン内に複数台ドメイン コントローラーが存在する。 (1 台のみの場合は初期複製が行われないため発生しません)
- 優先 DNS を自分自身に設定している。
- DNS サーバーが保持しているゾーンに Active Directory 統合ゾーンが存在する。
イベントログからも初期同期を待っている状態が確認できます。
// DNS サーバーログより抜粋
1 | 警告 2020/12/03 8:56:38 DNS-Server-Service 4013 なし |
// Directory Service ログより抜粋
1 | 情報 2020/12/03 8:56:05 ActiveDirectory_DomainService 1000 サービス コントロール |
優先 DNS サーバーが自分自身となっております。
// ipconfig より抜粋
1 | IPv4 アドレス . . . . . . . . . . . .: aaaaa(優先) |
対処策
以下のいずれかの対処策を実施することで次回の再起動時には事象が改善することが見込まれます。
1. 優先 DNS サーバーを自身以外に設定する
優先 DNS サーバーの設定を自分自身以外に変更することで、初期同期をする複製パートナーの名前解決が可能となり、Active Directory のデータベースの初期同期が完了次第、DNS サーバーが正常に利用できるようになります。
2. 初期同期を実施しないレジストリを設定する
初期同期を実施しないように、以下のレジストリを設定します。これにより、OS 起動時に自身の Active Directory のデータベースを読み込み、読み込みが完了次第、DNS サーバーが利用可能となります。
キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
値 :Repl Perform Initial Synchronizations
タイプ:REG_DWORD
数値:0
ただし、この設定を行うと、起動中に変更された Active Directory データベースの内容が即時反映されないことに注意してください。
参考資料
DNS イベント ID 4013 のトラブルシューティング (DNS サーバーが AD 統合 DNS ゾーンを読み込めませんでした)
更新履歴
2023/10/13 : 本ブログの公開