Наверняка админы AD в курсе что кроме пароля пользователя существует еще и пароль компьютера.
В доменной среде, все доменные компьютеры так или иначе взаимодействуют с контроллерами домена (далее — КД). Если рассмотреть процесс взаимодействия подробнее, то можно сказать, что каждый компьютер для взаимодействия с КД устанавливает безопасный канал коммуникации (secure channel, далее — schannel). Упрощая, этот канал представляет собой сессию между КД и компьютером. Чтобы эта сессия была безопасной, она шифруется, при помощи ключа, известного только КД и самому компьютеру. В качестве этого ключа выступает пароль учетной записи компьютера в домене (не путать с паролями доменных пользователей).
При попытке обмена данными с КД, КД в первую очередь проверяет, совпадает ли пароль, который предоставляет компьютер для установки schannel, с тем, который хранится в базе Active Directory. Если пароль совпадает - канал устанавливается и происходит дальнейшая коммуникация между компьютером и КД (например логин пользователя). В случае же, если пароли не совпадают, возникает наша злополучная ошибка: "The trust relationship between this workstation and the primary domain failed".
По умолчанию, в целях безопасности пароль учетки компьютера автоматически меняется раз в 30 дней. Смену пароля инициирует компьютер, при условии, что есть связь с КД, так как для дальнейшей успешной установки schannel, пароль должен измениться не только на локальной машине, но и на контроллере. Если связи с КД нет, то смена пароля откладывается до ее появления. Замечу, что такое поведение начинается с Windows Vista, в ранних версиях пароль мог смениться без связи с КД, что приводило к вышеописанной ошибке. Для избежания этой ситуации, был предусмотрен механизм (который сохранился и в текущих версиях Windows), который сохранял старый пароль. Таким образом при попытке логина, если schannel не может быть установлен с новым паролем, машина всегда пытается использовать для его установки сохранный старый пароль, и иногда это помогает избежать появления проблем.
Из всего вышесказанного, также вытекает важный вывод: если вы делаете бэкап Active Directory, то старайтесь делать его не реже 30 дней. Учитывая, что машины помнят прошлый пароль - это максимальный гарантированный срок, при котором все машины смогут войти в домен (со старым или новым паролем) после восстановления. С каждым последующим днем, количество таких машин будет уменьшаться, вплоть до того, что на 61 день, в домен не сможет войти ни одна машина.
Что же делать, если все таки у нас возникла такая ошибка? Как теперь понятно - необходимо изменить пароли учетки компьютера локально и на контроллере домена, чтобы они совпадали.
Сделать это можно двумя способами. Самый простой способ Powershell.
Test-ComputerSecureChannel
Reset-ComputerMachinePassword -Credential (Get-Credential) -Server DC
Первый командлет покажет вам статус schannel в настоящий момент времени (true - все ок, false - все плохо), второй командлет сбросит пароли. Обратите внимания, что для этой операции необходимо ввести доменные учетные данные, без них ничего не выйдет. Сервер указывать необязательно, но если не выходит указываете свой КД.
Командная строка.
nltest /sc_query:domain.name
nltest /sc_reset:domain.name
или
netdom.exe resetpwd /s:DC /ud:"DOMAIN\user" /pd:"pass"
То же самое, что и первый случай. Тест и смена. Вывод покажет «NERR_Success» в случае успеха, и слово «ERROR» ежели что-то пошло не так.
No comments:
Post a Comment
А что вы думаете по этому поводу?