Там на самом деле несколько взаимосвязанных функций / API. Несмотря на то, что они длинные, на самом деле это некоторые из наиболее интересных чтений Active Directory.
Независимо от объяснения, приведенного ниже, вам необходимо знать о двух вещах:
Если DC на локальном сайте не отвечает по какой-либо причине, ожидается, что клиент свяжется с любым контроллером домена в домене. Это нормально, и это всегда было поведением по умолчанию. Иногда неясно, почему это происходит.
Это может быть неоптимальным. Рассмотрим следующий сценарий: три сайта: Нью-Йорк (хаб / центр обработки данных - быстро), Лос-Анджелес (говорит с Нью-Йорком - быстро) и Казахстан (говорит с Нью-Йорком - определенно не быстро). Если ваш клиент на сайте LA по какой-либо причине не может связаться с местным DC, не исключено, что он будет аутентифицироваться в Казахстане.
Есть несколько решений. Вы можете сделать один или оба.
Microsoft создала групповую политику / параметр реестра с именем TryNextClosestSite. Это означает, что клиент из Лос-Анджелеса должен попробовать Нью-Йорк, прежде чем бродить по планете в поисках DC. Brilliant! Прошло восемь лет, но мы наконец-то получили это с Vista / 2008. Помните, по умолчанию эта опция не включена, вам нужно создать объект групповой политики, чтобы включить это.
Для подчиненных сайтов, где вы действительно не хотите, чтобы DC обслуживал клиентов на других сайтах, вы можете создать параметр групповой политики / реестра, который указывает, какие записи DNS не должны регистрироваться. Это называется DNS Mnemonics.
Поиск контроллера домена на ближайшем сайте (API DsGetSiteName)
http://technet.microsoft.com/en-us/library/cc978016.aspx
Сопоставление IP-адресов с именами сайтов
«Во время запуска Net Logon служба Net Logon на каждом контроллере домена перечисляет объекты сайта в контейнере конфигурации. Net Logon на каждом контроллере домена также уведомляется о любых изменениях, внесенных в объекты сайта. Net Logon использует информацию сайта для создания структура в памяти, которая используется для сопоставления IP-адресов с именами сайтов.
«Когда клиент, который ищет контроллер домена, получает список IP-адресов контроллера домена от DNS, клиент начинает по очереди запрашивать контроллеры домена, чтобы выяснить, какой контроллер домена доступен и подходит. Active Directory перехватывает запрос, который содержит IP-адрес клиента и передает его в Net Logon на контроллере домена. Net Logon ищет IP-адрес клиента в своей таблице сопоставления подсети и сайта, находя объект подсети, который наиболее точно соответствует IP-адресу клиента, а затем возвращает следующую информацию:
Имя сайта, на котором находится клиент, или сайта, который наиболее точно соответствует IP-адресу клиента.
Имя сайта, на котором находится текущий контроллер домена.
Бит, который указывает, находится ли найденный контроллер домена (бит установлен) или нет (бит не установлен) на сайте, ближайшем к клиенту.
«Контроллер домена возвращает информацию клиенту. Ответ также содержит различные другие данные, которые описывают контроллер домена. Клиент проверяет информацию, чтобы определить, следует ли попытаться найти лучший контроллер домена. Решение принимается следующим образом:
«Если возвращенный контроллер домена находится в ближайшем узле (возвращенный бит установлен), клиент использует этот контроллер домена.
«Если клиент уже пытался найти контроллер домена на сайте, на котором контроллер домена утверждает, что клиент находится, клиент использует этот контроллер домена.
«Если контроллер домена не находится на ближайшем сайте, клиент обновляет информацию своего сайта и отправляет новый DNS-запрос, чтобы найти новый контроллер домена на сайте. Если второй запрос успешен, используется новый контроллер домена. Если Второй запрос не выполняется, используется оригинальный контроллер домена.
«Если домен, к которому запрашивается компьютер, совпадает с доменом, к которому присоединен компьютер, сайт, на котором находится компьютер (по сообщению контроллера домена), сохраняется в реестре компьютера. Клиент сохраняет это имя сайта в записи реестра DynamicSiteName в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters. Следовательно, API-интерфейс DsGetSiteName возвращает сайт, на котором находится компьютер. "
Функция 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/subscription/ms675900%28v=vs.85%29.aspx
Как работает поддержка DNS для Active Directory
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx
Как оптимизировать расположение контроллера домена, который находится за пределами сайта клиента
http://support.microsoft.com/kb/306602