Active Directory 네트워크의 클라이언트 시스템은 어떤 사이트에서 상주합니까?


21

Windows 관리를 시작하기위한 프레젠테이션을 만들면서 더 빨리 묻지 않은 것에 대해 놀랐습니다.

나는 그것을 알고있다 :

  • AD는 사이트에 논리적으로 설정되어 복제를 지원하고 클라이언트 컴퓨터와 도메인 서비스 간의 도메인에 필요한 통신의 대기 시간을 줄입니다.
  • 사이트는 적용된 서브넷으로 정의됩니다.
  • _msdcs 하위 도메인에는 일반 조회 (_tcp) 및 사이트 별 조회 (_sites)에 대한 SRV 레코드 계층이 포함됩니다.
  • 컴퓨터는 어떻게 든 자신의 사이트를 알고 있거나 도메인 컨트롤러가 DNS의 마법을 투명하게 결정합니까?

이 블로그 게시물 은 AD 네트워크의 클라이언트 컴퓨터가 자신이 속한 사이트를 "알 수"있음을 암시합니다. 내 질문은 이것이 사실이라면 어떻게 알아 내는가하는 것입니다.

클라이언트 자체를 모르는 경우 DC는 해당 클라이언트 컴퓨터에 가장 가까운 AD 서비스를 선택하는 과정에서 머신을 어떻게 지원합니까?

답변:


29

대답은 클라이언트가 Active Directory를 처음 인증 할 때 자신이 속한 사이트를 알 수 없다는 것입니다.

도메인에 처음 가입 할 때 클라이언트는 일반 DNS 및 LDAP 쿼리를 수행하고 도메인의 모든 도메인 컨트롤러 목록을 가져 와서 LDAP 바인딩을 시도하여 목록에 내려 가서 첫 번째로 성공적인 DC 바인딩을 수행합니다. 인증되는 첫 번째 DC.

클라이언트가 도메인에 가입하면 Active Directory는 클라이언트에게 자신이 속한 사이트를 알려줍니다. 관리자가 클라이언트의 IP 서브넷을 AD 사이트 및 서비스에 넣고 사이트에 연결했기 때문에 Active Directory는이를 알고 있습니다.

Active Directory는 클라이언트에게 AD 사이트가 무엇인지 알려주고 클라이언트는이를 자신의 레지스트리에 HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteName레지스트리 값으로 저장합니다 . 이렇게하면 다음에 클라이언트가 부팅 될 때 해당 사이트에있는 DC 만 가져 오기 위해 어떤 사이트 별 DNS 쿼리를 만들어야하는지 알 수 있습니다.

물론 전체 동작은 KB247811에 설명되어 있지만 직접 확인하려면 Wireshark 또는 NetMon을 실행하고 패킷 추적을 수행 한 다음 추적이 실행되는 동안 도메인에 가입 할 수 있습니다. 정확한 DNS 쿼리 및 LDAP 바인드 순서가 표시됩니다. 클라이언트가 AD에 속한 사이트를 알려주기 때문에 후속 DNS 쿼리 및 LDAP 바인드는 사이트 별 하위 영역에 수행됩니다.

Netlogon 서비스는 주기적으로 AD 사이트 정보를 새로 고치므로 다른 네트워크로 이동하면 클라이언트가 새 사이트를 자동으로 가져옵니다. HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeout레지스트리 값 에서 조정할 수 있습니다 . ( 링크 )


가! 당신은 나를 이길!
MDMarra

4
@MDMarra 그것은 드문 발생 아저씨입니다.
Ryan Ries

호기심으로 netlogon 검사가 다시 수행됩니까? 예를 들어, Site1에있는 시스템이 있고 개인과 장비를 Site2로 옮긴 경우에도 기계는 여전히 Site1을 식별하고 계속 대화합니까?
피터 그레이스

실제로 나는 그것을 다시 가져갑니다. Netlogon은 다시 시작하지 않고도 동적 사이트 이름을 업데이트 할 수 있습니다. technet.microsoft.com/en-us/library/cc958488.aspx
Ryan Ries

@RyanRies 답장 텍스트에 팝업을 넣으려면 훌륭합니다. 그렇지 않으면 답변을 편집하여 통합 할 것입니다.
피터 그레이스

8

실제로 여러 관련 기능 / API가 있습니다. 비록 길지만 실제로는 더 흥미로운 Active Directory 읽기 중 일부입니다.

아래 설명에 관계없이 알아야 할 두 가지가 있습니다.

  • 로컬 사이트의 DC가 어떤 이유로 응답하지 않으면 클라이언트가 도메인의 모든 도메인 컨트롤러에 접속할 것으로 예상됩니다. 이것은 정상이며 항상 기본 동작입니다. 때때로 왜 발생하는지 명확하지 않습니다.

  • 차선책 일 수 있습니다. 다음 시나리오를 고려하십시오. 뉴욕시 (허브 / 데이터 센터-빠른), 로스 앤젤레스 (NYC로 빠른) 및 카자흐스탄 (NYC로-매우 빠름)의 세 사이트. LA 사이트의 고객이 어떤 이유로 든 로컬 DC에 연락 할 수없는 경우 카자흐스탄에서 인증 할 수 없습니다.

