AD のドメイン名を変更する( rendom コマンド)
諸事情により既存のドメイン名を使用することができなくなり、新規に Active Directory ドメインサービスを構築しなければならなくなったのですが、これまで使ってきた周辺サーバーやクライアント資産は引き継ぐ必要があり、新規に Active Directory ドメインサービスを構築する方法と、既存ドメイン名のまま新しい環境に移行し、移行後に AD のドメイン名を変更する方法を検討しています。
正直なところ AD のドメイン名を変更する方法は、影響範囲を確認する作業が厳しいと考えているため新規構築で考えていますが、 AD のドメイン名変更がどのように動作するのか一応検証したいと思います。
簡単な検証環境として、 AD サーバー 1 台とクライアント 2 台で確認しています。また、クライアント 1 台は電源の入った状態、もう 1 台は電源を切った状態で検証しています。
DNS の設定
ドメイン名の変更準備として、変更後のドメイン名と同名の前方参照ゾーンを作成する必要があるようです。
まずは、 DNS マネージャーを実行します。
変更後の新しいゾーンを作成します。
プライマリゾーンを作成します。
ゾーン名に変更後のドメイン名を設定します。
ゾーンファイルは、デフォルトのまま進めます。
動的更新が受け付けられるように設定します。
設定の確認が表示されるので、「完了」をクリックします。
設定を確認すると、次のように作成されています。
事前準備は以上です。
rendom コマンドによるドメイン名変更
コマンドプロンプトを管理者権限で実行し、作業用のディレクトリへ移動しておきます。
現在の設定を出力するため、次のコマンドを実行します。
> rendom /list
カレントに「 Domainlist.xml 」が作成されるので、テキストエディタで変更前のドメイン名と NetBIOS 名を新しい名前に変更します。
<?xml version ="1.0"?>
<Forest>
<Domain>
<!-- PartitionType:Application -->
<Guid>51f75057-cd99-479c-a0e7-c144b9994370</Guid>
<DNSname>DomainDnsZones.【変更前のドメイン名】</DNSname>
<NetBiosName></NetBiosName>
<DcName></DcName>
</Domain>
<Domain>
<!-- PartitionType:Application -->
<Guid>b345c949-2e58-4653-9747-998990860ab1</Guid>
<DNSname>ForestDnsZones.【変更前のドメイン名】</DNSname>
<NetBiosName></NetBiosName>
<DcName></DcName>
</Domain>
<Domain>
<!-- ForestRoot -->
<Guid>4951a46b-d23b-4485-8195-14babc10242f</Guid>
<DNSname>【変更前のドメイン名】</DNSname>
<NetBiosName>【変更前の NetBios名】</NetBiosName>
<DcName></DcName>
</Domain>
</Forest>
次のコマンドを実行して、修正内容に問題がないか検証します。
> rendom /showforest
問題がなければ、「操作は正常に終了しました。」と表示されます。
準備が整ったので、次のコマンドを実行して設定ファイルをアップロードします。
> rendom /upload
正常に実行できると、「 DNSRecords.txt 」と「 DcList.xml 」が出力されます。
【DNSRecords.txtの例】
_ldap._tcp.gc._msdcs.【新しいドメイン名】
_ldap._tcp.pdc._msdcs.DomainDnsZones.【新しいドメイン名】
_ldap._tcp.dc._msdcs.DomainDnsZones.【新しいドメイン名】
_ldap._tcp.pdc._msdcs.ForestDnsZones.【新しいドメイン名】
_ldap._tcp.dc._msdcs.ForestDnsZones.【新しいドメイン名】p
_ldap._tcp.pdc._msdcs.【新しいドメイン名】
_ldap._tcp.dc._msdcs.【新しいドメイン名】
71c329b2-8a4c-498f-a6b7-5ccb7abcd215._msdcs.【新しいドメイン名】
DcList.xmlの例】
<?xml version ="1.0"?>
<DcList>
<Hash>KTjhRaYK5iUTMNDBxcxc30y+Wcw=</Hash>
<Signature>HEPewxsijx5vltGZYvgVu/yKWvw=</Signature>
<DC>
<Name>【変更前のドメイン名】</Name>
<State>Initial</State>
<Password></Password>
<LastError>0</LastError>
<LastErrorMsg></LastErrorMsg>
<FatalErrorMsg></FatalErrorMsg>
<Retry></Retry>
</DC>
</DcList>
今回は、 AD サーバーが 1 台だけなので他のサーバーを気にする必要はありませんが、実際には「 repadmin /syncall /e /d /P 」を実行して変更内容を同期させたり、「 repadmin /showrepl 」を実行して同期された設定を確認します。
次のコマンドを実行して、 AD のドメイン名変更ができるか確認します。
> rendom /prepare
次のようにエラーが発生していないことを確認します。
それでは、ドメイン名の変更を実行します。
> rendom /execute
エラーが無ければ自動的に AD サーバーが再起動します。
変更に成功すると、「 dclist.xml 」ファイルの State 要素が「 Done 」に変更されます。
成功したことが確認出来たら、コマンドプロンプトを管理者権限で実行し作業ディレクトリへ移動します。 変更作業を終了するため、次のコマンドを実行します。
> rendom /end
ここまでで、「 rendom 」を使った作業は終了です。
DNS の設定を新しいドメインに変更する
準備で作成していた新ドメイン名の前方参照ゾーンの設定を「 ActiveDirectory 統合」に変更し、動的更新を「セキュリティ保護のみ」に変更します。
グループポリシーの修正
グループポリシーの管理画面を開くと次のようなエラーが表示されました。
グループポリシーオブジェクトとグループポリシーリンク内のドメイン名の依存関係を修正する必要があるということなので、次のコマンドを実行します。
> gpfixup /olddns:【変更前ドメイン】 /newdns:【変更後ドメイン】
> gpfixup /oldnb:【変更前ドメイン】 /newnb:【変更後ドメイン】
コマンド実行後、再起動します。
アカウントの UPN サフィックス修正
クライアントからのログインに失敗し、原因を探したところアカウントの UPN サフィックスが変更前のドメイン名のままだったため修正しました。
まとめ
クライアントへのドメイン変更反映は、電源が入っていても入っていなくても問題なく変更されるようでした。
単純な環境であったためか、想定していたよりトラブルもなく移行できましたが、どこに影響が出るのか手さぐりになる部分も出そうな気がします。
経験豊富なベンダーに依頼するか、地道に新規構築し移行することを選択したいというのが感想になります。