Найдите имя контроллера домена Active Directory.

Вопрос или проблема

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

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

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

    set type=all
    _ldap._tcp.dc._msdcs.DOMAIN_NAME
    

Замените DOMAIN_NAME на фактическое доменное имя, например, example.com. Читайте больше здесь.

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

set l <enter>

Вернет все переменные окружения, которые начинаются с “L”, включая имя контроллера домена.

Еще один неупомянутый, очень простой и быстрый способ — запустить это из командной строки:

nltest /dclist:domainname

Просто замените ‘domainname’ на ваш домен

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

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

Попробуйте nltest /? в вашей командной строке, чтобы получить больше опций! 🙂

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

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

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

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

Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName

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

Кроме того, учитывая, что Active Directory — это ни что иное, как версия Kerberos, LDAP, dhcp и dns от Microsoft, лучше понять и отладить вещи на более низких уровнях, чем уровень 7 и выше. Это потому, что операционная система выполняет те же запросы, и основополагающие RFC для каждого протокола действительно работают на уровне OSI, а не на уровне “вставьте ваш любимый инструмент здесь”.

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

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

nslookup -type=srv _kerberos._tcp.EXMAPLE.COM
nslookup -type=srv _kpasswd._tcp.EXAMPLE.COM
nslookup -type=srv _ldap._tcp.EXAMPLE.COM
nslookup -type=srv _ldap._tcp.dc._msdcs.EXAMPLE.COM

.EXAMPLE.COM ::= значение, возвращенное опцией dhcp-1

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

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

Грубый CMD

Просто найдите имена контроллеров домена

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

nslookup -type=any %userdnsdomain%.

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

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

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

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

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

Сохраните как TestAdDnsRecords.cmd:

@setlocal
@REM Проверка доменов AD DNS на наличие.
@REM Для деталей смотрите: http://serverfault.com/a/811622/253701

nslookup -type=srv _kerberos._tcp.%userdnsdomain%.
nslookup -type=srv _kerberos._udp.%userdnsdomain%.
@echo .

nslookup -type=srv _kpasswd._tcp.%userdnsdomain%.
nslookup -type=srv _kpasswd._udp.%userdnsdomain%.
@echo .

nslookup -type=srv _ldap._tcp.%userdnsdomain%.
@echo .

nslookup -type=srv _ldap._tcp.dc._msdcs.%userdnsdomain%.
@echo .

nslookup -type=srv _ldap._tcp.pdc._msdcs.%userdnsdomain%.
@echo .

@REM Следующие несколько строк специализированы для леса:
@REM Измените следующую строку, если ваш текущий домен не является также корнем леса.
@SET "DNSFORESTNAME=%USERDNSDOMAIN%"

nslookup -type=srv _ldap._tcp.gc._msdcs.%DNSFORESTNAME%.
@echo .

nslookup -type=srv _gc._tcp.%DNSFORESTNAME%.

Запустите как TestAdDnsRecords.cmd | more. Будет много текстового вывода.

Источники

Если у вас есть доступ только к DNS, вы можете получить список всех контроллеров домена с помощью следующего запроса в PowerShell:

Resolve-DnsName -Name _ldap._tcp.dc._msdcs.<YOUR_DOMAIN> -Type SRV

Это может быть сделано любым пользователем с доступом к DNS.


Альтернатива с nslookup:

nslookup -type=SRV _ldap._tcp.dc._msdcs.<YOUR_DOMAIN>

Перейдите в командную строку и введите “net time” – это предоставит вам имя контроллера домена вместе с временем.
Пример – “Текущее время на \{DCName} равно {time}.”

Ответ или решение

Для определения имени или IP-адреса контроллера домена Active Directory в сети, можно воспользоваться несколькими методами. Давайте рассмотрим подробно, как это можно сделать.

Использование Nslookup

Начните с компьютера, где DNS настроен на использование сервера DNS Active Directory:

  1. Откройте меню Пуск и выберите Выполнить.
  2. Введите команду nslookup.
  3. В интерактивном режиме nslookup введите следующие команды:
    set type=all
    _ldap._tcp.dc._msdcs.DOMAIN_NAME

    Замените DOMAIN_NAME на фактическое имя вашего домена, например, example.com. Эта команда выдаст список доступных контроллеров домена.

Использование переменной окружения

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

  1. Откройте командную строку.
  2. Введите команду:
    set l

    Это выдаст все переменные окружения, начинающиеся с "L", включая имя контроллера домена.

Использование утилиты nltest

Утилита nltest предлагает несколько полезных опций для работы с доменами:

  1. Запустите командную строку.
  2. Выполните команду, заменив ‘domainname’ на ваш домен:
    nltest /dclist:domainname

    Это отобразит список всех доступных контроллеров домена в указанном домене.

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

  • /dcname:domainname — для получения имени основного контроллера домена (PDC).
  • /dsgetdc:domainname — для дополнительных сведений о домене.

Использование команды gpresult

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

  1. Откройте командную строку.
  2. Введите команду:
    gpresult

    Для получения более детальной информации можете использовать:

    gpresult /z

Использование PowerShell

В PowerShell вы можете использовать командлет Get-ADDomainController для поиска ближайшего контроллера домена:

Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName

Проверка через DHCP и DNS

Также полезно использовать DNS и DHCP для поиска записей SRV. Выполните следующие команды:

nslookup -type=srv _ldap._tcp.dc._msdcs.DOMAIN_NAME
nslookup -type=srv _kerberos._tcp.DOMAIN_NAME

Резюме

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

Оцените материал
Добавить комментарий

Капча загружается...