Знайдіть ім’я контролера домену Active Directory


127

Як я можу дізнатися ім’я / IP-адресу контролера домену AD в моїй мережі?


DNS повинен бути там саме для цієї мети. support.microsoft.com/kb/816587/en-us petri.co.il/active_directory_srv_records.htm
Массімо,

Дуже коротка і мила відповідь із пов’язаної теми на SO
RBT

Відповіді:


147

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

  • Старт -> Виконати -> nslookup

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

Замініть DOMAIN_NAME фактичним іменем домену, наприклад example.com . Детальніше читайте тут .


У відповіді вище, введення встановленого типу = all (у nslookup) дозволяє бачити записи DNS SRV. Ви також могли ввести "set type = SRV", SRV записи - це те, як AD рекламує себе в мережі
Les

Я запустив це і отримав _ldap._tcp.dc._msdcs.UnKnown. Що означає Невідоме ?
jp2code

64

Для комп'ютера, який є членом домену, змінна середовища LOGONSERVER містить ім'я постійного струму, що підтверджував ідентифікацію поточного користувача. Це, очевидно, не буде всім DC в середовищі з декількома постійними струмами, але якщо все, що вам потрібно, це швидкий спосіб знайти ім'я контролера домену, то з командної оболонки:

set l <enter>

Поверне всі змінні середовища, які починаються з "L", включаючи назву постійного струму.


5
+1 для простоти. Отримавши назву постійного струму, просто натисніть його, щоб отримати IP.
Bigbio2002

2
просто так, але якщо у вас є VPN-з'єднання з мережею, яка вас цікавить, LOGONSERVER не дає вам цього. Прийнята відповідь дасть вам правильний сервер у всіх випадках, про які я думаю.
Лес

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 # хост -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щоб отримати більш детальну інформацію.


5
Нічого собі, gpresult /Zвидає багато даних. Дякую.
friederbluemle

10

DNS і DHCP - найкращий спосіб перевірити, оскільки в мережі можуть бути машини Unix / Linux, якими керує контролер домену AD, або виконувати функції контролера домену.

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

Можна піти ще далі і зробити запит DHCP для варіантів 6, 15 і 44 , щоб отримати ім'я домену , сервер доменних імен , і ім'я сервера Виграші / 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 ::= 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, мс-оголошення) _LDAP._TCP.dc._msdcs- це лише розширення Microsoft для ldap для відображення контролера домену.

2

Сира CMD

Просто знайдіть імена постійного струму

Зберегти як 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. Виводиться багато тексту.

Джерела

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.