При настройке нового узла RDS фермы на Windows Server 2022/2019/2016/2012 R2 вы можете столкнуться со следующим всплывающим предупреждением в в трее:
Remote Desktop Service will stop working in xxx days.
При этом в Event Viewer присутствуют предупреждения с EventID 18:
Log Name: System Source: Microsoft-Windows-TerminalServices-Licensing Level: Warning Description: The Remote Desktop license server SRV1 has not been activated and therefore will only issue temporary licenses. To issue permanent licenses, the Remote Desktop license server must be activated.
Эти ошибки указывают на то, что ваш RDS работает в режиме льготного периода лицензирования. В течении grace периода вы можете использовать Remote Desktop Session Host без активации RDS лицензий в течении 120 дней. Когда grace период закончится, пользователи не смогут подключиться к RDSH с ошибкой:
Remote Desktop Services will stop working because this computer is past grace period and has not contacted at least a valid Windows Server 2012 license server. Click this message to open RD Session Host Server Configuration to use Licensing Diagnosis.
Количество дней до окончания RDS Grace Period можно вывести с помощью команды:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays
Проверка параметров лицензирования на сервере Remote Desktop Services
Чтобы идентифицировать проблему, запустите “Средство диагностики лицензирования удаленных рабочих столов” — lsdiag.msc (Administrative Tools -> Remote Desktop Services -> RD Licensing Diagnoser). В окне утилиты будет отображаться такая ошибка:
В английской версии Windows Server ошибка выглядит так:
Licensing mode for the Remote Desktop Session Host is not configured.
Number of licenses available for clients: 0
Set the licensing mode on the Remote Desktop Session Host server to either Per User or Per Device. Use RD Licensing Manager to install the corresponding licenses on the license server
The Remote Desktop Session Host server is within its grace period, but the Session Host server has not been configured with any license server.
Как вы видите, на RDS хосте нет доступных клиентам лицензий, т.к. режим лицензирования не задан.
Скорее всего проблема в том, что администратор не задал для этого хоста имя/адрес сервера лицензирования RDS и/или режим лицензирования. Это несмотря на то, что при развертывании хоста RDS в настройка Deployment уже был указан тип лицензирования (Configure the deployment -> RD Licensing).
Настройка режима лицензирования RDS в Windows Server
Вы можете настроить параметры лицензирования RDS хоста несколькими способами:
- С помощью PowerShell
- Через реестр Windows
- С помощью групповых политик (предпочтительно)
Настройка режима лицензирования через GPO
Для настройки параметров сервера лицензирования на хосте RDS нужно использовать доменный редактор GPO (gpmc.msc) или локальный редактор политик gpedit.msc.
На отдельностоящем хосте RDSH (в домене и в рабочей группе) проще всего использовать локальную политику. Перейдите в раздел Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Лицензирование (Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing).
Нас интересуют две политики:
- Использовать указанные серверы лицензирования удаленных рабочих столов (Use the specified Remote Desktop license servers) — включите политику и укажите адрес сервера лицензирования RDS. Если сервер лицензий RDS CAL запущен на этом же сервере, укажите 127.0.0.1. Через запятую допустимо указать адреса нескольких хостов с ролью RDS Licensing;
- Set the Remote Desktop licensing mode – выберите нужный режим лицензирования. В нашем примере Per User.
Remote Desktop Issue. There is a problem with your Remote Desktop license, and your session will be disconnected in 60 minutes. Contact your system administrator to fix the problem.
Настройка режима лицензирования RDS из командной строки PowerShell
Откройте консоль PowerShell и проверьте, задан ли на вашем хосте адрес сервера лицензирования RDS:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()
Если сервер лицензирования RDS не задан, его можно указать командой:
$obj.SetSpecifiedLicenseServerList("rdslic1.winitpro.ru")
Также можно нужно задать тип лицензирования (4 — Per User, или 2 — Per Device):
$obj.ChangeMode(4)
Get-ADObject -Filter {objectClass -eq 'serviceConnectionPoint' -and Name -eq 'TermServLicensing'}
Также можно настроить параметры лицензирования RDS хоста через сервер с ролью RD Connection Broker:
Set-RDLicenseConfiguration -LicenseServer @("rdslic1.winitpro.ru","rdslic2.winitpro.ru") -Mode PerDevice -ConnectionBroker "hq-rdcb1.winitpro.ru"
Настроить параметры лицензирования RDS через реестр
В ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core нужно изменить значение DWORD параметра с именем LicensingMode с 5 (режим лицензирования не задан) на:
- 2 — если используется лицензирование на устройства (Per Device)
- 4 — при использовании RDS лицензирования на пользователей (Per User)
Вы можете изменить параметр реестра вручную через regedit.exe или следующими командами PowerShell из модуля управления реестром:
# Укажите тип лицензирования RDS 2 – Per Device CAL, 4 – Per User CAL
$RDSCALMode = 2
# Имя сервера лицензирования RDS
$RDSlicServer = "rdslic1.winitpro.ru"# Задаем имя сервера и тип лицензирования в реестре
New-Item "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers"
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value $RDSlicServer -PropertyType "MultiString"
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core\" -Name "LicensingMode" -Value $RDSCALMode
После внесения изменений нужно перезагрузить RDS хост. Затем откройте консоль диагностики лицензирования RDS. Если вы все настроили правильно, должно появится число доступных RDS лицензий (Number of licenses available for clients) и указан режим лицензирования (Licensing mode: Per device)
RD Licensing Diagnoser did not identify any licensing problems for the Remote Desktop Session Host.
Вы можете проверить доступность портов с помощью комнадлета Test-NetConnection. Если порты закрыты на локальном брандмауэре Windows Defender Firewall, вы можете открыть порты с помощью командлетов из модуля NetSecurity.
Также обратите внимание, что, если на сервере RD Licensing Server установлена, например, Windows Server 2016 и CAL для RDS 2016, вы не сможете установить RDS CAL лицензии для Windows Server 2019 или 2022. Ошибка “Remote Desktop Licensing mode is not configured” сохранится, даже если вы указали правильные тип лицензий и имя сервера лицензирования RDS. Старые версии Windows Server просто не поддерживают RDS CAL для более новых версий WS.
При этом в окне RD License Diagnoser будет отображаться надпись:
The Remote Desktop Session Host is in Per User licensing mode and no Redirector Mode, but license server does not have any installed license with the following attributes: Product version: Windows Server 2016 Use RD Licensing Manager to install the appropriate licenses on the license server.
Сначала Вам придется обновить версию Windows Server на сервере лицензирования (или развернуть новый RD License host). Более новая версия Windows Server (например, WS 2019) поддерживает RDS CAL для всех предыдущих версий Windows Server.