Windows Server 2016 の SRV レコードが重複する事象について
こんにちは。Windows サポート チームの矢澤です。
Windows Server 2016 にてドメイン コントローラーを構築した際に、大文字と小文字の SRV レコードが重複して登録される事象についてご案内いたします。
1. 事象
Windows Server 2012 R2 以前のドメイン環境に大文字が一文字でも含まれるホスト名の Windows Server 2016 のドメイン コントローラーを追加すると、大文字と小文字の SRV レコードが登録されます。また、大文字が含まれる SRV レコードを [DNS の管理] コンソールから削除しても再度同じレコード追加されて削除ができません。
2. 原因
Windows Server 2016 がドメイン コントローラーに昇格する時に Windows Server 2012 R2 以前のドメイン コントローラーに自身の SRV レコードが全て小文字として追加されます。同様に Windows Server 2016 自身へ自身の SRV レコードを追加する際には、大文字と小文字を区別したホスト名がそのまま登録されるため、大文字が含まれる SRV レコードが作成されます。それぞれのドメイン コントローラーに登録された SRV レコードの情報が複製されることで SRV レコードが重複して登録されることになります。また、[DNS の管理] コンソールから大文字を含む SRV レコードを削除してもActive Directory のデータベースからは削除されないため残存し続けます。
3. 影響
Windows では大文字と小文字を別の文字として扱うことは基本的にはございませんので大文字と小文字の SRV レコードが存在することの影響はありません。そのため、本事象を無視してご利用いただくことの問題はございませんが、以下の点については多少影響がございますので、回避策を実施するかどうかの検討をお願いします。
・Windows Server 2012 R2 以前の OS と混在している環境においては Windows Server 2016 のドメイン コントローラーに認証が偏ることがあります。
例えば、Windows Server 2012 R2 が 1 台、Windows Server 2016 が 1 台の環境では 1:1 で認証が分散されますが、Windows Server 2016 の SRV レコードが 1 つ増えますので論理的には 1:2 で Windows Server 2016 のドメイン コントローラーに認証が偏ることが考えられます。
・Windows Server 2016 のドメイン コントローラーを降格した場合には、大文字を含む SRV レコードが残存し続けます。
例えば、降格したサーバーがメンバーサーバーとして存在している場合には、SRV レコードが残存していることにより降格したサーバーに認証要求が発生し、次のドメイン コントローラーを探索するまでに 0.4 秒の遅延が発生します。
4. 回避策
予め Windows Server 2016 のホスト名を全て小文字とした状態でドメイン コントローラーに昇格することで本事象は発生しませんが、既に本事象が発生している環境においては以下の手順でホスト名を小文字に変更して再昇格を実施ください。既に Windows Server 2016 を降格して再昇格の予定がない場合には 4-2 のみ実施ください。
4-1. Windows Server 2016 のドメイン コントローラーを通常降格する ドメイン コントローラー降格手順 (Windows Server 2012) を参照いただき、Windows Server 2016 の通常降格を実施します。Windows Server 2016 でも手順は変わりありません。
4-2. ADSI エディターから SRV レコードを削除して再登録する
降格した Windows Server 2016 のドメイン コントローラーのレコードを削除する場合には、[DNS の管理] コンソールからではなく、直接 Active Directory のデータベースから削除します。SRV レコードの再登録が全て完了するまではドメイン内のクライアントがドメイン コントローラーを探索することができなくなりますので、メンテナンス時間を設けて作業を実施ください。
1. レコードが登録されているゾーンの記憶域のタイプをコマンド プロンプトの dnscmd /enumzonesコマンドにて確認します。
※記憶域のタイプによって、AD 上の以下のデータベースに DNS の情報が保存されますので、ADSI エディターにて記憶域に接続します。
AD-Legacy | AD-Domain | AD-Forest |
CN=System,DC=<ドメイン名> | DC=DomainDnsZones,DC=<ドメイン名> | DC=ForestDnsZones,DC=<ドメイン名> |
2. ADSI エディターを開き、SRV レコード が格納されている記憶域に接続し、[CN=MicrosoftDNS] – [<ゾーン名>] を開きます。
3. SRV レコードである [_gc._tcp] から [_ldap._tcp.ForestDnsZones] まで選択し (サイト名の先頭に F 以降が含まれる場合にはそこまで選択し) 削除します。
4. 同様に AD-Foreset 記憶域に存在している _msdcs で始まるゾーンを ADSI エディターにて開きます。
5. SRV レコードである [_kerberos._tcp.dc] から [_ldap._tcp.pdc] まで選択し (サイト名の先頭に P 以降が含まれる場合にはそこまで選択し) 削除します。
6. 稼働しているドメイン コントローラーにてコマンド プロンプトを開き、 dnscmd /zonereload <ゾーン名> && dnscmd /zonereload _msdcs.<ゾーン名> && net stop netlogon && net start netlogon コマンドを実行して、稼働しているドメイン コントローラーの SRV レコードを再登録します。同様に稼働しているドメイン コントローラー全てでコマンドを実行します。
※ドメイン コントローラーの台数が多い場合には、メンテナンス時間を設けていただき、15 分間隔で自動的に netlogon サービスが SRV レコードを再登録するまで待ちます。
7. [DNS の管理] コンソールから降格した Windows Server 2016 の SRV レコードが削除されていることを確認します。
4-3. Windows Server 2016 のホスト名を全て小文字に変更する
大文字が含まれるホスト名を全て小文字に変更するだけでは [OK] ボタンが活性化しませんので、FQDN のドメイン名を NetBIOS ドメイン名に変更することで [OK] ボタンを活性化させます。
左図:変更前 右図:変更後
4-4. Windows Server 2016 をドメイン コントローラーとして再昇格する ドメイン コントローラー降格手順 (Windows Server 2012) の 「C. ドメイン コントローラーの再昇格」を参照いただき、Windows Server 2016 の再昇格を実施します。Windows Server 2016 でも手順は変わりありません。
5. 対処策
本事象の修正プログラムのリリースは 2018 年 7 月現在では未定となります。
最新情報が入手でき次第本 blog をアップデートいたします。