Определить на каком контроллере домена (Logon Server) вы аутентифицировались
05.03.2022
itpro
Active Directory, Windows 10, Windows Server 2019
Комментариев пока нет
В некоторых случаях вам нужно определить на каком контроллере домена вы аутентифицированы (ваш logonserver). Это может пригодиться при проблемах с применением групповых политик, когда пользователи жалуются на медленный вход в систему. Пользователь может аутентифицироваться на неверном контроллере домена из-за того, что ближайший к нему DC не доступен, доступ к нему блокируется межсетевым экраном, неверной настройки подсетей и сайтов в Active Directory или проблемами с DNS. В результате пользователь может получать все GPO, скрипты, и т.д., не с ближайшего контроллера домена, а с любого другого DC. Это может привести к долгому применению GPO, медленной установке программ, медленной загрузки перемещаемых профилей или файлов в перенаправленных папках.
Как узнать на каком контроллере домена вы залогинены?
Вы можете узнать контроллер домена, через который вы выполнили вход в домен несколькими способами:
-
- Из командной строки: set log
- Из результатов команды: systeminfo | find /i “logon server”
- Из переменного окружения: echo %logonserver%
Зная контроллер домена, можно различную информацию о пользователя из журналов безопасности DC (например, историю входов пользователя в домен и другие логи).
Можно автоматически записывать информацию, на каком контроллере домена авторизовался пользователь в описание компьютера в AD. Так можно узнать LogonServer для конкретного компьютера из AD, не обращаясь к конкретному компьютеру по сети или локально.
Как Windows определяет ближайший контроллер домена?
За определение LogonServer при загрузке Windows отвечает служба NetLogon. Она должны быть запущена:
Упрощенно процесс поиска контроллера домена клиентом Windows выглядит так:

- При загрузке Windows служба NetLogon делает DNS запрос за списком контроллеров домена (SVR записи _ldap._tcp.dc._msdcs.domain_ ;
- DNS возвращает список DC в домене;
- Клиент делает LDAP запрос к DC для определения сайта AD по-своему IP адресу;
- DC возвращает сайт, которому соответствует IP клиента или наиболее близкий сайт (эта информация кэшируется в ветке реестра HKLM\System\CurrentControlSet\Services\Netlogon\Parameters и используется при следующем входе для более быстрого поиска);
- Клиент через DNS запрашивает список контроллеров домена в сайте (в разделе _ tcp.sitename._sites. );
- Windows пытается связаться со всеми DC в сайте и первый ответивший используется для выполнении аутентификации и в качестве LogonServer.

Если указанный DC не доступен, появится ошибка:
Если ни один из контроллеров домена не доступен, или компьютер отключен от сети, то при входе пользователя появится надпись:
Найти ближайший к вам контроллер домена согласно иерархии сайтов, подсетей и весов можно с помощью командлета Get-ADDomainController из модуля Active Directory для PowerShell:
Get-ADDomainController -Discover -NextClosestSite
Так вы сможете определить имя контроллера домена, через который должен аутентифицироваться компьютер. Если он отличается от текущего, нужно понять почему.
Предыдущая статья Следующая статья
Как узнать какие компьютеры подключены к контроллеру домена?
День добрый. Вопрос как прост так и сложен:
Необходимо не вставая со своего стула и не открывая лишних подключений узнать какие компьютеры в сети к какому КД подключены.
Можно было бы запустить по сети set logonserver > landisk://%computername%.txt, но хочется получить все на одном экране в небольшой таблице. как например вывод (для пробующих все сразу в консоли DC — это хотелка в PS его нет)Либо второй вариант: как узнать какие компьютеры завязаны как конкретном DC?
Может кто в своей работе встречал модули к PS которые позволят выполнить искомое.
PowerShell: системное администрирование и программирование
Всё о PowerShell в Windows и на Linux. Системное администрирование Windows
Get-ADDomainController: получение информации о контроллерах домена через PowerShell
Вы можете использовать командлет PowerShell Get-ADDomainController для получения информации о контроллерах домена в Active Directory. Этот командлет является частью модуля Active Directory для Windows PowerShell, который может быть установлен как на Windows Server, так и на рабочих станциях Windows. Подробности смотрите в статье «Как установить и использовать Модуль Active Directory для Windows PowerShell».
Командлет Get-ADDomainController
Get-ADDomainController выводит информацию об одном или нескольких контроллеров домена Active Directory на основе критериев обнаруживаемых служб, параметров поиска или путём предоставления идентификатора контроллера домена, например имени NetBIOS.
Командлет Get-ADDomainController получает контроллеры домена, указанные в параметрах. Вы можете получить контроллеры домена, используя опции -Identity, -Filter или -Discover.
При запуске Get-ADDomainController без каких-либо параметров командлет отображает информацию о текущем контроллере домена (LogonServer), используемом этим компьютером для проверки подлинности (контроллер домена выбирается в соответствии с топологией IP-подсети сайта AD):
Командлет вернул все поля с информацией о контроллере домена, доступной в базе данных Active Directory.
Примеры использования Get-ADDomainController
Чтобы получить контроллер домена с помощью механизма обнаружения DCLocator, используйте опцию -Discover. Вы можете указать критерии поиска, задав такие опции, как -Service, -SiteName, -DomainName, -NextClosestSite, -AvoidSelf и -ForceDiscover.
Также вы можете найти контроллер домена, которому должен принадлежать ваш компьютер, через службу -DCLocator:
Следующая команда получит один доступный контроллер домена на указанном сайте:
Опция -ForceDiscover указывает командлету очистить всю кэшированную информацию о контроллере домена и выполнить новое обнаружение. Если этот параметр не указан, командлет может возвращать кэшированные сведения о контроллере домена.
Эта команда получает один доступный контроллер указанного домена в данном домене с помощью обнаружения.
Вы можете найти ближайший доступный контроллер домена с активной ролью веб-служб AD:
Опция -Service задаёт типы получаемых контроллеров домена. Вы можете указать более одного типа, используя список, разделённый запятыми. Допустимые значения для этого параметра:
- PrimaryDC или 1
- GlobalCatalog или 2
- KDC или 3
- TimeService или 4
- ReliableTimeService или 5
- ADWS или 6
Пример использования опции -Service для поиска PDC (Primary Domain Controller Emulator) в вашем домене:
Эта команда ищет компьютер с функцией Глобального каталога в текущем лесу:
Эта команда получает основной контроллер домена с помощью обнаружения и проверяет, используется ли он в качестве сервера времени.
Если ваш контроллер домена не найден или не отвечает, вы можете найти его на ближайшем сайте AD (определяется весом межсайтовых ссылок):
Чтобы найти и получить более одного контроллера домена, используйте опцию -Filter.
Чтобы отобразить список всех контроллеров домена в текущем домене, выполните такую команду:
Используя следующую команду, вы можете подсчитать количество контроллеров домена в AD:
Вы можете отобразить более удобную таблицу, в которой показаны все контроллеры домена, их имена хостов, IP-адреса, версии ОС и имена сайтов AD:
Если вы хотите получить некоторую информацию о DC из другого домена, укажите имя любого доступного DC в другом домене с помощью параметра -Server (это возможно в случае включения доверительных отношений между доменами).
Использование Get-ADDomainController для поиска контроллеров домена по определенным критериям
Давайте рассмотрим несколько полезных команд, которые вы можете использовать для получения списка контроллеров домена в AD по определенным критериям.
Опция -Identity указывает контроллер домена, который нужно получить. Вы можете идентифицировать контроллер домена по его GUID, IPV4Address, глобальному IPV6Address или имени узла DNS.
Чтобы найти контроллер домена по его IP-адресу:
Эта команда получает контроллер домена, используя его NetBIOS имя.
Эта команда получает контроллер домена, используя его имя хоста DNS, в домене, указанном параметром -Site, указанным в параметре -Server, и с указанием учётных данных администратора.
Чтобы найти все контроллеры домена, в именах которых есть DC02:
Чтобы отобразить список контроллеров домена на сайтах, имена которых начинаются с «Mun*»:
Чтобы отобразить список всех контроллеров домена только для чтения (RODC):
Чтобы найти контроллеры домена на сайте «Rome» с включённой ролью глобального каталога:
Скрипт PowerShell для проверки доступности всех контроллеров домена
Следующий скрипт PowerShell позволяет поочерёдно проверять контроллеры домена и выполнять для каждого из них определённые действия:
Вот пример простого скрипта PowerShell, который проверяет доступность порта LDAPS (TCP 636) на каждом контроллере домена в вашем домене с помощью командлета Test-NetConnection. Если порт LDAPS недоступен, появится предупреждение.
Получился простой скрипт для отслеживания доступности всех контроллеров домена в вашем домене.
Также существуют разные сценарии для проверки всех контроллеров домена по очереди.
Как я могу узнать, на каком контроллере домена я аутентифицировался?
Как я могу узнать, на каком контроллере домена я аутентифицировался? Есть ли способ сделать это без локального администратора?
6 ответов 6
Вы можете найти это с помощью следующей команды:
И вам не нужно быть администратором или poweruser, чтобы использовать его. Посмотрите на вывод этой команды:
Для определения компьютера / сервера DC используйте NLTEST:
Чтобы перечислить все DC с соответствующим сайтом, попробуйте:
Вам не нужно использовать полное доменное имя доменного имени или сервера — например, вместо того, чтобы сказать /dclist:services.microsoft.com , вы можете просто ввести /dclist:services (если вы являетесь аутентифицированным членом этот домен, конечно).
Для аутентификации пользователя и групповой политики используйте переменную LOGONSERVER: