Windows에서 도메인 컨트롤러를 배치하는 방법

이 문서에서는 Windows에서 Windows 기반 도메인에서 도메인 컨트롤러를 찾는 데 사용하는 메커니즘에 대해 설명합니다.

참고

이 문서는 Windows 2000에 적용됩니다. Windows 2000에 대한 지원은 2010년 7월 13일에 종료됩니다. Windows 2000 지원 종료 솔루션 센터는 Windows 2000에서 마이그레이션 전략을 계획하기 위한 시작점입니다. 자세한 내용은 Microsoft 지원 수명 주기 정책을 참조하세요.

적용 대상: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
원래 KB 번호: 247811

요약

이 문서에서는 DNS 스타일 이름과 플랫 스타일(NetBIOS) 이름으로 도메인을 찾는 프로세스를 자세히 설명합니다. 플랫 스타일 이름은 이전 버전과의 호환성을 위해 사용됩니다. 다른 모든 경우에서 DNS 스타일 이름은 정책 문제로 사용해야 합니다. 또한 이 문서에서는 도메인 컨트롤러 위치 프로세스 문제 해결을 다룹니다.

로케이터가 도메인 컨트롤러를 찾는 방법

이 시퀀스는 로케이터가 도메인 컨트롤러를 찾는 방법을 설명합니다.

  • 클라이언트(도메인 컨트롤러를 찾는 컴퓨터)에서 로케이터는 로컬 Netlogon 서비스에 대한 RPC(원격 프로시저 호출)로 시작됩니다. Locator DsGetDcName API(애플리케이션 프로그래밍 인터페이스) 호출은 Netlogon 서비스에서 구현됩니다.

  • 클라이언트는 도메인 컨트롤러를 선택하는 데 필요한 정보를 수집합니다. 그런 다음 DsGetDcName 호출을 사용하여 정보를 Netlogon 서비스에 전달합니다.

  • 클라이언트의 Netlogon 서비스는 수집된 정보를 사용하여 다음 두 가지 방법 중 하나로 지정된 도메인에 대한 도메인 컨트롤러를 조회합니다.

    • DNS 이름의 경우 Netlogon은 IP/DNS 호환 로케이터를 사용하여 DNS를 쿼리합니다. 즉, DsGetDcName은 DnsQuery 호출을 호출하여 SRV 레코드를 지정하는 적절한 문자열에 도메인 이름을 추가한 후 DNS에서 SRV(서비스 리소스) 레코드 및 "A" 레코드를 읽습니다.

    • Windows 기반 도메인에 로그온하는 워크스테이션은 일반적인 형식으로 SRV 레코드에 대한 DNS를 쿼리합니다.

      _service._protocol.DnsDomainName
      

      Active Directory 서버는 TCP 프로토콜을 통해 LDAP(Lightweight Directory Access Protocol) 서비스를 제공합니다. 따라서 클라이언트는 양식의 레코드에 대한 DNS를 쿼리하여 LDAP 서버를 찾습니다.

      _ldap._tcp. DnsDomainName

  • NetBIOS 이름의 경우 Netlogon은 Microsoft Windows NT 버전 4.0 호환 로케이터를 사용하여 도메인 컨트롤러 검색을 수행합니다. 즉, WINS와 같은 전송 관련 메커니즘을 사용합니다.

    Windows NT 4.0 이하에서 "검색"은 기본 도메인 또는 신뢰할 수 있는 도메인에서 인증을 위한 도메인 컨트롤러를 찾는 프로세스입니다.

  • Netlogon 서비스는 이름을 등록한 컴퓨터로 데이터그램을 보냅니다. NetBIOS 도메인 이름의 경우 데이터그램은 mailslot 메시지로 구현됩니다. DNS 도메인 이름의 경우 데이터그램은 LDAP UDP(사용자 데이터그램 프로토콜) 검색으로 구현됩니다. (UDP는 TCP/IP 프로토콜 제품군의 일부인 연결 없는 데이터그램 전송 프로토콜입니다. TCP는 연결 지향 전송 프로토콜입니다.)

  • 사용 가능한 각 도메인 컨트롤러는 데이터그램에 응답하여 현재 작동 중임을 나타내고 DsGetDcName에 정보를 반환합니다.

UDP를 사용하면 한 컴퓨터의 프로그램이 다른 컴퓨터의 프로그램에 데이터그램을 보낼 수 있습니다. UDP에는 발신자가 원격 컴퓨터의 여러 대상(프로그램)을 구분할 수 있는 프로토콜 포트 번호가 포함되어 있습니다.

  • 사용 가능한 각 도메인 컨트롤러는 데이터그램에 응답하여 현재 작동 중임을 나타내고 DsGetDcName에 정보를 반환합니다.
  • Netlogon 서비스는 나중에 요청이 검색 프로세스를 반복할 필요가 없도록 도메인 컨트롤러 정보를 캐시합니다. 이 정보를 캐시하면 동일한 도메인 컨트롤러를 일관되게 사용하고 Active Directory를 일관되게 볼 수 있습니다.

클라이언트가 네트워크에 로그온하거나 조인하는 경우 도메인 컨트롤러를 찾을 수 있어야 합니다. 클라이언트는 DNS 조회 쿼리를 DNS에 보내 도메인 컨트롤러를 찾습니다(클라이언트의 서브넷에서 가급적). 따라서 클라이언트는 양식의 레코드에 대한 DNS를 쿼리하여 도메인 컨트롤러를 찾습니다.

_LDAP._TCP.dc._msdcs.domainname

클라이언트가 도메인 컨트롤러를 찾은 후 LDAP를 사용하여 Active Directory에 대한 액세스 권한을 획득하여 통신을 설정합니다. 해당 협상의 일환으로 도메인 컨트롤러는 해당 클라이언트의 IP 서브넷을 기반으로 클라이언트가 있는 사이트를 식별합니다.

클라이언트가 가장 가까운(최적) 사이트에 없는 도메인 컨트롤러와 통신하는 경우 도메인 컨트롤러는 클라이언트 사이트의 이름을 반환합니다. 클라이언트가 이미 해당 사이트에서 도메인 컨트롤러를 찾으려고 시도한 경우 클라이언트는 최적이 아닌 도메인 컨트롤러를 사용합니다. 예를 들어 클라이언트는 DNS 조회 쿼리를 DNS로 보내 클라이언트의 서브넷에서 도메인 컨트롤러를 찾습니다.

그렇지 않으면 클라이언트는 새 최적의 사이트 이름으로 사이트별 DNS 조회를 다시 수행합니다. 도메인 컨트롤러는 일부 디렉터리 서비스 정보를 사용하여 사이트 및 서브넷을 식별합니다.

클라이언트가 도메인 컨트롤러를 찾은 후 도메인 컨트롤러 항목이 캐시됩니다. 도메인 컨트롤러가 최적의 사이트에 없는 경우 클라이언트는 15분 후에 캐시를 플러시하고 캐시 항목을 삭제합니다. 그런 다음 클라이언트와 동일한 사이트에서 최적의 도메인 컨트롤러를 찾으려고 시도합니다.

클라이언트가 도메인 컨트롤러에 대한 통신 경로를 설정한 후 로그온 및 인증 자격 증명을 설정할 수 있습니다. Windows 기반 컴퓨터에 필요한 경우 보안 채널을 설정할 수 있습니다. 그러면 클라이언트가 일반 쿼리를 수행하고 디렉터리에 대한 정보를 검색할 준비가 된 것입니다.

클라이언트는 로그온할 도메인 컨트롤러에 대한 LDAP 연결을 설정합니다. 로그온 프로세스는 보안 계정 관리자를 사용합니다. 통신 경로는 LDAP 인터페이스를 사용하며 클라이언트는 도메인 컨트롤러에 의해 인증됩니다. 따라서 클라이언트 계정이 확인되고 보안 계정 관리자를 통해 디렉터리 서비스 에이전트, 데이터베이스 계층, 마지막으로 ESE(Extensible Storage 엔진)의 데이터베이스로 전달됩니다.

도메인 로케이터 프로세스 문제 해결

도메인 로케이터 프로세스 문제를 해결하려면 다음을 수행합니다.

  1. 클라이언트와 서버 모두에서 이벤트 뷰어 확인합니다. 이벤트 로그에는 문제가 있음을 나타내는 오류 메시지가 포함될 수 있습니다. 이벤트 뷰어 보려면 시작을 선택하고 프로그램>관리 도구를 가리킨 다음 이벤트 뷰어 선택합니다. 클라이언트와 서버 모두에서 시스템 로그를 확인합니다. 또한 서버의 디렉터리 서비스 로그와 DNS 서버의 DNS 로그를 검사.

  2. 명령 프롬프트에서 명령을 사용하여 ipconfig /all IP 구성을 확인합니다.

  3. Ping 유틸리티를 사용하여 네트워크 연결 및 이름 확인을 확인합니다. IP 주소와 서버 이름을 모두 Ping합니다. 도메인 이름을 ping할 수도 있습니다.

  4. Netdiag 도구를 사용하여 네트워킹 구성 요소가 올바르게 작동하는지 확인합니다. 텍스트 파일에 자세한 출력을 보내려면 다음 명령을 사용합니다.

    netdiag /v >test.txt
    로그 파일을 검토하고, 문제를 찾고, 관련된 구성 요소를 조사합니다. 이 파일에는 다른 네트워크 구성 세부 정보도 포함되어 있습니다.

  5. 사소한 문제를 해결하려면 다음 구문과 함께 Netdiag 도구를 사용합니다.

    netdiag /fix.

  6. nltest /dsgetdc:domainname 명령을 사용하여 도메인 컨트롤러가 특정 도메인에 대해 위치할 수 있는지 확인합니다.

  7. NSLookup 도구를 사용하여 DNS 항목이 DNS에 올바르게 등록되었는지 확인합니다. 서버 호스트 레코드 및 GUID SRV 레코드를 확인할 수 있는지 확인합니다.

    예를 들어 레코드 등록을 확인하려면 다음 명령을 사용합니다.
    nslookup servername. childofrootdomain. rootdomain.com
    nslookup guid._msdcs. rootdomain.com

  8. 이러한 명령 중 하나가 성공하지 못하면 다음 방법 중 하나를 사용하여 DNS를 사용하여 레코드를 다시 등록합니다.

    • 호스트 레코드 등록을 강제로 적용하려면 ipconfig /registerdns를 입력합니다.
    • 도메인 컨트롤러 서비스 등록을 강제하려면 Netlogon 서비스를 중지하고 시작합니다.
  9. 도메인 컨트롤러 문제를 검색하려면 명령 프롬프트에서 DCdiag 유틸리티를 실행합니다. 유틸리티는 도메인 컨트롤러가 올바르게 실행되고 있는지 확인하기 위해 많은 테스트를 실행합니다. 이 명령을 사용하여 결과를 텍스트 파일로 보냅니다. dcdiag /v >dcdiag.txt

  10. Ldp.exe 도구를 사용하여 도메인 컨트롤러에 연결하고 바인딩하여 적절한 LDAP 연결을 확인합니다.

  11. 특정 도메인 컨트롤러에 문제가 있다고 의심되는 경우 Netlogon 디버그 로깅을 켜는 것이 유용할 수 있습니다. 다음 명령을 nltest /dbflag:0x2000ffff입력하여 NLTest 유틸리티를 사용합니다. 그러면 정보가 Netlogon.log 파일의 디버그 폴더에 기록됩니다.

  12. 그래도 문제를 격리하지 않은 경우 네트워크 모니터를 사용하여 클라이언트와 도메인 컨트롤러 간의 네트워크 트래픽을 모니터링합니다.

참조

자세한 내용은 Windows 리소스 키트, 10장, "Active Directory 진단, 문제 해결 및 복구"를 참조하세요.