Как я могу узнать имя / IP-адрес контроллера домена AD в моей сети?
На любом компьютере, на котором DNS настроен на использование DNS-сервера AD, выполните:
Пуск -> Выполнить -> nslookup
set type=all
_ldap._tcp.dc._msdcs.DOMAIN_NAME
Заменить ДОМЕННОЕ ИМЯ с фактическим доменным именем, например example.com. Читать далее Вот.
Для компьютера, который является членом домена, переменная среды LOGONSERVER содержит имя контроллера домена, который аутентифицировал текущего пользователя. Очевидно, что это не будут все DC в среде с несколькими DC, но если все, что вам нужно, это быстрый способ найти имя контроллера домена, то из командной оболочки:
set l <enter>
Вернет все переменные среды, которые начинаются с "L", включая имя DC.
Неупомянутый, очень простой и быстрый вариант - запустить это из командной строки:
nltest /dclist:domainname
Просто замените domainname своим доменом.
Вы также можете запустить другие варианты, чтобы узнать больше:
/dcname:domainname
получает имя PDC для домена /dsgetdc:domainname
есть флажки для другой информации
Пытаться nltest /?
в вашем приглашении, чтобы получить больше возможностей! :)
Это вернет ваш ближайший контроллер домена в Powershell:
Import-Module ActiveDirectory
(Get-ADDomainController -DomainName <Domain FQDN> -Discover -NextClosestSite).HostName
Из командной строки запустите gpresult
. Ты получишь:
Вот это пример вывода работы gpresult
. Вы также можете указать gpresult /z
чтобы получить более подробную информацию.
DNS и DHCP - лучший способ проверить, поскольку в сети могут быть машины Unix / Linux, управляемые контроллером домена AD или действующие как контроллер домена.
Кроме того, учитывая, что Active Directory - это не что иное, как версия Microsoft Kerberos, LDAP, dhcp и dns. Было бы лучше понимать и отлаживать вещи на более низких уровнях, чем на уровне 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 ::= 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
. Выводится много текста.