

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# DNS `_msdcs` ゾーンのモダナイゼーション
<a name="hybrid_directory_msdcs"></a>

Hybrid AD ディレクトリを作成する前に DNS `_msdcs` ゾーンをモダナイズすることが必須の前提条件です。最新の Active Directory 環境では、 `_msdcs.<ForestRoot>`は、ForestDnsZones アプリケーションパーティションに保存されている別のフォレスト全体のレプリケートゾーンとして作成されます。もともと Windows NT 4.0 または Windows 2000 上に構築された (その後アップグレードされた) レガシー環境では、 `_msdcs`は決して分離されず、単に親ドメインゾーンファイル内の標準サブドメイン (サブフォルダ) としてのみ存在します。

DNS がインストールされた状態で新しいドメインコントローラーが昇格すると、そのインストールプロセスは専用の`_msdcs.<ForestRoot>`アプリケーションパーティションを検索します。スタンドアロンゾーンは見つからないため、ローカルに新しい空白`_msdcs`ゾーンが自動的に作成され、その名前空間に対する権限が要求されます。これにより、新しい DC が親ゾーンのレガシーサブドメインレコードを読み取るのが完全にオフになり、NS 委任がそれ自体を指すように更新されます。

その結果、アーキテクチャの競合が発生します。ドメインに参加しているすべてのクライアントは、空の`_msdcs`ゾーンを持つ DC を参照されるようになりましたが、実際の DC ロケーターレコード (`_ldap._tcp.dc._msdcs`、`_kerberos._tcp.dc._msdcs`、グローバルカタログレコード、DC GUID CNAMEs) は、クライアントがアクセスできない古い親ゾーンのサブドメインでストランドされたままになります。これにより、Kerberos 認証、LDAP 検出、サイト対応の DC ロケーションがフォレスト全体で中断されます。

## レガシーゾーンとモダン`_msdcs`ゾーンの設計
<a name="hybrid_directory_msdcs_legacy_vs_modern"></a>

レガシー (委任サブドメイン)  
Windows Server 2000、2003、2008、および 2008 R2 のデフォルト。この設計では、 は親ゾーンの下に委任サブドメインとして`_msdcs`存在します。親ゾーンの NS レコードは、`_msdcs`名前空間の権威として特定の DCs を指します。

Modern (スタンドアロンゾーン)  
Windows Server 2012 以降のデフォルト。この設計では、 は独自の AD 統合ゾーンとして`_msdcs.<forest>`存在し、ForestDnsZones アプリケーションパーティションを介してフォレスト内のすべての DCs にレプリケートされます。すべての DCs は権威があり、レコードを直接読み書きできます。

## `_msdcs` ゾーン設計を特定する方法
<a name="hybrid_directory_msdcs_identify"></a>

`_msdcs` ゾーン設計を特定するには、任意のドメインコントローラーで以下を実行します。

1. **すべての DNS ゾーンを一覧表示し、 を探します`_msdcs`。**

   ```
   Get-DnsServerZone | Where-Object { $_.ZoneName -like "*_msdcs*" }
   ```

   **最新の設計 (アクションは不要)** — プライマリゾーンとして`_msdcs.<forest-name>`表示されます。

   ```
   ZoneName                          ZoneType   IsAutoCreated  IsDsIntegrated  IsReverseLookupZone  IsSigned
   --------                          --------   -------------  --------------  -------------------  --------
   _msdcs.premier.local              Primary    False          True            False                False
   ```

   **レガシー設計 (変換が必要)** — ゾーンリストには表示`_msdcs.<forest-name>`されません。代わりに、 はフォレストゾーンの委任サブドメインとしてのみ`_msdcs`存在します。これを確認するには、委任 NS レコードを確認します。

   ```
   Get-DnsServerResourceRecord -ZoneName "<forest-name>" -Name "_msdcs" -RRType NS
   ```

   NS レコードが返された場合、環境は従来の委任サブドメイン設計を使用します。

1. **追加の検証 — ゾーンタイプを確認します。**

   ```
   # This will succeed on modern design
   Get-DnsServerZone -Name "_msdcs.<forest-name>"
   
   # If you get an error like "Zone _msdcs.<forest-name> was not found", you have the legacy design
   ```

## DNS `_msdcs` ゾーンをモダナイズする方法
<a name="hybrid_directory_msdcs_modernize"></a>

これらのステップは、 AWS Managed Microsoft AD Hybrid ディレクトリの作成を開始する前に実行する必要があります。すべてのステップは、ドメイン管理者および DnsAdmins 権限を持つ DNS Manager アクセスを持つ既存のセルフマネージドドメインコントローラーで実行されます。

