Устранение проблем с лицензированием терминального сервера (часть 4)

Опубликовано: 23 Апреля, 2023

  • Устранение проблем с лицензированием терминального сервера (часть 1)
  • Устранение проблем с лицензированием терминального сервера (часть 2)
  • Устранение проблем с лицензированием терминального сервера (часть 3)

В частях с первой по третью этой серии из четырех частей мы рассмотрели часто встречающиеся (или не очень часто встречающиеся) проблемы на стороне сервера. В этом заключительном сегменте мы углубимся в некоторые распространенные проблемы и решения, связанные с клиентами. Темы этого обсуждения будут включать:

  • Подробный обзор раздела реестра MSLicensing
  • Использование утилиты набора ресурсов TSCTST для расшифровки клиентских лицензий CAL
  • Популярные идентификаторы событий и поврежденные клиентские лицензии
  • Перенос клиентских лицензий с одного клиента на другой
  • Некоторые примечания об устройствах с тонкими клиентами

Проблемы, связанные с клиентом

Существует несколько проблем, связанных с клиентом, которые могут возникнуть из-за проблем с лицензированием. Тем не менее, любая хорошая методология устранения неполадок должна включать определенные шаги для устранения очевидных причин.

При попытке подключения к терминальному серверу, независимо от метода (клиент RDP, веб-соединение и т. д.), клиент должен увидеть заставку входа в систему. Если этого не наблюдается, проблема, вероятно, не связана с лицензированием и, скорее всего, связана с проблемой подключения. Временные клиентские лицензии выдаются при первом подключении, но постоянные клиентские лицензии не выдаются до тех пор, пока клиент не войдет в систему; однако в обоих случаях наблюдается заставка входа в систему.

Проверьте базовое подключение к серверу через PING или инициировав сеанс TELNET на TCP-порт 3389 (порт прослушивания терминальных служб по умолчанию), введя в командной строке клиента следующее:

где abcd = IP-адрес или полное доменное имя соответствующего терминального сервера.

Ключ реестра MSLicensing

Каждый клиент Windows хранит информацию о CAL сервера терминалов в реестре в следующем ключе:

Ключ MSLicensing содержит два подраздела, которые используются для хранения как уникальной информации о клиенте, так и любых лицензионных сертификатов, полученных с серверов лицензий.


HardwareID хранит случайный 20-битный двоичный идентификатор, относящийся к клиентскому компьютеру, и автоматически генерируется Windows. Этот идентификатор однозначно идентифицирует машину на сервере лицензий. Когда клиент получает клиентскую лицензию для служб терминалов с сервера лицензий, этот HardwareID записывается в базу данных лицензирования, чтобы связать клиента с клиентской лицензией. Эта запись вносится, когда клиентам выделяются как временные клиентские лицензии, так и постоянные лицензии.

Хранилище используется для хранения клиентских лицензий служб терминалов, выделенных сервером лицензий. Записи содержатся в подразделе с именем License00x, где X — числовой идентификатор, начинающийся с 0. Каждая запись License00x содержит отдельную клиентскую лицензию.

Запись License00x содержит четыре двоичных компонента, составляющих сертификат CAL служб терминалов:

  • Клиентская лицензия
  • Название компании
  • Объем лицензии
  • Код товара

Информацию в этих ключах можно просмотреть с помощью утилиты TSCTST, обсуждаемой далее.

Утилита TSCTST

В комплект ресурсов Windows Server 2003 входит утилита TSCTST, которую можно использовать для декодирования этой информации в реестре клиента. Простое выполнение TSCTST.EXE из командной строки на клиенте выведет наиболее важную информацию из CAL, но использование аргумента /a ( tsctst /a ) даст расширенное представление данных CAL, как показано на рис. 3.


Рисунок 3: TSCTST

TSCTST может предоставить много информации о клиентских лицензиях, содержащихся на клиентском компьютере. В приведенном выше примере вы можете увидеть четыре ключевых элемента информации:

  • Идентификатор оборудования клиента, встроенный в сертификат (HWID). Эта информация должна соответствовать записи реестра HardwareID клиента.
  • Имя выдающего сервера лицензий, домен, имя клиентского компьютера и идентификатор пользователя. Эмитент — это сервер лицензий, выдавший лицензию. Убедитесь, что этот сервер лицензий все еще активен в сети. Также убедитесь, что информация, выданная для компьютера, соответствует NetBIOS-имени клиентского компьютера.
  • Тип лицензии — также указан тип клиентской лицензии. Идентификатор лицензии может иметь один из нескольких вариантов:

    • A02-5.00-S — временная или постоянная клиентская лицензия Windows 2000 TS.
    • A02-5.02-S — временная или постоянная клиентская лицензия Windows Server 2003 TS.
    • A02-5.00-EX — клиентская лицензия Windows 2000 TS из пула «Встроенный».

    Является ли лицензия временной или постоянной CAL, определяется вторым критерием, выделенным красным цветом.

    • Дата выпуска и дата истечения срока действия. Проверьте дату истечения срока действия, чтобы узнать, не истек ли уже срок действия лицензии CAL.

    Многие проблемы с клиентскими лицензиями можно исправить, просто удалив раздел реестра MSLicensing. При удалении этого ключа клиент сгенерирует новый идентификатор оборудования и фактически станет новым клиентом с точки зрения лицензирования сервера терминалов. Терминальный сервер увидит новый HardwareID как нового уникального клиента и выделит новую клиентскую лицензию от имени клиента.

    Важно отметить, что, хотя может показаться, что ваши лицензии будут израсходованы преждевременно, этого не произойдет. Помните, что клиентские лицензии сдаются в аренду на ограниченный период времени. При удалении HardwareID на клиенте клиент фактически удаляется из среды, а новый экземпляр создается путем создания нового HardwareID (автоматически Windows). Лицензия CAL для аренды будет возвращена в пул в результате обычного истощения. Дополнительные сведения о процессе выделения см. в разделе « Перенос клиентской лицензии с одного компьютера на другой » далее в этой статье.

    Еще одно важное замечание заключается в том, что раздел реестра MSLicensing не используется, когда сервер терминалов, к которому подключается клиент, находится в режиме для каждого пользователя, поэтому удаление HardwareID не будет иметь никакого эффекта. В случае серверов терминалов в пользовательском режиме проверка и распределение лицензий не применяются.

    Если вы обнаружите, что ключ MSLicensing не создается автоматически, и вы убедились, что ваши серверы терминалов находятся в режиме для каждого устройства, проверьте разрешения в записи реестра MSLicensing. Создание ключа MSLicensing обрабатывается учетной записью SYSTEM; однако в ходе этого процесса вошедший в систему пользователь получает полный контроль над самим ключом. Если вы изменили разрешения для ключа HKLMSoftware или подраздела HKLMSoftwareMicrosoft, убедитесь, что учетной записи SYSTEM по-прежнему предоставлен ПОЛНЫЙ КОНТРОЛЬ для этого раздела и всех подразделов. В противном случае создание MSLicensing завершится ошибкой, и клиент не сможет подключиться. Вы также можете попробовать предоставить пользователям, прошедшим проверку подлинности, ПОЛНЫЙ КОНТРОЛЬ для ключа MSLicensing и его подразделов, хотя обычно в этом нет необходимости.

    Популярные идентификаторы событий и поврежденные клиентские лицензии

    Многие из следующих идентификаторов событий были упомянуты в первой, второй или третьей частях этой серии; однако многие из них связаны с потенциальными проблемами на стороне клиента. Вот некоторые из наиболее популярных записей журнала событий:

    Идентификатор события

    Источник

    Описание

    1000

    ТерминСервис

    Не удалось получить лицензию для пользователя <пользователь>, домен <домен>

    1003

    ТерминСервис

    Клиент службы терминалов <clientname> предоставил недействительную лицензию.

    1004

    ТерминСервис

    Терминальный сервер не может выдать клиентскую лицензию.

    1011

    ТерминСервис

    Клиент служб терминалов <имя_клиента> был отключен, так как срок действия его временной лицензии истек.

    Событие с кодом 1003 обычно регистрируется, когда клиент предоставляет серверу лицензий недействительную или поврежденную лицензию. Однако события с идентификаторами 1000, 1004 и 1011 также могут регистрироваться всякий раз, когда возникает проблема с разделом реестра MSLicensing на клиенте (поврежденный ключ, недопустимые разрешения и т. д.).

    Как упоминалось ранее, большинство этих проблем можно исправить, просто удалив раздел реестра MSLicensing. При следующем подключении к терминальному серверу (в режиме для каждого устройства) Windows автоматически повторно сгенерирует ключ MSLicensing с новым случайным HardwareID.

    Перенос клиентской лицензии с одной машины на другую

    Обычно возникает вопрос о переносе клиентской лицензии служб терминалов с одного клиента на другой, если у этого клиента либо произошел аппаратный сбой, либо он был окончательно выведен из эксплуатации, но в настоящее время использует маркер лицензии из пула.

    К сожалению, клиентские лицензии нельзя «перенести» с одного клиента на другой. Решение исходит от встроенного механизма истощения лицензий в службе лицензирования сервера терминалов Windows. Когда лицензии выделяются клиенту, на них ставится штамп с датой истечения срока действия не более 89 дней с даты выдачи. Однако серверы лицензий могут выдавать неограниченное количество временных клиентских лицензий на срок до 90 дней. То, что есть разница в один день, не случайно.

    Предположим, клиенту выдана последняя постоянная клиентская лицензия в пуле лицензий 1 июня, а срок действия установлен на 28 августа (89 дней). Позже в тот же день клиент терпит фатальную аппаратную ошибку и навсегда отключается от сети. В этот же день новый клиент подключается к сети и получает временную клиентскую лицензию, которая действует в течение 90 дней и истечет 29 августа. Каждый день, когда клиент подключается к терминальному серверу, он будет пытаться обновить временную клиентскую лицензию до постоянной, но не сможет этого сделать, поскольку постоянные клиентские лицензии недоступны. 28 августа (89-й день) постоянная клиентская лицензия отказавшего клиента будет возвращена в пул и будет выдана новому клиенту при следующем подключении до истечения срока действия 29 августа.

    Если вы окажетесь в ситуации, когда срок действия временной клиентской лицензии подходит к концу, а постоянные клиентские лицензии не будут доступны до даты истечения срока действия, вы можете обнаружить, что удаление раздела реестра MSLicensing при повторном подключении клиента является временным решением. Клиент сгенерирует новый HardwareID и будет выглядеть как совершенно новый клиент. Это позволит выдать компьютеру еще одну временную клиентскую лицензию, что обычно невозможно. Однако это не обходной путь для обхода лицензионных требований Microsoft, и его следует использовать в крайнем случае. При нормальных обстоятельствах 1-дневного перекрытия должно быть достаточно, чтобы все клиенты в вашей среде оставались подключенными, при условии, что вы адекватно отслеживаете использование лицензий и требования.

    Проблемы с тонким клиентом

    Устройства с тонкими клиентами уникальны тем, что работают либо на проприетарной ОС, либо на специализированной версии Windows. Если вы обнаружите, что у вас возникли проблемы, связанные с лицензированием устройства тонкого клиента, попробуйте обновить микропрограмму на устройстве до последней версии, доступной у поставщика. Некоторые обновления средств связи на стороне Windows Server могут вызвать проблемы с тонкими клиентами из-за изменений в системе безопасности. Вы также можете попробовать перепрошить прошивку, если подозреваете проблему с повреждением.

    На терминалах под управлением Windows вы можете попробовать удалить раздел реестра MSLicensing точно так же, как если бы клиент был ПК под управлением Windows.

    Наконец, если на ваших терминальных серверах все еще работает версия Windows Server 2003 до SP1, существует известная проблема с подключением тонкого клиента, которая была исправлена в исправлении. Эта проблема также наблюдается по следующей записи в журнале событий на сервере терминалов:

    Идентификатор события

    Источник

    Описание

    1004

    ТерминСервис

    Терминальный сервер не может выдать клиентскую лицензию.

    С тех пор это исправление было заменено Windows Server 2003 SP1, но его по-прежнему можно получить через службы поддержки продуктов Microsoft (PSS). Дополнительную информацию см. в статье Microsoft KB Q884570.

    Последние мысли

    В ходе этой серии из четырех частей вы познакомились с большим количеством информации и возможных решений распространенных проблем с лицензированием. Однако более важным аспектом является получение понимания того, как работает процесс лицензирования и какие «правила» задействованы с функциональной точки зрения. Понимание того, как функционирует процесс, безусловно, поможет более эффективному устранению неполадок.

    Всегда обращайтесь к журналам событий Windows, чтобы узнать, в чем может заключаться проблема. Несколько ресурсов, которые я обычно использую для быстрого поиска возможных причин, — это, конечно же, Google, а также база знаний Microsoft и отличный веб-сайт EventID.net (www.eventid.net). Этот сайт был первоначально создан членами сообщества и стал бесценным источником информации.

    Я также призываю вас ознакомиться с официальным документом Microsoft по лицензированию под названием « Лицензирование терминального сервера Windows Server 2003 », доступным на веб-сайте Microsoft. Я также написал несколько статей на этом сайте о лицензировании терминального сервера, которые могут оказаться полезными, так что не стесняйтесь ознакомиться с ними.

    • Устранение проблем с лицензированием терминального сервера (часть 1)
    • Устранение проблем с лицензированием терминального сервера (часть 2)
    • Устранение проблем с лицензированием терминального сервера (часть 3)