サーバーの移行やホスト名の変更といった場合、KerberosとDNSをスムーズに運用しようとすると、少々面倒な作業になることがあります。主な問題は?AレコードやDNSエイリアス(CNAME)を追加するだけでは、Kerberos認証がうまく動作しないということです。そのため、新しいホスト名がActive Directory内のすべてのSPNエントリを更新していない場合、Kerberosによってアクセスがブロックされ、問題が発生する可能性があります。幸いなことに、認証を中断することなくこれを実現する方法はいくつかありますが、どれもワンクリックで解決できるものではありません。このガイドでは、一般的な方法に加え、組み込みツールがないWindowsバージョンをお使いの場合のオプションもいくつか紹介します。
サーバー移行時のホスト名とKerberosの問題を修正する方法
方法 1: DNS マネージャーと netdom.exe を使用する (サーバー OS に最適)
まず、典型的な方法は、DNSにホスト名を追加してからActive Directoryドメインに登録することです。DNSはここで少しデリケートな問題を抱えており、CNAMEを追加するだけではKerberosがサービスの新しい名前を認識しません。そのため、Active Directoryにホスト名を登録することが重要です。Windows Serverでこれを行うには、DNSマネージャー(「dnsmgmt.msc実行」と入力)を起動し、新しいホスト名を既存のホスト名に関連付けるCNAMEレコードを作成します。その後、netdom.exeを使用すると、新しいホスト名をActive Directoryに登録し、SPNを適切に設定するのが簡単になります。
- 管理者権限でコマンド プロンプトまたは PowerShell を開きます (管理者として実行)。
- 走る:
netdom computername your-computer-name /ADD new.fqdn.example.com - 次にDNSを再登録します。
ipconfig /registerdns
このプロセスは、DNSにCNAMEを登録し、ADオブジェクトを新しいホスト名で更新し、SPNエントリを調整してKerberosの不具合を防ぎます。環境によっては、この処理が初回で失敗するか、マシンの再起動やgpupdate /forceポリシーのプッシュが必要になる場合があります。Windows netdom10や11のクライアントなど、この処理がない場合には、DNSを手動で更新し、レジストリキーを調整する必要があります。
方法2: 追加のホスト名のレジストリを手動で更新する
Windows 10/11 を使い続けていて、netdom.exeこの設定が利用できない場合は、以下の手順を実行する必要があります。レジストリをいじっているような感じですが、Kerberos が認識するホスト名やエイリアスを追加するには、少なくとも一時的にはこれが唯一の方法です。全体的な考え方としては、OS が追加の名前を認識できるようにレジストリキーをいくつか作成または編集し、DNS を再登録することです。
- HKLM\System\CurrentControlSet\Services\DNSCache\Parameters\に移動します。
- AlternateComputerNamesという新しいREG_Multi_SZ値を作成します。
- 新しい FQDN または NetBIOS 名を 1 行に 1 つずつ追加します。
ipconfig /registerdns管理者コマンドプロンプトで実行してDNSレコードを更新する- Kerberos SPN が正しいことを確認するには、次のコマンドを実行します。
setspn.exe -A host/newname wks11
さらに高度な設定を行いたい場合は、NetBIOS名を追加するために、HKLM\System\CurrentControlSet\Services\LanManServer\Parameters内にOptionalNamesという新しいREG_Multi_SZを作成します。その後、LANMANサービスを再起動します。これにより、従来のSMB名前解決が可能になります。net stop lanmanserver && net start lanmanserver
オプション: 厳密な名前チェックを無効にする (クイック & ダーティ)
他の方法が全く機能しない場合、特にADでSPNを更新できない場合は、名前のチェックを完全に無効にすることを検討してください。HKLM \System\CurrentControlSet\Services\LanmanServer\ParametersにDisableStrictNameCheckingというDWORD値を作成し、値を1に設定します。これは基本的に、SMBアクセスにおける名前の不一致を無視するようにWindowsに指示するものです。長期的にはそれほど安全ではありませんが、どうしてもという場合には役立つかもしれません。
もちろん、変更後は再起動をお勧めします。また、この変更により一部のKerberos保護がバイパスされる可能性があるため、慎重に使用してください。
正直言って、これらの設定をいじるのはかなり面倒です。変更後に再起動するだけで、アップデートが確実に適用される場合もあります。それでもうまくいかない場合は、DNSエントリを再確認し、SetSPNツールのドキュメントでSPNが正しいことを確認してから、作業を進めてください。Windowsは当然ながら、必要以上に設定を難しくしているからです。