
Что такое RDS и какие роли нужны
Remote Desktop Services — набор ролей Windows Server для публикации полных рабочих столов и приложений (RemoteApp) на серверных хостах (RD Session Host), с балансировкой и переподключением сеансов через RD Connection Broker, веб-порталом RD Web Access, при необходимости внешним шлюзом RD Gateway и отдельной службой RD Licensing (CAL для пользователей/устройств).
Минимальный стенд (пример):
- 2× RD Session Host (сеансовые хосты)
- 1× менеджер с ролями RD Connection Broker + RD Web Access + RD Licensing (для пилота роли можно объединить на одном сервере)
Предварительно в AD:
- Все серверы добавлены в один домен и помещены в одну OU;
- Создана группа (например, rdsh-servers) и добавлены туда все RDSH;
- Под сетевые профили пользователей (опционально) подготовлен общий каталог для User Profile Disks (UPD).
Установка RDS через Server Manager (Standard deployment)
Откройте Server Manager, добавьте в пул все серверы (All Servers → Add Servers):

Запустите мастер: Add Roles and Features → Remote Desktop Services installation → Standard deployment → Session-based deployment.

Назначьте роли по серверам (пример ниже: RDCB+RDWA на менеджере, RDSH на всех узлах):

Подтвердите и дождитесь развертывания:
После установки откройте Server Manager → Remote Desktop Services → Overview:

В Tasks → Edit Deployment Properties задайте:
- Сервер лицензирования и режим RDS CAL (Per User или Per Device);
- URL RD Web Access;
- (Позже) SSL-сертификаты для RDGW/RDWeb/Publishing/Redirector.
Для изолированного сценария (без брокера/веба, на одиночном хосте) см. вариант Standalone RDSH (работа в рабочей группе).
Создаем коллекцию сеансов и подключаем пользователей
Перейдите в Remote Desktop Services → Collections → Tasks → Create Session Collection:

Добавьте хосты RD Session Host в коллекцию:

Укажите группы пользователей (удалите Domain Users, добавьте свои, например RDS-Users) и, если необходимо, включите User Profile Disks. Далее — Create.
Чтобы редактировать параметры, откройте свойства коллекции (Tasks → Edit Properties):

Здесь же публикуются RemoteApp (приложения) и задаются лимиты сеансов (тайм-ауты активных/разъединенных сессий). О тайм-аутах есть хороший разбор с картинками.
Сертификаты и HTTPS для RDS-ролей (кратко)
Чтобы убрать предупреждение об опасном подключении и включить SSO, назначьте корректные SSL-сертификаты для ролей:
- RD Gateway, RD Web Access, RD Publishing, RD Redirector.
Через PowerShell (пример для единого PFX и брокера $RDSCB):
$RDSCB = "msk-rdsman.contoso.local"
$Path = "C:\certs\rds-cert.pfx"
$Pwd = ConvertTo-SecureString "StrongPfxPassword!" -AsPlainText -Force
Set-RDCertificate -Role RDGateway -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDWebAccess -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDPublishing -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDRedirector -ImportPath $Path -Password $Pwd -ConnectionBroker $RDSCB -Force
Get-RDCertificate
Внешний доступ без VPN безопаснее осуществлять через RD Gateway (развертывается отдельно; есть подробное руководство).
Лицензирование (RDS CAL)
Установите роль Remote Desktop Licensing (можно на брокере), активируйте сервер лицензий и укажите в настройках развертывания адрес этого сервера и режим лицензий (Per User/Per Device). Параметры задаются в Edit Deployment Properties → RD Licensing.
Полезно помнить ограничения: обычный Windows Server без RDS дает только 2 административных RDP-подключения; полноценные сессии пользователей требуют RDS CAL.
Публикация приложений (RemoteApp) и доступ
Публикуйте приложения в свойствах коллекции (RemoteApp Programs → Publish) или через PowerShell:
New-RDRemoteApp -Alias "Chrome" -DisplayName "Google Chrome" `
-FilePath "C:\Program Files\Google\Chrome\Application\chrome.exe" `
-ShowInWebAccess 1 -CollectionName "General" -ConnectionBroker $RDSCB
Пользователи могут заходить через:
- RD Web Access (веб-портал),
- ярлыки .rdp/RemoteApp,
- или напрямую на FQDN фермы (если настроен брокер и DNS запись).
Быстрое развертывание RDS фермы PowerShell (с нуля)
Ниже — сокращенный пример: создание коллекции, назначение групп, публикация RemoteApp. (Развертывание ролей — через GUI, как выше, или автоматизацией по вашему стандарту.)
$RDSCB = "msk-rdsman.contoso.local"
$RDSH1 = "msk-rds1.contoso.local"
$RDSH2 = "msk-rds2.contoso.local"
# Коллекция
New-RDSessionCollection `
-CollectionName "General" `
-SessionHost $RDSH1,$RDSH2 `
-ConnectionBroker $RDSCB `
-CollectionDescription "General users"
# Доступ
$Groups = @("CONTOSO\RDS-Users","CONTOSO\ServiceDesk")
Set-RDSessionCollectionConfiguration -CollectionName "General" -UserGroup $Groups
# Публикация приложения
New-RDRemoteApp -Alias "WordPad" -DisplayName "WordPad" `
-FilePath "C:\Program Files\Windows NT\Accessories\wordpad.exe" `
-ShowInWebAccess 1 -CollectionName "General" -ConnectionBroker $RDSCB
Сеть, брандмауэр и диагностика
Откройте порты на Windows Firewall и внешнем ACL провайдера Windows VPS:
- RD Web: 443/TCP
- RD Gateway: 443/TCP
- RDP к RDSH через брокера: 3389/TCP (+ 3389/UDP для улучшенной графики)
- Межсерверные соединения брокера/SQL — в соответствии с вашей схемой
Быстрые проверки с клиента:
Test-NetConnection rds.contoso.ru -Port 443 # RDWeb/RDGW
Test-NetConnection rds.contoso.ru -Port 3389 # RDP (если публикуете напрямую)
О «зависании»/черном экране при UDP-транспорте RDP есть отдельный разбор.
Частые проблемы и быстрые решения
- Пользователь не попадает в коллекцию. Проверьте, находится ли он в нужной группе доступа к коллекции (а не просто в Domain Users).
- Не виден брокер/ошибки переподключения. Проверьте DNS-запись фермы, доступность базы брокера и соответствующие порты; для HA у брокера — Always On в SQL.
- Сессии не завершаются/висят. Настройте лимиты (таймауты) для активных/разъединенных сессий на вкладке Session коллекции.
Требуется безопасный внешний доступ. Разверните RD Gateway (HTTPS, политики доступа, сертификат).