
Иногда вы можете захотеть узнать, на каком контроллере домена аутентифицирован ваш компьютер (ваш Logon Server
). Это может пригодиться при возникновении проблем с применением групповых политик или при жалобах пользователей на медленный вход в систему. Компьютер пользователя может быть аутентифицирован на неправильном контроллере домена, если ближайший DC недоступен, брандмауэр блокирует доступ к нему, сайты или подсети Active Directory неправильно сконфигурированы или возникли проблемы с DNS. В результате пользователь может получить все настройки GPO, сценарии и т. д. с любого другого DC вместо ближайшего. Это может привести к медленной обработке GPO, медленному развертыванию программного обеспечения и т. д.
Как определить, в каком DC компьютер аутентифицирован
Вы можете определить контроллер домена, в который вы вошли, используя некоторые методы:
- С помощью командной строки:
set log
LOGONSERVER=\\MUN-DC02
- В выводе следующей команды:
systeminfo | find /i "logon server"
- Из переменной окружения:
echo %logonserver%
- Значение переменной среды можно также получить с помощью PowerShell:
$env:LOGONSERVER
- В выводе команды
gpresult /r
команда:Group Policy was applied from: MUN-DC02
- Сайт nltest инструмент показывает контроллер домена, на котором аутентифицирован компьютер (серверы входа пользователя и компьютера иногда могут отличаться). Nltest также позволяет проверить доверительные отношения между компьютером и контроллером домена и показывает имя сайта Active Directory, к которому принадлежит DC (Dc Site Name):
nltest /DSGETDC:woshub.com
LogonServer
переменной.Если вы знаете контроллер домена, вы можете получить информацию о пользователе из журналов безопасности DC входа в систему (например, историю входа пользователя в домен и другие журналы).
Как Windows находит ближайший контроллер домена
The NetLogon служба отвечает за обнаружение LogonServer при загрузке Windows. Эта служба должна быть запущена:
get-service netlogon
В упрощенном виде процесс поиска контроллера домена клиентом Windows выглядит следующим образом:
- NetLogon посылает DNS-запрос для получения списка контроллеров домена (SVR
_ldap._tcp.dc._msdcs.domain_
) при загрузке Windows; - DNS возвращает список DC в домене;
- Клиент отправляет запрос LDAP на DC, чтобы получить сайт AD по его IP-адресу;
- DC возвращает сайт AD, соответствующий IP-адресу клиента, или ближайший сайт (эта информация кэшируется в реестре:
HKLM\System\CurrentControlSet\Services\Netlogon\Parameters
и используется при следующем входе в систему для ускорения поиска); - Клиент запрашивает список контроллеров домена на целевом сайте через DNS (под
_ tcp.sitename._sites..
.); - Windows отправляет запросы всем DC на сайте AD, и первый из них, который отвечает, используется в качестве сервера входа для выполнения аутентификации.
nltest /SC_RESET:WOSHUB\MUN-DC02.woshub.com
Flags: 30 HAS_IP HAS_TIMESERV Trusted DC Name \\MUN-DC02.woshub.com Trusted DC Connection Status Status = 0 0x0 NERR_Success The command completed successfully
Если указанный DC недоступен, появится ошибка:
I_NetLogonControl failed: Status = 1311 0x51f ERROR_NO_LOGON_SERVERS
Если ни один из контроллеров домена не доступен или компьютер отключен от сети, при входе пользователя в систему появляется следующее сообщение:
There are currently no logon servers available to service the logon request.
Вход на такой компьютер возможен только с использованием кэшированных учетных данных пользователя домена.
Вы можете узнать ближайший контроллер домена в соответствии с иерархией сайта, подсетью и весом с помощью команды Get-ADDomainController из модуля Active Directory for PowerShell:
Get-ADDomainController -Discover -NextClosestSite
Это позволит вам найти имя контроллера домена, через который компьютер должен проходить аутентификацию. Если оно отличается от текущего, вам придется устранить неполадки.