Active Directoryのドメイン名を変更してみる(注:とってもやりたくない)。

 タイトルがアレだが、本音でもある。

 WindowsのActive Directoryは一応ドメイン名の変更がサポートされているし、必要なツール一式もWindowsに標準で入っているので作業が出来ない訳ではない。・・・が、本音ではやりたくないのよコレ、大体何か起こるし。

 ということで、今回は取り敢えず自分がやった作業記録っぽいものを以下に。
 日本語で手順一式が書かれたページはあまり無いようなので、もしかしたら誰かの役に立つかも、的なノリで。

 ◆事前準備

 1◇兎に角、全てのAD間のレプリケーションが正常に走っていることを確認する。

 個人的な経験からして、見落としがちなのが、片方向はOKだが反対方向はNGというパターン。
 以下のコマンド、全てのサーバでレプリケーションが常時正しく行われているかどうか確認しましょう。

 repadmin /showrepl [ADサーバ名]

 もし「失敗しました。」なんて出ている場合で、且つ「ネットワークが物理的に切れていない」「名前解決がコケてない」となると、大体はRPC絡みでトラブっているので、その場合は取り敢えずパスワードリセットで。

 netdom /resetpwd /Server:[サーバ名] /UserD:[ドメイン名]¥[ドメイン管理者名] /PasswordD:[パスワード]

 ADサーバの中に1箇所でもレプリケーション不良があった場合、一見正常に見えるサーバも含めて全てのサーバでパスワードリセットをかけた方が良い模様。というか、そうしないとレプリケーションが復活しなかったことも。
 で、パスワードリセットが正常に働けば、止まっていたレプリケーションが流れ始める筈なので、一休みしてから再度repadminでステータスを確認すればOKの筈。

 ・・・これで駄目だと結構面倒臭い、というかそもそもADが危険な状態の可能性が高いので、ドメイン名変更云々の前に現ドメインを修復して健全にしてからね、と。

 2◇可能であればGC(グローバルカタログ)をプライマリの1つに減らす。

 GCのレプリケーションは時間がかかるせいかどうか、GCが複数ある状態での作業だと思わぬエラーが発生したりする確率が高い「気がする」。
 なので、この作業を始める前にプライマリの1つ以外は全てGCの役割を外し、作業が終わってたら再度GCに設定すれば良い・・・と「思われる」。

 #動作原理だけ考えれば、レプリケーションさえ常時問題無いならばGCの設定がど~かなんて一切関係ありませんが、という話の筈なのだけど。

 ◆作業開始

 1◇現在の設定のエクスポートとリストの修正

 rendom /list

 このコマンドを打つとカレントの下にDomainlist.xmlというファイルが作成されるので、コレを適当テキストエディタで開く。

 <DNSname>現在のADドメイン名</DNSName>
 <NetBiosName>現在のADドメイン名のNetBIOS名</NetBiosName>

 という項目が複数あるので、このADドメイン名とNetBIOS名を変更後のものに書き換える。
 ちなみに

 <NetBiosName></NetBiosName>

 という風に項目があるが値が入っていない箇所はそのまま放置でOK。

 2◇新ドメイン名のロードと同期

 rendom /upload

 これで、現在のADサーバに変更された設定がアップロードされる。

 ♯と同時にドメイン名変更用の特別モードに入るので、再度設定変更をアップロードすることは出来なくなる。

 repadmin /syncall /e /d /P

 これで、全てのADサーバに変更された設定を同期させる。

 但しこれ、/Pが付いているので「同期要求」であることに注意。
 片方向のレプリケーションが正常で反対方向のレプリケーションがエラー、なんて状況だと、実はレプリケーションエラーなのにこのコマンドでエラーが出なかったりする。理由は簡単、同期要求だけは正常に伝達出来ているので。
 なので、先程も出した /showrepl コマンドできちんと同期出来ていることを確認しましょう、と。

 3◇更新準備と更新開始

 設定同期が完了したら、以下のコマンドで更新準備開始。

 rendom /prepare

 ローカルはすぐ終わるだろうが、リモートサーバ等ではたまに待たされることも。
 また、レブリレーションが終わっていなければ当然エラーになるので、細い回線越しのサーバがあるような環境では少し待ってあげるのも吉。
 ちなみに、何度コマンド打っても特に問題無いですよ。

 そして、全てのサーバが準備完了なったら、全てのADサーバが自動再起動しても問題無いことを確認して以下のコマンドでアップデート実行。

 rendom /execute

 エラーが無ければ自動的に全てのADサーバで再起動がかかります、はい。

 4◇設定修正

 ポリシー周り等、自動で更新されない箇所を修正しましょう。

 gpfixup /olddns:古ドメイン /newdns:新ドメイン
 gpfixup /oldnb:古ドメイン /newnb:新ドメイン

 ここで一旦、再び全てのADサーバを再起動。

 5◇DNS名修正

 プライマリDNSが自動で修正されないことがあるので、その場合は手動で修正する。
 GUIから新ドメインの前方参照ゾーンを「Active Directory統合」で作成。

 新ドメイン
 _msdcs.新ドメイン

 ゾーンさえ作成すればあとはADが勝手にレコードを作ってくれるし、セカンダリDNS以降はまぁ待っていれば複製されるかと。
 新ドメインのゾーンが作成されていることを確認して、ここで更に全てのADサーバを再起動。

 再起動後、既に用済みの旧ドメインの前方参照ゾーンは削除する。削除完了後再度再起動。

 ・・・何度も再起動していていい加減にしろ的な感想も出てくると思われるが、この辺りはホスト名他色々書き換わっている関係で、面倒でも素直に再起動した方が良い模様。省略すると後で「アレこれ反映されてない」的な場面に出くわすことも。
 また、再起動してから実際に新しい設定が反映され始めるまで、最低でも10分程度は待った方がいいというも当然ということで。

 6◇ホスト名修正

 再起動&反映待ち完了後、「フルコンピュータ名」が

 サーバ名.新ドメイン

 に正しくなっていることを確認。普通は修正されている筈だが、もしなっていなければ修正する。
 例によって「コンピュータ名/ドメイン名の変更」から「詳細」ボタンを押して「このコンピューターのプライマリ DNSサフィックス」を書き換え。

 7◇後片付け

 AD上のゴミ片付けコマンドを入力。

 rendom /clean

 特に問題が無ければ、一連の作業完了コマンドを入力。

 rendom /end

 これでADがドメイン名変更用の特別モードから通常モードへ移行するので、作業完了、と。

 ◆クライアントは

 入り直すタイミングで新ドメイン名が反映される。
 但しクライアントキャッシュ上では旧ドメイン名が残ってしまっているので、変更直後の最初のログインだけは、電源投入直後の表示されるログインユーザー履歴からはログイン出来ない。

 ◆◆◆

 ・・・まぁこんな感じですか。

 作業として大したことは無いのだが、うっかりレプリケーションエラーが出てしまうと変更作業自体が止まってしまうので大変ですな。

 それでは、今回はこんなところで。

Share