

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# DNS `_msdcs` 영역 현대화
<a name="hybrid_directory_msdcs"></a>

하이브리드 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`, Global Catalog 레코드, 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를 가리킵니다.

최신(독립 실행형 영역)  
Windows Server 2012 이상에서 기본값입니다. 이 설계에서 `_msdcs.<forest>`는 자체 AD 통합 영역으로 존재하며, 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 관리형 Microsoft AD Hybrid 디렉터리 생성을 시작하기 전에이 단계를 수행해야 합니다. 모든 단계는 도메인 관리자 및 DnsAdmins 권한이 있는 DNS 관리자 액세스 권한이 있는 기존 자체 관리형 도메인 컨트롤러에서 수행됩니다.

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 SRV 레코드를 다시 등록하도록 강제**

   이전 하위 도메인이 제거되고 새 독립 실행형 영역이 있는 경우 모든 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. **Verify**

   복제할 때까지 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 웹 사이트에서 [하위 도메인 DNS 레코드를 분할하고 전용 DNS 영역으로 마이그레이션하는 방법을](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분) 동안 지속될 수 있습니다.