Вход в компьютер является настолько привычной частью дня,
что мы часто даже не задумываемся о нем. Но даже в этом
случае, что-нибудь может и время от времени идет не так, когда
пользователи входят в Windows. В этой статье я расскажу о
некоторых моментах, которые могут являться причиной сбоя при
входе, а также покажу, как избегать таких проблем.
Прежде чем начать
Прежде чем я начну, просто хочу вкратце упомянуть, что для
того, чтобы предоставить как можно больше полезной информации,
я не буду рассказывать о самых очевидных проблемах входа в
систему. В этой статье предполагается, что прежде чем вы
начнете процесс диагностирования, вы убедились в том, что
пользователь вводит правильный пароль, срок действия пароля не
истек, и что нет проблем в базовом соединении между рабочей
станцией и контроллером домена.
Системные часы
Может показаться странным, но системные часы рабочей
станции могут на самом деле служить причиной возникновения
проблем входа. Если время на часах рабочей станции на пять
минут отличается от времени на контроллере домена, то при
входе в систему будет сбой.
На случай, если вам интересно, причина этого кроется в
протоколе аутентификации Kerberos. В начале процесса
аутентификации пользователь вводит пароль и имя пользователя.
Затем рабочая станция отправляет запрос аутентификации сервера
Kerberos Authentication Server Request на сервер распределения
ключей (Key Distribution Server). Этот запрос аутентификации
сервера Kerberos Authentication Server Request содержит
несколько различных фрагментов информации, включая:
- Идентификацию пользователя
- Имя службы, которую запрашивает пользователь (в этом
случае это будет служба получения билета (Ticket Getting
Service))
- Аутентификатор, который зашифрован универсальным ключом
пользователя. Универсальный ключ пользователя (master key)
производиться шифрованием пароля пользователя, используя
однонаправленную функцию.
Когда сервер распределения ключей получает запрос, он
просматривает пользовательскую учетную запись в Active
Directory. Затем он высчитывает универсальный ключ
пользователя и использует его для расшифровки аутентификатора
(также известного, как данные предварительной аутентификации -
pre authentication data).
Когда рабочая станция пользователя создала аутентификатор,
она поместила временную отметку в зашифрованный файл. Как
только сервер распределения ключей расшифровывает этот файл,
он сравнивает временную отметку с текущим временем на своих
часах. Если временная отметка и текущее время имеют разницу не
более пяти минут, то запрос аутентификации сервера Kerberos
считается действительным, и процесс аутентификации
продолжается. Если временная отметка и текущее время имеет
разницу в более чем пять минут, то Kerberos считает запрос
повторным проигрыванием предварительно полученного пакета, в
результате чего отвергает запрос входа. Когда это происходит,
отображается следующее сообщение:
Система не может впустить вас из-за следующей ошибки:
наличие разницы во времени между клиентом и сервером.
Пожалуйста, повторите попытку или обратитесь за помощью к
своему системному администратору.
Решение этой проблемы довольно простое; просто установите
время рабочей станции, чтобы оно соответствовало времени на
часах контроллера домена.
Сбои сервера глобальных каталогов
Еще одной главной причиной проблем входа в систему являются
сбои сервера глобального каталога. Сервер глобальных каталогов
– это контроллер домена, который было настроен на работу в
качестве сервера глобальных каталогов. Сервер глобальных
каталогов содержит поисковые образы (searchable
representation) каждого объекта в каждом домене всего
семейства.
Когда семейство доменов (forest) изначально создается,
первый контроллер домена, который вы запускаете в режим
онлайн, автоматически настраивается на работу в качестве
сервера глобальных каталогов. Проблема заключается в том, что
этот сервер может стать единой точкой сбоя, так как Windows не
назначает автоматически других контроллеров домена серверами
глобальных каталогов. Если сервер глобальных каталогов дает
сбой, то только администраторы домена смогут войти в Active
Directory.
Учитывая важность сервера глобальных каталогов, вам следует
работать над предотвращением сбоев этих серверов. К счастью,
вы можете назначить любой или все контроллеры домена серверами
глобальных каталогов. Однако следует помнить, что нужно
настраивать все контроллеры домена на работу в качестве
серверов глобальных каталогов только в том случае, если ваше
семейство состоит из одного домена. Наличие нескольких
серверов глобальных каталогов в семействе с несколькими
доменами тоже может быть неплохой идеей, однако выяснение
того, какие контроллеры домена должны работать в качестве
серверов глобальных каталогов, является чем-то вроде формы
искусства. Вы можете найти
рекомендации Microsoft здесь.
Если ваш сервер глобальных каталогов уже дал сбой, и никто
не может войти, лучшее, что вы можете сделать, это работать
над возвращением сервера в рабочее состояние. Существует
способ разрешения пользователям входить в систему, даже если
сервер глобальных каталогов не работает, но с этим способом
сопряжен определенный риск безопасности.
Если Active Directory работает в собственном режиме (native
mode), то сервер глобальных каталогов отвечает за проверку
принадлежности пользователя к универсальной группе. Если вы
решили разрешить пользователям вход во время сбоя, то проверка
принадлежности пользователей к универсальной группе
осуществляться не будет. Если вы назначили эксплицитные отказы
членам определенных универсальных групп, то эти отказы не
будут действовать, пока сервер глобальных каталогов не будет
приведен обратно в режим онлайн.
Если вы решили, что должны позволить пользователям входить
в систему, то вам нужно будет изменить системный реестр на
всех контроллерах домена. Помните, что изменение системного
реестра опасно, и что допущенные ошибки могут уничтожить
Windows. Поэтому я рекомендую сделать полную резервную копию
системы, прежде чем продолжать.
Учитывая сказанное, откройте редактор реестра (Registry
Editor) и перейдите по древу реестра к
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa.
Теперь создайте DWORD значение с названием IgnoreGCFailures и
задайте значение 1. Вам придется перезагрузить контроллеры
домена после внесения этих изменений.
Сбои сервера DNS
Если вы внезапно обнаружили, что ни один из ваших
пользователей не может войти в сеть, а ваши контроллеры домена
и серверы глобальных каталогов, кажется, работают нормально,
то, возможно, возникла проблема с DNS сервером. Active
Directory полностью зависит от службы DNS.
DNS сервер содержит записи хостов для каждого компьютера в
вашей сети. Компьютеры в вашей сети используют эти записи
хостов для разрешения компьютерных имен на IP адресах. Если
возникает сбой на DNS сервере, то разрешение имен хостов также
не будет работать, что в свою очередь повлияет на процесс
входа.
Существует два момента, которые вам необходимо знать
относительно сбоев DNS, связанных с проблемами входа. Первое,
проблемы входа могут и не возникнуть немедленно. ОС Windows
содержит DNS кэш, который включает результаты предыдущих DNS
запросов. Этот кэш не позволяет рабочим станциям переполнять
DNS серверы запросами разрешения имен для одних и тех же
объектов снова и снова.
Во многих случаях рабочие станции будут иметь в КЭШе IP
адреса контроллеров домена и серверов глобальных каталогов. Но
даже в этом случае элементы в DNS КЭШе со временем устаревают
и нуждаются в обновлении. Скорее всего, вы начнете замечать
проблемы входа, когда срок действия записей хоста в КЭШе
начнет истекать.
Второе, что вам нужно знать о сбоях DNS сервера, это то,
что зачастую при их наличии существует множество других
симптомов помимо проблем входа. Если только машины в вашей
сети не настроены на использование вторичного DNS сервера в
случае сбоя основного DNS сервера, вся среда Active Directory
со временем придет к полной остановке. Хотя существуют
исключения, отсутствие DNS сервера в сети Active Directory
обычно ведет к тотальному сбою взаимодействия.
Заключение
Хотя я обсудил некоторые из основных причин, вызывающих
проблемы входа в сетях Active Directory, важной частью
процесса диагностирования является учет того, насколько широко
распространена проблема. К примеру, если только один узел в
большой сети имеет проблемы входа, то вы, вероятно, исключаете
отказы DNS или глобальных каталогов. Если бы отказы DNS или
глобальных каталогов были причиной, то проблема, скорее всего,
носила бы более широко распространенный характер. Если
проблема затронула только одну машину, то она, скорее всего,
связана с настройкой этой машины, ее подключаемостью или
пользовательской учетной записью.