Windows Server 2012 R2 のドメイン コントローラー環境にて、コンピューター名の変更に失敗するという問題につきまして

こんにちは。Windows プラットフォーム サポートの馬場です。

今回は Windows Server 2012 R2 (以降 2012 R2) のドメイン環境でコンピューター名を変更する際の注意点についてご紹介します。
※ “2012 R2 のドメイン環境” とは、 ドメイン コントローラーとして 2012 R2 が含まれているという意味で使用しています。
1 台でも 2012 R2 がドメイン コントローラーとして含まれている場合には、今回ご紹介します事象の影響を受ける可能性がございます。

どのような問題なのか?

サーバーの入れ替え作業で、一旦別名でサーバーを設定した上で、データの移行作業を完了してから移行対象のサーバー名に変更するなど、ドメインに参加したコンピューター名を変更することがあると思います。

ドメイン メンバーの名前変更により実行される処理は、各コンピューターのローカルに保持している情報を更新するだけでなく、
ドメイン コントローラーが保持するコンピューター オブジェクトの情報も更新する必要があります。

具体的には、コンピューター オブジェクトの名前変更だけでなく、そのオブジェクトに紐付けられた Kerberos 認証で利用する Service Principal Name (SPN) 情報の更新も含まれます。
Windows Server 2012 R2 のドメイン コントローラーでは、 SPN に含まれる情報のフォーマットを厳密にチェックしており、
本来ポート番号として数字が入る部分に、文字列が含まれているとコンピューター名の変更処理でエラーを返します。

結果としてコンピューター名を変更できない、あるいは中途半端なかたちで変更されることがあるという問題が生じます。
この問題が発生しないようにするためには、変更対象のコンピューターに問題を生じさせるような SPN が含まれていないか事前に確認する必要があります。

SPN は、次の情報によって構成されております。
 - サービスの名前 (ポート番号)
- サービスを実行するコンピューター
- サービス アカウント
 
SPN の一般的なフォーマットは以下の通りです。

 サービス アカウント / サービスを実行するコンピューター:ポート番号 / 識別名

 SPN のフォーマットの詳細については、英語の資料となりますが、以下の URL にも記載がございますので、こちらも併せてご参照ください。
 
[タイトル] Name Formats for Unique SPNs
[URL] https://msdn.microsoft.com/en-us/library/ms677601(v=vs.85).aspx

以下に、どのような問題が発生するのか、具体的に示します。

1.  [コントロール パネル] の [システムとセキュリティ] - [システム] からコンピューター名を DOM1-HOST01 から DOM1-PC01 に変更します。

2. コンピューター名を変更し、[OK] をクリックし、名前変更を行おうとします。
以下のようなエラー メッセージが表示され、コンピューター名の変更に失敗します。

こちらの問題が発生している場合、コマンド プロンプト上から "netdom renamecomputername" コマンドによりコンピューター名の変更を行っても、同様に失敗します。

解決方法は?

1. 問題が発生しているコンピューターに登録されている SPN の一覧を確認し、本来ポート番号として、数字がくるべき個所に文字列がないか確認します。
コンピューターに登録されている SPN の一覧は、setspn コマンドで確認できます。

[問題のある SPN]

MSSQLSvc/DOM-HOST01.parsley01.local:SQLEXPRESSWINCXE

2. 問題を引き起こしている SPN を削除します。削除すると、無事、コンピューター名が変更できるようになります。

SPN の削除を行うコマンドは以下の通りです。

setspn -d <SPN> <コンピューター アカウント名>

- 参考情報
[タイトル] Setspn
[URL] https://technet.microsoft.com/ja-jp/library/cc731241(v=ws.10).aspx

- 初回投稿 : 2015 年 11 月 18 日