몇 가지 솔루션이 있습니다. 둘 중 하나 또는 둘 다 수행 할 수 있습니다.

  • Microsoft는 TryNextClosestSite라는 그룹 정책 / 레지스트리 설정을 만들었습니다. 즉, LA 클라이언트는 지구를 로밍하기 전에 NYC를 찾아 DC를 찾아야합니다. 훌륭한! 8 년이 걸렸지 만 마침내 Vista / 2008에서 그 결과를 얻었습니다. 기본적으로 활성화되어 있지 않은 경우이를 활성화하려면 GPO를 만들어야합니다.

  • DC가 다른 사이트에서 클라이언트에게 서비스를 제공하기를 원하지 않는 스포크 사이트의 경우 등록하지 않아야 할 DNS 레코드를 지정하는 그룹 정책 / 레지스트리 설정을 만들 수 있습니다. 이것을 DNS 니모닉이라고합니다.


가장 가까운 사이트에서 도메인 컨트롤러 찾기 (DsGetSiteName API)
http://technet.microsoft.com/en-us/library/cc978016.aspx

IP 주소를 사이트 이름에 매핑

"Net Logon을 시작하는 동안 각 도메인 컨트롤러의 Net Logon 서비스는 구성 컨테이너의 사이트 개체를 열거합니다. 각 도메인 컨트롤러의 Net Logon은 사이트 개체에 대한 변경 사항을 통보받습니다. Net Logon은 사이트 정보를 사용하여 IP 주소를 사이트 이름에 매핑하는 데 사용되는 메모리 내 구조.

"도메인 컨트롤러를 검색하는 클라이언트가 DNS에서 도메인 컨트롤러 IP 주소 목록을 수신하면 클라이언트는 도메인 컨트롤러를 쿼리하기 시작하여 사용 가능한 도메인 컨트롤러가 무엇인지 알아냅니다. Active Directory는 다음을 포함하는 쿼리를 차단합니다. 클라이언트의 IP 주소를 도메인 컨트롤러의 Net Logon으로 전달 Net Neton은 클라이언트 IP 주소와 가장 일치하는 서브넷 개체를 찾아서 서브넷-사이트 매핑 테이블에서 클라이언트 IP 주소를 조회합니다. 다음 정보를 반환합니다.

  • 클라이언트가있는 사이트의 이름 또는 클라이언트 IP 주소와 가장 일치하는 사이트의 이름입니다.

  • 현재 도메인 컨트롤러가있는 사이트의 이름입니다.

  • 검색된 도메인 컨트롤러가 클라이언트와 가장 가까운 사이트에 있는지 (비트가 설정되어 있는지) 또는 없는지 (비트가 설정되지 않았는지)를 나타내는 비트입니다.

"도메인 컨트롤러는 정보를 클라이언트에 반환합니다. 응답에는 도메인 컨트롤러를 설명하는 다양한 다른 정보도 포함됩니다. 클라이언트는 정보를 검사하여 더 나은 도메인 컨트롤러를 찾으려고하는지 여부를 결정합니다. 결정은 다음과 같이 결정됩니다.

"반환 된 도메인 컨트롤러가 가장 가까운 사이트에 있으면 (반환 된 비트가 설정 됨) 클라이언트가이 도메인 컨트롤러를 사용합니다.

"클라이언트가 도메인 컨트롤러가 클라이언트가 있다고 주장하는 사이트에서 도메인 컨트롤러를 이미 찾으려고하면 클라이언트는이 도메인 컨트롤러를 사용합니다.

"도메인 컨트롤러가 가장 가까운 사이트에 있지 않으면 클라이언트는 사이트 정보를 업데이트하고 사이트에서 새 도메인 컨트롤러를 찾기 위해 새 DNS 쿼리를 보냅니다. 두 번째 쿼리가 성공하면 새 도메인 컨트롤러가 사용됩니다. 두 번째 쿼리가 실패하면 원래 도메인 컨트롤러가 사용됩니다.

"컴퓨터가 쿼리하는 도메인이 컴퓨터가 가입 한 도메인과 동일한 경우 컴퓨터가있는 사이트 (도메인 컨트롤러가보고 한 사이트)는 컴퓨터 레지스트리에 저장됩니다. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters의 DynamicSiteName 레지스트리 항목에 사이트 이름이 있습니다. 따라서 DsGetSiteName API는 컴퓨터가있는 사이트를 반환합니다. "

DsGetDcName 함수
http://msdn.microsoft.com/en-us/library/ms675983%28VS.85%29.aspx

로케이터 유형
http://technet.microsoft.com/en-us/library/cc978019.aspx

디렉토리 서비스 기능
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx

Active Directory에 대한 DNS 지원 작동 방식
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx

클라이언트 사이트 외부에있는 도메인 컨트롤러의 위치를 ​​최적화하는 방법
http://support.microsoft.com/kb/306602

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.