ある日の AD トラブルと修復 take2

血相を変えて監視担当者が私のところに。何かと言えば、Active Directory のドメインコントローラSV04が再起動を繰り返しているとのころ。脳裏には Sasserワームの悪夢が…。とりあえずコンソールを開いてみる。

エラーメッセージ

あー。まさに Sasser のような lsass.exe が落ちたメッセージ。Windows NT 系OS は lsass.exe が死ぬと即座にシャットダウンされるのが仕様。ただし、sasser ワームの被害者はただの端末PCだったが、今瀕死なのはドメインコントローラーで、lsass.exe が死ぬということはドメインの認証ができないってことだ。がっくり。

イベントの状態コード(c0000005)から見るとこれが該当。

http://support.microsoft.com/kb/927342/en-us

「This problem occurs if the domain controller incorrectly manages the search duplicate buffer. In this situation, the Lsass.exe process may stop unexpectedly.」

イベントログの状態から見て、私も妥当な判定だと思う。

他の3台のドメインコントローラ(SV01〜3)はイベントログでは致命的な状態ではない。ただし。

イベント

小さい傷が見つかっていたらしい。だったら直してくれよな…。

で、このサーバ。何もしなければきっちり20分ごとにlsass.exe が落ちて再起動がかかってしまうので、shutdown -a でシャットダウンをキャンセルしたはいいが、lsass.exe がないと権限チェックが通らないため手動再起動ができなくなった。あーあ。やむなくハードウェアリセット。

ディレクトリサービス復元モードで起動して ntdsutil でditをチェック

ntdsutil の結果

どうせそうでしょうよ、けっ。

ということで、またもこのSV04サーバは強制降格とあいなりました。

なお、事前にWindows側でNICを無効にし、念のためethernetスイッチ側でもポートをshutdownしている。

【正常系】

先にFSMOの役割を一旦全部他のサーバ(SV02)に引き受けてもらう。

SV02の管理コンソールから、Domain Controllers コンテナの中の SV04 を強制削除。NTDS Settingsからも SV04を削除し、SV01,SV03とレプリケーションを行う。

【異常系】

通常ログオンして、先にADの管理コンソールでSV04以外のドメインコントローラを強制削除しNTDS Settingsも他のサーバをすべて削除する。

サーバの役割からactive directoryを削除。この時に「ドメインの最後のドメインコントローラ」にチェックを入れる。アプリケーションディレクトリパーティションも削除。

再起動して、コンピュータ名を SV04A に変更。

再起動して、コンピュータ名を SV04 に変更。

この時点でOS側とスイッチ側で通信遮断を解除。

再起動してドメインコントローラを再インストール

イベント

これで機能回復。もちろん Global catalog の設定も忘れずにしておく。

ただし以下のようなエラーが出ていたので、手動でDNSレコードを設定。
Active Directory において、以下に一覧表示されている発信元のドメイン コント
ローラの IP アドレスは、DNS を使って解決できませんでした。セキュリティ グルー
プ、グループ ポリシー、ユーザーとコンピュータおよびそのパスワードの一貫性を保
持するため、発信元おドメイン コントローラの NetBIOS 名または完全修飾されたコン
ピュータ名を使って正しくレプリケートされました。 
 
DNS 構成が無効であると、この Active Directory フォレスト内のメンバのコン
ピュータ、ドメイン コントローラまたはアプリケーション サーバーにおいて、ログ
オン認証やネットワーク リソースへのアクセスなど重要な操作に支障をきたす可能性
があります。 
 
今すぐこの DNS 構成のエラーを解決する必要があります。それにより、このドメイ
ン コントローラにおいて、DNS を使って発信元ドメイン コントローラの IP アドレス
を解決できるようになります。 
 
代替サーバー名: 
 SV01.sample.local 
エラーが発生した DNS ホスト名: 
 1f1e842b-****-****-9865-1df048729f9c._msdcs.sample.local 
 
注意: 既定の設定では、12 時間内の DNS エラーが 10 個より多い場合であっても、 
最大 10 個までしか表示されません。個々のエラー イベントのログを記録するには、 
次の診断のレジストリ値を 1 に設定してください: 
 
レジストリ パス:  
HKLM\System\CurrentControlSet\Services\NTDS\Diagnostics\22 DS RPC Client 
 
ユーザー操作: 
 
 1) 発信元ドメイン コントローラが機能していない、または、そのオペレーティング
システムが別のコンピュータ名または別の NTDSDSA オブジェクト GUID で再インストー
ルされている場合、サポート技術情報 (KB) の記事 216498 に従って、ntdsutil.exe を
使い、発信元ドメイン コントローラのメタデータを削除してください。 
 
 2) 発信元ドメイン コントローラで Active directory が実行されていることを確認
し、"net view \\<発信元 DC 名>" や "ping <発信元 DC 名>" のコマンドを使って
ネットワークでアクセスできることを確認してください。 
 
 3) 発信元ドメイン コントローラにおいて、DNS サービスの設定で有効な DNS サー
バーが使用されているか確認して、その発信元ドメイン コントローラのホスト レコー
ドと CNAME レコードが DNS エンハンス バージョンの DCDIAG.EXE を使って正しく登
録されているか確認してください。DNS エンハンス バージョンの DCDIAG.EXE は 
http://www.microsoft.com/dns において利用可能です。 
 
  dcdiag /test:dns 
 
 4) 宛先ドメイン コントローラにおいて、DNS エンハンス バージョンの DCDIAG.EXE 
のコマンドを使って、DNS サービスの設定で有効な DNS サーバーが使用されているか 
確認してください。宛先ドメイン コントローラのコンソールで次のように実行してく 
ださい: 
 
  dcdiag /test:dns 
 
 5) DNS エラーの失敗についての詳細な分析はサポート技術情報 (KB) の 824449 を 
参照してください: 
   http://support.microsoft.com/?kbid=824449 
 
追加データ 
エラー値: 
 11004 要求した名前は有効ですが、要求された種類のデータは見つかりませんでした。 


詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート 
センター] を参照してください。


翌日まで待ってみるとちゃんと4台分のDNSレコードができていた。

DNS

レプリカのトポロジなどが元に戻ったことを確認し、dcdiag /v でエラーがないことを確認してから FSMO の役割を所定の状態に戻した。



前回に続いて今回もSV04だけ問題が発生したのは、PDCエミュレータというよりもひょっとするとRIDマスター(連番マスター)の問題のような気がする。前回のトラブルもインデックスが重複したということらしいし。
RIDマスターは(更新情報をできるだけ早く把握するためにも?)PDCエミュと原則同居させないといけないらしいから分離するとよりいっそうこういう競合状態のトラブルが出かねない。

※今回の反省点。

今回はドメインコントローラの機能が生きたまま(20分限定だけど)だったので、ドメインコントローラを再インストールする前にDNSもアンインストールしておけばよかった。ドメインコントローラになってからDNSをインストールすればゾーン設定のダイアログを無視してキャンセルしてもNTDSでちゃんと同期してくれますからね…(AD統合DNSなので)。

あと、ちゃんとDCとして(20分限定だけど)起動できていたので、起動したらすぐに dcpromo で降格させた方が楽だったかも。

ただし、
というリスクもある。FSMOの役割だけは移転しておくとか、柔軟な対応が必要だね、こりゃ。


戻る