AD のドメイン名を変更する( rendom コマンド)

メモ:  Category:windows

諸事情により既存のドメイン名を使用することができなくなり、新規に Active Directory ドメインサービスを構築しなければならなくなったのですが、これまで使ってきた周辺サーバーやクライアント資産は引き継ぐ必要があり、新規に Active Directory ドメインサービスを構築する方法と、既存ドメイン名のまま新しい環境に移行し、移行後に AD のドメイン名を変更する方法を検討しています。

正直なところ AD のドメイン名を変更する方法は、影響範囲を確認する作業が厳しいと考えているため新規構築で考えていますが、 AD のドメイン名変更がどのように動作するのか一応検証したいと思います。

簡単な検証環境として、 AD サーバー 1 台とクライアント 2 台で確認しています。また、クライアント 1 台は電源の入った状態、もう 1 台は電源を切った状態で検証しています。

DNS の設定

ドメイン名の変更準備として、変更後のドメイン名と同名の前方参照ゾーンを作成する必要があるようです。

まずは、 DNS マネージャーを実行します。

DNS マネージャーの実行

変更後の新しいゾーンを作成します。

新しいゾーンの作成

プライマリゾーンを作成します。

プライマリゾーンの作成

ゾーン名に変更後のドメイン名を設定します。

ゾーン名の指定

ゾーンファイルは、デフォルトのまま進めます。

ゾーン名の指定

動的更新が受け付けられるように設定します。

動的更新を受け付ける用に設定

設定の確認が表示されるので、「完了」をクリックします。

動的更新を受け付ける用に設定

設定を確認すると、次のように作成されています。

作成したゾーンのプロパティ

事前準備は以上です。

rendom コマンドによるドメイン名変更

コマンドプロンプトを管理者権限で実行し、作業用のディレクトリへ移動しておきます。

現在の設定を出力するため、次のコマンドを実行します。

> rendom /list
rendom /list コマンドの実行

カレントに「 Domainlist.xml 」が作成されるので、テキストエディタで変更前のドメイン名と NetBIOS 名を新しい名前に変更します。

出力された Domainlist.xml
<?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

問題がなければ、「操作は正常に終了しました。」と表示されます。

出力された Domainlist.xml

準備が整ったので、次のコマンドを実行して設定ファイルをアップロードします。

> 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 /prepare コマンドの実行結果

それでは、ドメイン名の変更を実行します。

> rendom /execute

エラーが無ければ自動的に AD サーバーが再起動します。

変更に成功すると、「 dclist.xml 」ファイルの State 要素が「 Done 」に変更されます。

成功したことが確認出来たら、コマンドプロンプトを管理者権限で実行し作業ディレクトリへ移動します。 変更作業を終了するため、次のコマンドを実行します。

> rendom /end

ここまでで、「 rendom 」を使った作業は終了です。

DNS の設定を新しいドメインに変更する

準備で作成していた新ドメイン名の前方参照ゾーンの設定を「 ActiveDirectory 統合」に変更し、動的更新を「セキュリティ保護のみ」に変更します。

新しいドメイン名のゾーン設定変更

グループポリシーの修正

グループポリシーの管理画面を開くと次のようなエラーが表示されました。

グループポリシーの管理ででエラー発生

グループポリシーオブジェクトとグループポリシーリンク内のドメイン名の依存関係を修正する必要があるということなので、次のコマンドを実行します。

> gpfixup /olddns:【変更前ドメイン】 /newdns:【変更後ドメイン】
> gpfixup /oldnb:【変更前ドメイン】 /newnb:【変更後ドメイン】

コマンド実行後、再起動します。

アカウントの UPN サフィックス修正

クライアントからのログインに失敗し、原因を探したところアカウントの UPN サフィックスが変更前のドメイン名のままだったため修正しました。

アカウントの UPN サフィックス修正

まとめ

クライアントへのドメイン変更反映は、電源が入っていても入っていなくても問題なく変更されるようでした。

単純な環境であったためか、想定していたよりトラブルもなく移行できましたが、どこに影響が出るのか手さぐりになる部分も出そうな気がします。

経験豊富なベンダーに依頼するか、地道に新規構築し移行することを選択したいというのが感想になります。

bluenote by BBB