1. **スタンドアロン`_msdcs`ゾーンを作成する**

   既存のセルフマネージド型ドメインコントローラーの場合:

   ```
   dnscmd localhost /ZoneAdd "_msdcs.<forest-name>" /DsPrimary /dp /forest
   ```

   これにより、フォレスト全体のレプリケーションスコープを持つ専用の AD 統合ゾーン`_msdcs.<forest-name>`として が作成されます。フォレスト内のすべての DCs は、ForestDnsZones パーティションを介してコピーを受け取ります。

   AD レプリケーションが伝達されるまで待ちます。

   ```
   repadmin /syncall /AeD
   ```

   ゾーンが存在することを確認します (複数の DCsで実行）。

   ```
   Get-DnsServerZone -Name "_msdcs.<forest-name>"
   ```

1. **親ゾーンから古い委任を削除する**

   古い`_msdcs`サブドメインノードとそのレコードは、親ゾーンにまだ存在します。これらを削除して、DNS クエリが新しいスタンドアロンゾーンからのみ処理されるようにする必要があります。

   ```
   # Remove the _msdcs subtree (NS delegation + all child records) from the parent zone
   dnscmd localhost /NodeDelete <forest-name> _msdcs /tree /f
   ```
**重要**  
このステップは、ステップ 1 でスタンドアロンゾーンが正常に作成されたことを確認した後にのみ実行します。ステップ 1 をスキップすると、古いレコードを削除するとすぐに停止します。

1. **すべての DCsを強制する**

   古いサブドメインが削除され、新しいスタンドアロンゾーンが設定されると、すべての DCsロケーターレコードを新しいゾーンに再登録する必要があります。

   オンプレミスのすべてのドメインコントローラーで以下を実行します。

   ```
   # Flush DNS cache
   ipconfig /flushdns
   
   # Restart Netlogon — this triggers re-registration of all SRV, CNAME, and A records
   net stop netlogon
   net start netlogon
   
   # Force host record registration
   ipconfig /registerdns
   ```

1. **検証**

   レプリケーションまで 5～10 分待ってから、以下を確認します。

   新しいスタンドアロンゾーンに入力されたレコードを確認します。

   ```
   Get-DnsServerResourceRecord -ZoneName "_msdcs.<forest-name>" -RRType SRV
   ```

   すべてのオンプレミス DCs の `_ldap._tcp.dc``_kerberos._tcp.dc`、`_ldap._tcp.gc`、、およびサイト固有のレコードが表示されます。

   DNS 解決がend-to-endで機能することを確認します。

   ```
   Resolve-DnsName "_ldap._tcp.dc._msdcs.<forest-name>" -Type SRV
   Resolve-DnsName "_kerberos._tcp.dc._msdcs.<forest-name>" -Type SRV
   ```

   すべてのオンプレミス DCsが結果に表示されます。

   古い委任が親ゾーンから削除されていることを確認します。

   ```
   Get-DnsServerResourceRecord -ZoneName "<forest-name>" -Name "_msdcs" -RRType NS -ErrorAction SilentlyContinue
   ```

   これにより何も返されません。

   DNS `_msdcs` ゾーンのモダナイズの詳細については、Microsoft Core Infrastructure and Security Blog ウェブサイトの「How [to Split and Migrate Child Domain DNS Records to a Dedicated DNS Zone](https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/how-to-split-and-migrate-child-domain-dns-records-to-a-dedicated-dns-zone/255534)」を参照してください。

## トラブルシューティング
<a name="hybrid_directory_msdcs_troubleshooting"></a>

ステップ 3 の後に新しいスタンドアロンゾーンが空のままの場合:

レコードがすでに存在すると思われる場合、Netlogon は再登録しないことがあります。クリーン再登録を強制します。

```
# Delete the Netlogon DNS registration cache
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DnsAvoidRegisterRecords" -ErrorAction SilentlyContinue

# Restart Netlogon again
net stop netlogon
net start netlogon
```

レコードがまだ表示されない場合は、古い親ゾーン (バックアップまたはそれらをキャッシュした他の DCs から使用可能) の値を使用して、重要なレコードを手動で作成します。

```
# Example: SRV record for LDAP DC locator
Add-DnsServerResourceRecord -ZoneName "_msdcs.<forest-name>" -Name "_ldap._tcp.dc" -Srv -DomainName "dc1.<forest-name>" -Priority 0 -Weight 100 -Port 389

# Example: SRV record for Kerberos DC locator
Add-DnsServerResourceRecord -ZoneName "_msdcs.<forest-name>" -Name "_kerberos._tcp.dc" -Srv -DomainName "dc1.<forest-name>" -Priority 0 -Weight 100 -Port 88
```

変換後もアプリケーションが失敗している場合:

影響を受けるアプリケーションサーバーとクライアントマシンの DNS キャッシュをフラッシュします。

```
ipconfig /flushdns
```

負の DNS キャッシュエントリ (停止期間から) は、有効期限が切れるまで最大 900 秒 (15 分) 保持される場合があります。