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

Ответы:

147

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

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

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

Замените DOMAIN_NAME реальным доменным именем, например, example.com . Узнайте больше здесь .

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

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

set l <enter>

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

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

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

nltest /dclist:domainname

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

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

/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 Что это обозначает?
jp2code
1
Замените доменное имя на имя вашего домена
Abraxas
Ой. Это то, что я думал, это найдет для меня.
jp2code
Это было очень полезно для меня, потому что [Bash # host -t srv _ldap._tcp.MYCOMPANY] сказал, что домен не найден. [CMD: \> nltest / dclist: MYCOMPANY] сказал мне, что доменное имя было corp.ad.mycompany.com, и затем я смог использовать эту информацию, чтобы другие команды работали. [Bash # host -t srv _ldap._tcp.corp.ad.mycompany.com] затем работал
neokyle
21

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

Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
Марк Хендерсон
источник
17

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

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

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

ErikE
источник
5
Вау, gpresult /Zвыводит много данных. Благодарю.
Friederbluemle
10

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:

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 ::= value returned from dhcp option-1

Это разбито на три области, две из которых являются поддерживаемыми протоколом записями 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 для сопоставления контроллера домена.
Дуайт Спенсер
источник
2

Сырая CMD

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

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

nslookup -type=any %userdnsdomain%.

Запуск: GetDcNames.cmd.

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

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

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

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

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

@setlocal
@REM Test AD DNS domains for presence.
@REM For details see: 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 Those next few lines here are forest specific:
@REM Change the next line your current domain is not also the forest root.
@SET "DNSFORESTNAME=%USERDNSDOMAIN%"

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

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

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

источники

StackzOfZtuff
источник