Ответы:
На любом компьютере с DNS-сервером, настроенным для использования DNS-сервера AD, выполните:
Пуск -> Выполнить -> nslookup
set type=all
_ldap._tcp.dc._msdcs.DOMAIN_NAME
Замените DOMAIN_NAME реальным доменным именем, например, example.com . Узнайте больше здесь .
_ldap._tcp.dc._msdcs.UnKnown
. Что значит UnKnown ?
Для компьютера, который является членом домена, переменная среды LOGONSERVER содержит имя контроллера домена, который аутентифицировал текущего пользователя. Очевидно, что это не все DC в среде с несколькими DC, но если все, что вам нужно, это быстрый способ найти имя контроллера домена, то из командной оболочки:
set l <enter>
Вернет все переменные окружения, которые начинаются с «L», включая имя DC.
Не упомянутый, супер простой и быстрый вариант - запустить его из командной строки:
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
Что это обозначает?
Это вернет ваш ближайший контроллер домена в Powershell:
Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
Из командной строки запустите gpresult
. Ты получишь:
Вот пример вывода обкаткиgpresult
. Вы также можете указать, gpresult /z
чтобы получить более подробную информацию.
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:
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 для сопоставления контроллера домена.Сохранить как GetDcNames.cmd
:
nslookup -type=any %userdnsdomain%.
Запуск: GetDcNames.cmd
.
(Примечание: конечная точка в "% userdnsdomain%." Предназначена специально. Она не позволяет вашему локальному nslookup использовать любые строки пути поиска DNS.)
Я создал быстрый и грязный пакетный файл, чтобы мне не приходилось запоминать доменные имена 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
. Там много текстового вывода.