Как узнать к какому контроллеру домена подключен компьютер

Обновлено: 05.07.2024

В этой статье описывается механизм, используемый Windows для обнаружения контроллера домена в Windows домене.

Эта статья применяется к Windows 2000. Поддержка Windows 2000 заканчивается 13 июля 2010 г. Центр Windows 2000 года является отправной точкой для планирования стратегии миграции с 2000 г. Windows 2000 г. Дополнительные сведения см. в политике жизненного цикла поддержки Майкрософт.

Применяется к: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
Исходный номер КБ: 247811

Сводка

В этой статье подробно извещен процесс размещения домена в стиле DNS и его имя в плоском стиле (NetBIOS). Имя плоского стиля используется для обратной совместимости. Во всех остальных случаях имена в стиле DNS должны использоваться в качестве политики. В этой статье также решается вопрос устранения неполадок в процессе расположения контроллера домена.

Как локатор находит контроллер домена

В этой последовательности описывается, как локатор находит контроллер домена:

На клиенте (компьютере, на который находится контроллер домена) локатор запущен в качестве удаленного вызова процедуры (RPC) в локализовую службу Netlogon. Вызов интерфейса программирования приложений Locator DsGetDcName (API) реализуется службой Netlogon.

Клиент собирает сведения, необходимые для выбора контроллера домена. Затем он передает сведения службе Netlogon с помощью вызова DsGetDcName.

Служба Netlogon для клиента использует собранные сведения для получения контроллера домена для указанного домена одним из двух способов:

Для имени DNS Netlogon запрашивает DNS с помощью локатора, совместимого с IP/DNS. То есть DsGetDcName вызывает вызов DnsQuery для чтения записей ресурса службы (SRV) и записей "A" из DNS после того, как он привносим доменное имя в соответствующую строку, которая указывает записи SRV.

На рабочей станции, входя в Windows доменных запросов DNS для записей SRV в общей форме:

Серверы Active Directory предлагают службу Протокола доступа к облегченным каталогам (LDAP) по протоколу TCP. Таким образом, клиенты находят сервер LDAP, запрашивая DNS для записи формы:

Для имени NetBIOS Netlogon выполняет обнаружение контроллера домена с помощью Locator Windows NT версии 4.0. То есть с помощью транспортного механизма, например WINS.

В Windows NT 4.0 и ранее "обнаружение" — это процесс поиска контроллера домена для проверки подлинности в основном домене или доверенного домена.

Каждый доступный контроллер домена отвечает на набор данных, чтобы указать, что он в настоящее время работает, и возвращает сведения в DsGetDcName.

UDP позволяет программе на одном компьютере отправлять телеграмму данных в программу на другом компьютере. UDP включает номер порта протокола, который позволяет отправителю различать несколько направлений (программ) на удаленном компьютере.

  • Каждый доступный контроллер домена отвечает на набор данных, чтобы указать, что он в настоящее время работает, и возвращает сведения в DsGetDcName.
  • Служба Netlogon запрашивает сведения контроллера домена, чтобы более поздние запросы не повторяли процесс обнаружения. Кэшировка этих сведений способствует последовательному использованию одного и того же контроллера домена и последовательному представлению Active Directory.

Когда клиент входит в сеть или присоединяется к ней, он должен иметь возможность найти контроллер домена. Клиент отправляет запрос DNS Lookup в DNS для поиска контроллеров домена, предпочтительно в собственной подсети клиента. Таким образом, клиенты находят контроллер домена, запрашивая DNS для записи формы:

После обнаружения контроллера домена клиент устанавливает связь с помощью LDAP для получения доступа к Active Directory. В рамках этих переговоров контроллер домена определяет, на какой сайт находится клиент, основываясь на подсети IP этого клиента.

Если клиент общается с контроллером домена, не на самом близком (оптимальном) сайте, контроллер домена возвращает имя сайта клиента. Если клиент уже пытался найти контроллеры домена на этом сайте, клиент использует не оптимальный контроллер домена. Например, клиент отправляет запрос DNS Lookup в DNS, чтобы найти контроллеры домена в подсети клиента.

В противном случае клиент снова будет искать DNS с новым оптимальным именем сайта. Контроллер домена использует некоторые сведения службы каталогов для идентификации сайтов и подсетей.

После обнаружения клиентом контроллера домена запись контроллера домена кэшется. Если контроллер домена не находится на оптимальном сайте, клиент сбрасывает кэш через 15 минут и удаляет запись кэша. Затем он пытается найти оптимальный контроллер домена на том же сайте, что и клиент.

После того как клиент наладил путь к контроллеру домена, он может установить учетные данные для логоса и проверки подлинности. При необходимости для Windows компьютеров можно настроить безопасный канал. После этого клиент готов выполнять обычные запросы и искать информацию в каталоге.

Клиент устанавливает подключение LDAP к контроллеру домена для входа в систему. Процесс логона использует диспетчер учетных записей безопасности. Путь к коммуникациям использует интерфейс LDAP, и клиент аутентификация с помощью контроллера домена. Таким образом, учетная запись клиента проверяется и передается через Диспетчер учетных записей безопасности агенту службы каталогов, затем в уровень базы данных и, наконец, в базу данных в движке Extensible служба хранилища (ESE).

Устранение неполадок процесса локатора домена

Чтобы устранить неполадки в процессе локатора домена:

Проверьте конфигурацию IP с помощью ipconfig /all команды по командной подсказке.

Используйте утилиту Ping для проверки подключения к сети и разрешения имен. Ping как IP-адрес, так и имя сервера. Кроме того, может потребоваться ping доменное имя.

netdiag /v >test.txt
Просмотрите файл журнала, ищите проблемы и изучите все связанные компоненты. Этот файл также содержит другие сведения о конфигурации сети.

Чтобы устранить незначительные проблемы, используйте средство Netdiag со следующим синтаксисом:

Используйте команду, чтобы убедиться, что контроллер домена может быть nltest /dsgetdc:domainname расположен для определенного домена.

Если одна из этих команд не удалась, используйте один из следующих методов для перерегистрации записей в DNS:

  • Чтобы заставить регистрацию записей хостов, введите ipconfig/registerdns.
  • Чтобы заставить регистрацию службы контроллера домена, остановитесь и запустите службу Netlogon.

Чтобы обнаружить проблемы с контроллером домена, запустите утилиту DCdiag из командной подсказки. Утилита выполняет множество тестов, чтобы убедиться, что контроллер домена работает правильно. Используйте эту команду для отправки результатов в текстовый файл: dcdiag /v >dcdiag.txt

Используйте средство Ldp.exe для подключения и привязки к контроллеру домена для проверки соответствующего подключения LDAP.

Если вы подозреваете, что у определенного контроллера домена возникли проблемы, может быть полезно включить ведение журнала отключения Netlogon. Используйте утилиту NLTest, введя эту команду: nltest /dbflag:0x2000ffff . Затем эти сведения регистрируются в папке Debug в файле Netlogon.log.

Если вы еще не изолировали проблему, используйте Network Monitor для мониторинга сетевого трафика между клиентом и контроллером домена.

Ссылки

Дополнительные сведения см. в Windows в главе 10 "Диагностика, устранение неполадок и восстановление" (Active Directory Diagnostic, Troubleshooting and Recovery).

Как я могу узнать имя / IP-адрес контроллера домена AD в моей сети?

На любом компьютере с DNS-сервером, настроенным для использования DNS-сервера AD, выполните:

Пуск -> Выполнить -> nslookup

В ответе выше ввод set type = all (в nslookup) позволяет просматривать записи DNS SRV. Вы могли бы также ввести «set type = SRV», записи SRV показывают, как AD рекламирует себя в сети Я запустил это и получил _ldap._tcp.dc._msdcs.UnKnown . Что значит UnKnown ?

Для компьютера, который является членом домена, переменная среды LOGONSERVER содержит имя контроллера домена, который аутентифицировал текущего пользователя. Очевидно, что это не все DC в среде с несколькими DC, но если все, что вам нужно, это быстрый способ найти имя контроллера домена, то из командной оболочки:

Вернет все переменные окружения, которые начинаются с «L», включая имя DC.

+1 для простоты. После получения имени DC, просто пропингуйте его, чтобы получить IP. просто да, но если у вас есть VPN-подключение к интересующей вас сети, LOGONSERVER не даст вам этого. Принятый ответ даст вам правильный сервер во всех случаях, которые я могу придумать. Это не идеально, но иногда важно также знать, как сделать что-то достаточно хорошее быстро. Это также не помогает при локальных входах, но я никогда не проверял это через VPN, хорошо знать, спасибо.

Не упомянутый, супер простой и быстрый вариант - запустить его из командной строки:

Просто замените «доменное имя» на ваш домен

Вы также можете запустить некоторые другие опции, чтобы узнать больше:

/dcname:domainname получает имя PDC для домена, /dsgetdc:domainname имеет флаги для другой информации

Попробуйте nltest /? в своем запросе, чтобы получить больше вариантов! :)

C:\> nltest /dclist:domainname Cannot find DC to get DC list from.Status = 1355 0x54b ERROR_NO_SUCH_DOMAIN The command completed successfully Что это обозначает?

Это вернет ваш ближайший контроллер домена в Powershell:

Из командной строки запустите gpresult . Ты получишь:

  • Общая информация о рабочей станции и домене
  • Как для компьютера, так и для пользователя :
    • Отличительное имя в AD и с какого DC была применена политика
    • Прикладные объекты групповой политики
    • Список групп безопасности, членом которых является

    Вот пример вывода обкатки gpresult . Вы также можете указать, gpresult /z чтобы получить более подробную информацию.

    DNS и DHCP являются наилучшим способом проверки, поскольку в сети могут находиться компьютеры Unix / Linux, управляемые контроллером домена AD или выполняющие роль контроллера домена.

    Плюс, учитывая, что активный каталог - это не что иное, как версия Microsoft Kerberos, LDAP, dhcp и dns. Было бы лучше понимать и отлаживать вещи на нижних уровнях, чем на уровне 7+. Это связано с тем, что операционная система будет выполнять те же самые запросы, а подчеркивающий RFC для каждого протокола фактически работает на уровне OSI, а не на уровне «вставьте сюда любимый инструмент».

    Можно пойти еще дальше и сделать запрос DHCP для вариантов 6, 15 и 44 , чтобы получить имя домена , сервер доменных имен , и имя сервера Выигрыши / NetBIOS .

    Затем с помощью dns проверьте записи _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs и _ldap._tcp SRV:

    Это разбито на три области, две из которых являются поддерживаемыми протоколом записями DNS-SD:

    • _kerberos._tcp и _kpasswd._tcp (также под UNIX / Linux / OSX + некоторые сети Windows имеет _kadmin._tcp ) для Kerberos
    • _ldap._tcp предназначен для ldap (openldap, opendc, каталог sun / oracle, ms ad) _LDAP._TCP.dc._msdcs является единственным расширением Microsoft для ldap для сопоставления контроллера домена.

    Просто найдите имена DC

    Сохранить как GetDcNames.cmd :

    (Примечание: конечная точка в "% userdnsdomain%." Предназначена специально. Она не позволяет вашему локальному nslookup использовать любые строки пути поиска DNS.)

    Найти больше доменов DNS, связанных с AD

    Я создал быстрый и грязный пакетный файл, чтобы мне не приходилось запоминать доменные имена DNS и / или вводить их все. (Список может быть неполным.)

    Работает с подключенных к домену машин. Если ваша машина не подключена к домену, вы должны вручную установить для USERDNSDOMAIN то, что вам нужно.

    Как узнать имя /IP-адрес контроллера домена AD в моей сети?

    На любом компьютере, настроенном DNS для DNS-сервера AD, выполните следующие действия:

    Пуск -> Run -> nslookup

    Для компьютера, который является членом домена, переменная среды LOGONSERVER содержит имя DC, прошедшего проверку подлинности текущего пользователя. Очевидно, что это не все DC в среде с несколькими DC, но если все, что вам нужно, это быстрый способ найти имя контроллера домена, а затем из командной оболочки:

    Вернет все переменные среды, начинающиеся с «L», включая имя DC.

    Неизменная, супер простая и быстрая опция заключается в том, чтобы запустить ее из командной строки:

    Просто замените имя домена на свой домен

    Вы также можете запустить несколько других опций, чтобы узнать больше:

    /dcname:domainname получает имя PDC для домена /dsgetdc:domainname содержит флажки для другой информации

    Попробуйте nltest /? в вашем приглашении, чтобы получить больше опций! :)

    Это вернет ваш ближайший контроллер домена в Powershell:

    В командной строке запустите gpresult . Вы получите:

    • Общая информация о рабочей станции и домене
    • Для компьютера и пользователя :
      • Отличительное имя в AD и какая DC политика была применена из
      • Объекты прикладной групповой политики
      • Список групп безопасности, входящих в состав

      Ниже представлен пример выполнения Gpresult . Вы также можете указать gpresult , чтобы получить более подробную информацию.

      DNS и DHCP - лучший способ проверить, поскольку в сети могут быть компьютеры Unix /Linux, управляемые контроллером домена AD или действующие в качестве контроллера домена.

      Плюс, учитывая, что активный каталог является не чем иным, как версией Microsoft Kerberos, LDAP, dhcp и dns. Было бы лучше понять и отладить вещи на более низких уровнях, чем слой 7+. Это связано с тем, что операционная система будет предировать эти же запросы, а подчеркивание RFC для каждого протокола фактически работает на уровне OSI, а не в «вставке любимого инструмента здесь».

      Можно пойти дальше и запросить dhcp для параметров 6, 15 и 44, чтобы получить , сервер доменных имен и Wins /NetBIOS-сервер имен .

      Затем, используя dns для проверки _kerberos._tcp, _kpasswd._tcp, _LDAP._TCP.dc._msdcs и _ldap._tcp SRV записей:

      Это разбивается на три области: две поддерживаемые протоколом записи DNS-SD:

      • _kerberos._tcp и _kpasswd._tcp (также в UNIX /Linux /OSX + некоторые сети Windows имеют _kadmin._tcp ) для кеберосов
      • _ldap._tcp для ldap (openldap, opendc, каталог sun /oracle, ms ad) _LDAP._TCP.dc._msdcs - это только расширение Microsoft для ldap для сопоставления контроллера домена.

      Просто найдите имена DC

      Сохранить как GetDcNames.cmd :

      Запуск от имени: GetDcNames.cmd .

      (Примечание: конечная точка в «% userdnsdomain%.» предназначена специально. Она останавливает ваш локальный nslookup с использованием любых строк пути поиска DNS.)

      Найти больше доменов DNS, связанных с AD

      Я взломал быстрый и грязный пакетный файл, так что мне не нужно запоминать имена доменов DNS и /или им нужно набирать их все. (Список может быть неполным.)

      Работает с подключенными к домену машинами. Если ваш компьютер не подключен к домену, вы должны вручную установить USERDNSDOMAIN для того, что вы хотите.

      Читайте также: