Установка и активация сервера лицензирования RDS на Windows Server 2019/2016

В это статье мы рассмотрим процесс установки, настройки и активации роли сервера лицензирования удаленных рабочих столов (Remote Desktop Licensing) на базе Windows Server 2019 и 2016, а также процедуру установки и активации клиентских терминальных (RDS CAL).

Напомню, что после установки роли терминального сервера Remote Desktop Session Host, пользователи могут использовать его только в течении пробного периода 120 дней, после окончания которого возможность подключения к удаленному RDS серверу пропадает. Согласно схеме лицензирования Microsoft, все пользователи или устройства, подключающиеся к рабочему столу RDS сервера, должны быть лицензированы. Для учета и выдачи терминальных лицензий (RDS CAL) существует отдельная служба в роли RDS — Remote Desktop License Server.

Установка роли Remote Desktop Licensing в Windows Server 2019/2016

Вы можете установить компонент Remote Desktop Licensing на любом сервере домена, не обязательно устанавливать его на одном из серверов фермы RDSH.

Переда началом установки сервера лицензирования RDS нужно добавить данный хост (или убедиться, что у вас есть право на добавление) в доменную группу Terminal Server License Servers, иначе сервер не сможет выдать CAL типа RDS Per User пользователям домена.

Установить службу Remote Desktop Licensing можно через консоль Server Manager. Для этого в мастере Add Roles and Features выберите роль Remote Desktop Services.

windows server 2016 роль Remote Desktop Services

В качестве компонента роли нужно выбрать службу Remote Desktop Licensing.

Remote Desktop Licensing - служба лицензирования терминалов

Осталось дождаться окончания установки роли.
установка службы Remote Desktop Licensing

Для управления службой RDS-Licensing используется консоль Remote Desktop Licensing Manager — licmgr.exe.

 

В Windows Server стандартные компоненты и роли проще всего установить с помощью PowerShell. Для установки службы лицензирования RDS и утилиты RD Licensing Diagnoser достаточно выполнить одну команду:

Install-WindowsFeature RDS-Licensing –IncludeAllSubFeature -IncludeManagementTools

Для вывода списка RDS служб, установленных на сервере, используйте команду:

Get-WindowsFeature -Name RDS* | Where installed

powershell проверить какие службы RDS установлены на Windows Server

Активация сервера лицензий RDS в Windows Server

Чтобы сервер лицензирования RDS мог выдавать лицензии клиентам, его необходимо активировать. Для этого, откройте консоль Remote Desktop Licensing Manager (licmgr.exe), щелкните ПКМ по имени вашего сервера и выберите пункт меню Activate Server.

активация сервера терминальных лицензий

Запустится мастер активации сервера лицензирования RDS, в котором нужно будет выбрать желаемый метод активации. Если ваш сервер имеет доступ в Интернет, он может автоматически подключиться к серверам Microsoft. Если доступа в интернет с сервера нет, можно активировать сервер через веб браузер или по телефону.

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

Далее нужно будет заполнить ряд информации о вашей организации (часть полей является обязательными).
информация об организации и компании

Осталось нажать кнопку Finish.

сервер лицензирования RDS успешно активирован

Щелкните в консоли по имени сервера правой клавишей и выбрать пункт Review Configuration. Здесь можно убедиться, что данный сервер лицензий RDS является активированным и может быть использован для активации RDS клиентов в домене.

  • This license server is a member of the Terminal Server License Servers group in Active Directory. This license server will be able to issue RDS Per User CALs to users in the domain, and you will be able to track the usage of RDS Per User CALs.
  • This license server is registered as a service connection point (SCP) in Active Directory Domain Services.
%MINIFYHTMLd8bf638a0cd8a9e420ee5c92ff4302847% %MINIFYHTMLd8bf638a0cd8a9e420ee5c92ff4302848%

Review Configuration

Типы клиентских терминальных лицензий (RDS CAL)

Каждый пользователь или устройство, которое подключается к серверам Remote Desktop Session Host, должно иметь клиентскую лицензию (CAL — client access license). Есть два типа терминальных CAL.

  • На устройство (Per Device CAL) – это постоянный тип лицензии, назначающийся компьютеру или устройству, которое подключается к RDS серверу более одного раза (при первом подключении устройства ему выдается временная лицензия). Данные лицензии не являются конкурентными, т.е. если у вас 10 лицензий Per Device, то к вашему RDS серверу смогут подключится всего 10 компьютеров. Актуальная OVL лицензия называется так: WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP DvcCAL
  • На пользователя (Per User CAL) – такой тип лицензии позволяет одному пользователю подключиться к серверу RDS с любого количества компьютеров/устройств. Данный тип лицензий привязывается к учетной записи пользователя в Active Directory, но выдается не навсегда, а на определенный период времени. Лицензия выдается на срок от 52 до 89 дней (случайное число). Актуальная Open Value лицензия этого типа называется так: WinRmtDsktpSrvcsCAL 2019 SNGL OLV NL Each AP UsrCAL.
    Если вы попытаетесь использовать RDS CAL Per User 2019 в рабочей группе (не в домене), то RDSH сервер будет каждые 60 минут принудительно завершать сеанс пользователей с сообщением: “Проблема с лицензией удаленных рабочих столов и ваш сеанс будет завершен через 60 мин / There is a problem with your Remote Desktop license, and your session will be disconnected in 60 minutes ”. Поэтому для RDS серверов в среде workgroup нужно использовать только лицензирование на устройство — Per Device RDS CAL. Проблема с лицензией удаленных рабочих столов и ваш сеанс будет завершен через 60 мин
Примечание. Отметим, что 2016 RDS CAL можно установить только на сервере лицензирования под управлением Windows Server 2016 или 2019. Установка RDS CALs для более новые версий Windows Server на предыдущие версии Windows не поддерживается. Т.е. вы не сможете установить 2016 RDS CAL на хост лицензирования Windows Server 2012 R2.

При попытке добавить новые RDS CAL 2019 на Windows Server 2016 появится ошибка:

rds ошибка неверный код при добавлении лицензий RDS CAL

RD Licensing Manager
The license code is not recognized. Ensure that you have entered the correct license code.

Установка клиентских лицензий RDS CAL в Windows Server 2019/2016

Теперь на сервер лицензирования нужно установить приобретенный пакет терминальных лицензий (RDS CAL).

В консоли Remote Desktop Licensing Manager щелкните ПКМ по серверу и выберите Install Licenses.

Установка терминальных CAL на RDS сервере

Выберите способ активации (автоматически, через веб или по телефону) и программу лицензирования (в нашем случае Enterprise Agreement).

В сеть утекло уже довольно много enterprise agreement номеров для RDS (4965437). Найти номера думаю, не составит проблемы. Обычно даже не нужно искать кряки или активаторы.
программа лицензирования Enterprise Agreement

Следующие шаги мастера зависят от того, какой тип лицензирования выбран. В случае Enterprise Agreement нужно указать его номер. Если выбран тип лицензирования License Pack (Retail Purchase), нужно будет указать 25-символьный ключ продукта, полученный от Microsoft или партнера. номер лицензионного соглашения

Укажите тип продукта (Windows Server 2016 или 2019), тип лицензии (RDS Per User CAL) и количество терминальных лицензий, которые нужно установить на сервере.
тип и количество RDS лицензий

После этого, сервер может выдавать лицензии (RDS CAL) клиентам.

Вы можете сконвертировать RDS лицензии User CAL в Device CAL (и наоборот) с помощью контекстного меню Convert Licenses в консоли RD Licensing Manager.

сонвертировать rds cal из user в device

Если у вас закончились свободные лицензии, вы можете отозвать ранее выданные лицензии RDS Device CAL для неактивных компьютеров с помощью следующего скрипта PowerShell:

$RevokedPCName=”msk-pc2332”
$licensepacks = Get-WmiObject win32_tslicensekeypack | where {($_.keypacktype -ne 0) -and ($_.keypacktype -ne 4) -and ($_.keypacktype -ne 6)}
$licensepacks.TotalLicenses
$TSLicensesAssigned = gwmi win32_tsissuedlicense | where {$_.licensestatus -eq 2}
$RevokePC = $TSLicensesAssigned | ? sIssuedToComputer -EQ $RevokedPCName

$RevokePC.Revoke()

Можно отозвать до 20% Per-Device RDS CALs. Per-User CALs отозвать нельзя.

Отчеты об использовании лицензий CAL на RDS

В консоли управления CAL лицензиями RDS можно сформировать отчет по использованию лицензий. Для этого в контекстном меню сервера выберите Create Report -> CAL Usage.

сгенерирвать отчет об использовании лицензий rds cal

Однако, я предпочитаю использовать PowerShell для построения отчетов об использовании RDS CAL.

Следующий скрипт покажет оставшееся количество лицензий во всех паках RDS CAL:

Import-Module RemoteDesktopServices -ErrorAction Stop
Set-Location -Path 'rds:' -ErrorAction Stop
$licenses = (Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\* | Where-Object Name -Like "-Per User-*").Name
$total=0;
$issued=0;
foreach ($license in $licenses) {
$count=(Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\$license\TotalLicenses).CurrentValue
$total= $total + $count
$count2=(Get-Item -Path RDS:\LicenseServer\LicenseKeyPacks\$license\IssuedLicensesCount).CurrentValue
$issued= $issued + $count2
}
$available = $total - $issued
Write-Host "Total Licenses available: $available"

Вы можете запускать этот PowerShell скрипт через Zabbix и генерировать алерт, если оставшееся количество лицензий меньше, например, 5.

Следующий скрипт позволит получить таблицу по использованию Per User лицензий:

Import-Module RemoteDesktopServices -ErrorAction Stop
Set-Location -Path 'rds:' -ErrorAction Stop
$path = “C:\Logs\Reports\RDS_CAL_Report.csv”
$fileName = (Invoke-WmiMethod Win32_TSLicenseReport -Name GenerateReportEx).FileName
$fileEntries = (Get-WmiObject Win32_TSLicenseReport | Where-Object FileName -eq $fileName).FetchReportEntries(0,0).ReportEntries
$objArray = @()
foreach($entry in $fileEntries){
$objArray += $entry | select User, ProductVersion, CALType, ExpirationDate
$objArray[-1].User = $objArray[-1].User.Split('\') | select -Last 1
$time = $objArray[-1].ExpirationDate.Split('.') | select -first 1
$objArray[-1].ExpirationDate = [datetime]::ParseExact($time, "yyyyMMddHHmmss", $null)
}
$objArray | Export-Csv -Path $path -Delimiter ',' -NoTypeInformation

отчет об использовании лицензий rds per user cal с помощью powershell

Удаление RDS CAL с сервера лицензирования

Если вы хотите перенести свой набор лицензий RDS CAL с одного сервера лицензирования Remote Desktop на другой, вы можете удалить установленные лицензии с сервера лицензирования с помощью PowerShell.

Следующая команда выведет список установленных пакетов RDS лицензий на сервере:

Get-WmiObject Win32_TSLicenseKeyPack|select-object KeyPackId,ProductVersion,TypeAndModel,AvailableLicenses,IssuedLicenses |ft

rdc licensing cal Win32_TSLicenseKeyPack

Найдите значение KeyPackId для пакета RDS CAL, который нужно удалить и выполите команду:

wmic /namespace:\\root\CIMV2 PATH Win32_TSLicenseKeyPack CALL UninstallLicenseKeyPackWithId KEYPACKID

Также вы можете полностью удалить все наборы CAL, пересоздав базу лицензий RDS. Для этого остановите службу Remote Desktop Licensing:

Stop-Service TermServLicensing

Переименуйте файл C:\Windows\System32\lserver\TLSLic.edb в C:\Windows\System32\lserver\TLSLic.bak и запустите службу:

Start-Service TermServLicensing

После этого все RDS CAL лицензии будут удалены, и вы должны активировать их заново.

Настройка серверов RDSH на использование сервера лицензий RDS

После активации службы сервера лицензирования RDS можно перенастроить терминальные сервера RD Session Host на получение лицензий с данного сервера. Выбрать тип лицензий и указать имя терминального сервера из графического интерфейса Server Manager, с помощью PowerShell или групповой политики.

Чтобы изменить адрес сервера лицензирования на хосте RDS, откройте Server Manager -> Remote Desktop Services -> Collections. В правом верхнем меню “Tasks” выберите “Edit Deployment Properties”.

rds изменить настройки Edit Deployment Properties

В настройках перейдите на вкладку RD Licensing, выберите тип лицензирования (Select the Remote Desktop licensing mode) и сервер RDS лицензий (Specify a license server). Нажмите Add -> Ok.

rdsh изменить параметры лицензирования хоста

Если на RDSH сервере не задан тип лицензирования, вы столкнетесь с ошибкой “Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов”.

Вы можете изменить адрес сервера лицензирования RDS и тип CAL с помощью PowerShell:

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting

Затем укажите желаемый тип лицензирования:

$obj.ChangeMode(4)

Примечание. 4 указывается, если сервер должен использовать тип лицензирования Per User, 2 – если Per Device.

Теперь можно указать имя сервера лицензирования RDS:

$obj.SetSpecifiedLicenseServerList("rds-lic1.winitpro.ru")

И проверить настройки:

$obj.GetSpecifiedLicenseServerList()

Если вы хотите назначить настройки сервера лицензирования RDS через групповые политики, нужно создать новую GPO и назначить ее на OU с RDS серверами (либо вы можете указать имя сервера лицензирования RDS с помощью локального редактора групповых политик – gpedit.msc). Настройки лицензирования задаются в разделе: Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing.

В этом разделе имеется 2 интересующие нас политики:

  • Use the specified Remote Desktop license servers – здесь указывается адрес сервера лицензирования RDS;
  • Set the Remote Desktop licensing mode – выбор метода лицензирования (типа клиентских лицензий – RDS CAL).

GPO -> Remote Desktop Session Host -> Licensing

Хосты RDSH для получения лицензий с сервера RDS Licensing обращаются к нему по следующим портам. Убедитесь, что они не блокируются межсетевыми экранами (или Windows Firewall):

  • TCP/135 (Microsoft RPC)
  • UDP/137 (NetBIOS Datagram Service)
  • UDP/138 (NetBIOS Name Resolution)
  • TCP/139 (NetBIOS Session Service)
  • TCP/445 (SMB)
  • TCP 49152 – 65535 — RPC динамический диапазон адресов

Вы можете проверить доступность портов с помощью утилиты PortQry или командлета Test-NetConnection.

Проверить статус сервера лицензий и количество выданных лицензий можно с помощью утилиты Remote Desktop Licensing Diagnoser (lsdiag.msc). Утилиту RD Licensing Diagnoster можно установить на серверах с ролью RDSH через (Server Manager: Features -> Remote Server Administration Tools -> Role Administration Tools -> Remote Desktop Services Tools -> Remote Desktop Licensing Diagnoser Tools).

Если сервер RDSH не настроен на использование сервера лицензий RDS, в консоли Licensing Diagnoser будут присутствовать следующие предупреждения:

  • Licenses are not available for this Remoter Desktop Session Host server, and RD Licensing Diagnose has identified licensing problems for the RDSH
  • Number of licenses available for clients: 0
  • The licensing mode for the Remote Desktop Session Host server is not configured
  • Remote Desktop Session Host server is within its grace period, but the RD Session Host server has not been configured with any license server.

rds diagnoser недоступны лицензии

alert] Если вы установили RDSH на ознакомительно редакции Windows Server Evaluation, не забудьте перевести его в полноценную версию согласно инструкции. Без конвертации службы RDSH на таком хосте будут работать только 120 дней даже после того, как вы нацелите его на активированный сервер лицензий RDS.[/alert]

Если предупреждений нет, и вы видите сообщение “RD Licensing Diagnoser did not identify any licensing problems for the Remote Desktop Session Host server”, значит RDSH сервер может получать лицензии RDS CAL для пользователей.

RD Licensing Diagnoser

Примечание. В нашем случае после указания нового сервера лицензирования, на RDP клиенте при подключении стала появляться ошибка “The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license”. Решение – удаление ключа L$RTMTIMEBOMB из реестра.

Предыдущая статья Следующая статья


Комментариев: 44 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)