- Вопрос или проблема
- Грубый CMD
- Просто найдите имена контроллеров домена
- Найдите больше доменов DNS, связанных с AD
- Источники
- Ответ или решение
- Использование Nslookup
- Использование переменной окружения
- Использование утилиты nltest
- Использование команды gpresult
- Использование PowerShell
- Проверка через DHCP и DNS
- Резюме
Вопрос или проблема
Как я могу узнать имя/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
. Будет много текстового вывода.
Источники
- Блог MSDN “ServerGeeks”, 2014-07-12, Хабибар Рахман, DNS записи, которые требуются для правильной работы Active Directory (Архивировано здесь.)
- TechNet, Комплекты ресурсов > Руководство по распределенным системам > Управление конфигурацией рабочего стола > Active Directory > Разрешение имен в Active Directory > Поиск серверов Active Directory > SRV ресурсные записи (Архивировано здесь.)
Если у вас есть доступ только к 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:
- Откройте меню Пуск и выберите Выполнить.
- Введите команду
nslookup
. - В интерактивном режиме nslookup введите следующие команды:
set type=all _ldap._tcp.dc._msdcs.DOMAIN_NAME
Замените
DOMAIN_NAME
на фактическое имя вашего домена, например,example.com
. Эта команда выдаст список доступных контроллеров домена.
Использование переменной окружения
Если ваш компьютер является членом домена, вы можете использовать переменную окружения LOGONSERVER
для быстрого получения имени контроллера домена, который аутентифицировал текущего пользователя:
- Откройте командную строку.
- Введите команду:
set l
Это выдаст все переменные окружения, начинающиеся с "L", включая имя контроллера домена.
Использование утилиты nltest
Утилита nltest
предлагает несколько полезных опций для работы с доменами:
- Запустите командную строку.
- Выполните команду, заменив ‘domainname’ на ваш домен:
nltest /dclist:domainname
Это отобразит список всех доступных контроллеров домена в указанном домене.
Вы также можете использовать дополнительные команды nltest
для получения более детальной информации:
/dcname:domainname
— для получения имени основного контроллера домена (PDC)./dsgetdc:domainname
— для дополнительных сведений о домене.
Использование команды gpresult
Команда gpresult
позволяет получить общую информацию о рабочей станции и домене, включая имя контроллера домена, с которого была применена политика:
- Откройте командную строку.
- Введите команду:
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
Резюме
Каждый из описанных методов предоставляет различные способы нахождения контроллера домена в зависимости от ваших нужд и конфигурации сети. Используйте наиболее подходящий вариант для получения необходимой информации о контроллере домена в вашей сети.