Развертывание Remote Desktop Gateway
Важно
В Yandex Cloud продукты Microsoft можно использовать только с вашими собственными лицензиями и только на выделенных хостах. Подробнее см. Использование своей лицензии для продуктов Microsoft.
Remote Desktop Gateway (RDGW) — сервис Windows Server для доступа к ресурсам, у которых нет выхода в интернет, через защищенный канал связи по протоколу HTTPS.
В сценарии пользователи из группы Administrators
получат доступ к тестовой виртуальной машине с использованием самоподписанного сертификата.
Чтобы развернуть инфраструктуру Remote Desktop Gateway:
- Подготовьте облако к работе.
- Создайте облачную сеть и подсети.
- Создайте группу безопасности.
- Создайте ВМ для шлюза.
- Настройте роль RDGW.
- Проверьте работу шлюза RDGW.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Примечание
Проверьте, что в платежном аккаунте указаны пользовательские данные, необходимые для выполнения требований лицензионной политики Microsoft. Без этих данных вы не сможете запустить продукт.
Необходимые платные ресурсы
В стоимость инсталляции RDGW входят:
- плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
- плата за использование динамических или статических публичных IP-адресов (см. тарифы Yandex Virtual Private Cloud);
- стоимость исходящего трафика из Yandex Cloud в интернет (см. тарифы Yandex Compute Cloud).
Создайте облачную сеть и подсети
Создайте облачную сеть rdgw-network
с подсетью в зоне доступности, где будут находиться виртуальные машины.
-
Создайте облачную сеть.
Консоль управленияCLIAPI- Выберите сервис VPC в каталоге, где требуется создать облачную сеть.
- Нажмите кнопку Создать сеть.
- Задайте имя сети
rdgw-network
. - Нажмите кнопку Создать сеть.
yc vpc network create --name rdgw-network
Где
rdgw-network
— имя сети.Результат:
id: qqppl6fduhct76qkjh6s folder_id: big67u7m5flplkc6vvpc created_at: "2021-06-09T10:49:07Z" name: rdgw-network default_security_group_id: enpa139ji55jti00u5sg
Воспользуйтесь методом REST API create для ресурса Network или вызовом gRPC API NetworkService/Create.
-
Создайте подсеть в сети
rdgw-network
.Консоль управленияCLIAPI- Выберите сервис VPC в каталоге, где требуется создать подсеть.
- Нажмите на имя облачной сети.
- Нажмите кнопку Добавить подсеть.
- Заполните форму: введите имя подсети
rdgw-subnet
, выберите нужную зону доступности из выпадающего списка (например,ru-central1-d
). - Введите CIDR подсети: IP-адрес и маску подсети:
10.1.0.0/16
. Подробнее про диапазоны IP-адресов в подсетях читайте в разделе Облачные сети и подсети. - Нажмите кнопку Создать подсеть.
yc vpc subnet create ` --name rdgw-subnet ` --zone ru-central1-d ` --network-name rdgw-network ` --range 10.1.0.0/16
Где
rdgw-subnet
— имя подсети.Результат:
id: e9b95m6al33r62n5vkab folder_id: big67u7m5flplkc6vvpc created_at: "2021-06-09T10:49:21Z" name: rdgw-subnet network_id: qqppl6fduhct76qkjh6s zone_id: ru-central1-d v4_cidr_blocks: - 10.1.0.0/16
Воспользуйтесь методом REST API create для ресурса Subnet или вызовом gRPC API SubnetService/Create.
Создайте группу безопасности
Создайте и настройте группу безопасности.
-
Выберите сервис VPC в каталоге, где требуется создать группу безопасности.
-
Откройте вкладку Группы безопасности.
-
Нажмите кнопку Создать группу.
-
Введите имя группы безопасности
my-rdgw-sg
. -
В поле Сеть выберите сеть, которой будет назначена группа безопасности —
rdgw-network
. -
В блоке Правила создайте следующие правила для управления трафиком по инструкции под таблицей:
Направлениетрафика Описание Диапазонпортов Протокол Типисточника Источник/Назначение Входящий icmp — ICMP CIDR 0.0.0.0/0 Входящий self-security Любой Любой Группа безопасности Текущая Входящий tcp 3389 TCP CIDR 0.0.0.0/0 Входящий rdgw 443 TCP CIDR 0.0.0.0/0 Исходящий default Любой Любой CIDR 0.0.0.0/0 - Выберите вкладку Исходящий трафик или Входящий трафик.
- Нажмите кнопку Добавить правило.
- В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.
- В поле Протокол укажите нужный протокол или оставьте Любой, чтобы разрешить передачу трафика по всем протоколам.
- В поле Назначение или Источник выберите назначение правила:
- CIDR — правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.
- Группа безопасности — правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.
- Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.
-
Нажмите кнопку Сохранить.
yc vpc security-group create --name=my-rdgw-sg `
--network-name rdgw-network `
--rule direction=ingress,protocol=icmp,v4-cidrs=[0.0.0.0/0],description=icmp `
--rule direction=ingress,port=any,protocol=any,predefined=self_security_group,description=self `
--rule direction=ingress,port=3389,protocol=tcp,v4-cidrs=[0.0.0.0/0],description=rdp `
--rule direction=ingress,port=443,protocol=tcp,v4-cidrs=[0.0.0.0/0],description=rdgw `
--rule direction=egress,port=any,protocol=any,v4-cidrs=[0.0.0.0/0],description=default
Результат:
id: enp136p8s2ael7ob6klg
folder_id: big67u7m5flplkc6vvpc
created_at: "2021-06-09T10:50:29Z"
name: my-rdgw-sg
network_id: qqppl6fduhct76qkjh6s
status: ACTIVE
rules:
- id: env98jerk9b3tcp68k61
description: icmp
direction: INGRESS
protocol_name: ICMP
protocol_number: "1"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
Воспользуйтесь методом REST API create для ресурса SecurityGroup или вызовом gRPC API SecurityGroupService/Create.
Создайте ВМ для шлюза
Создайте ВМ с публичным адресом:
-
На странице каталога в консоли управления
нажмите кнопку Создать ресурс и выберитеВиртуальная машина
. -
В блоке Образ загрузочного диска:
- Перейдите на вкладку Пользовательский.
- Нажмите кнопку Выбрать и в открывшемся окне выберите Создать новый.
- В поле Наполнение выберите
Образ
и в списке ниже выберите образ Windows Server 2022 Datacenter. Как загрузить свой образ для продуктов Microsoft подробнее см. в разделе Импортировать нужный образ. - (Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, если вы хотите автоматически удалять этот диск при удалении ВМ.
- Нажмите кнопку Добавить диск.
-
В блоке Расположение выберите зону доступности
ru-central1-d
. -
В блоке Диски и файловые хранилища задайте размер загрузочного диска
60 ГБ
. -
В блоке Вычислительные ресурсы перейдите на вкладку
Своя конфигурация
и укажите необходимую платформу, количество vCPU и объем RAM:- Платформа —
Intel Ice Lake
. - vCPU —
2
. - Гарантированная доля vCPU —
100%
. - RAM —
4 ГБ
.
- Платформа —
-
В блоке Сетевые настройки укажите:
- Подсеть — сеть
rdgw-network
и подсетьrdgw-subnet
. - Публичный адрес —
Автоматически
. - Группы безопасности —
my-rdgw-sg
.
- Подсеть — сеть
-
В блоке Общая информация задайте имя ВМ:
my-rds-gw
. -
Нажмите кнопку Создать ВМ.
Дождитесь, когда статус ВМ сменится на Running
, и сбросьте пароль:
- Выберите виртуальную машину.
- Нажмите кнопку Сбросить пароль.
- Укажите Имя пользователя, для которого нужно сбросить пароль. Если у ВМ не существует пользователя с таким именем, он будет создан с правами администратора.
- Нажмите кнопку Сгенерировать пароль.
- Сохраните Новый пароль. После закрытия окна он будет недоступен.
-
В терминале PowerShell создайте скрипт
setpass
для настройки пароля учетной записиAdministrator
через полеuser-data
в метаданных ВМ. Утилитаcloudbase-init
выполнит его при первом запуске.Примечание
Первая строка скрипта обязательно должна содержать только
#ps1
, иначе утилитаcloudbase-init
не выполнит скрипт.#ps1 Get-LocalUser | Where-Object SID -like *-500 | Set-LocalUser -Password (ConvertTo-SecureString "<ваш пароль>" -AsPlainText -Force)
-
Создайте ВМ и укажите в качестве источника метаданных созданный скрипт. В качестве параметра
security-group-ids
вставьте идентификатор группы безопасностиmy-rdgw-group
:yc compute instance create ` --name my-rds-gw ` --hostname my-rds-gw ` --memory 4 ` --cores 2 ` --platform standard-v3 ` --zone ru-central1-d ` --network-interface subnet-name=rdgw-subnet,ipv4-address=10.1.0.3,nat-ip-version=ipv4,security-group-ids=<id_my-rdgw-group> ` --create-boot-disk image-folder-id=standard-images,image-family=windows-2022-dc-gvlk ` --metadata-from-file user-data=setpass
Результат:
```
done (25s)
id: frmogfp7mm1kg87c25f3
folder_id: big67u7m5flplkc6vvpc
created_at: "2021-06-09T10:51:58Z"
name: my-rds-gw
zone_id: ru-central1-d
platform_id: standard-v3
resources:
memory: "4294967296"
cores: "2"
core_fraction: "100"
status: RUNNING
boot_disk:
mode: READ_WRITE
device_name: fhmplfvr7g6pfv63fsr7
auto_delete: true
disk_id: fhmplfvr7g6pfv63fsr7
network_interfaces:
- index: "0"
mac_address: d0:0d:18:83:c8:7b
subnet_id: e9b95m6al33r62n5vkab
primary_v4_address:
address: 10.1.0.3
one_to_one_nat:
address: 178.154.231.126
ip_version: IPV4
security_group_ids:
- enp136p8s2ael7ob6klg
fqdn: my-rds-gw.ru-central1.internal
scheduling_policy: {}
network_settings:
type: STANDARD
placement_policy: {}
```
Настройте роль RDGW
-
Подключитесь к созданной ВМ по протоколу RDP.
-
Установите необходимые роли и оснастки управления
:Install-WindowsFeature RDS-Gateway -IncludeManagementTools
Результат:
Success Restart Needed Exit Code Feature Result ------- -------------- --------- -------------- True No Success {Network Policy and Access Services, Remot...
-
Импортируйте модуль RDS:
Import-Module -Name RemoteDesktopServices
-
Создайте политику клиентского доступа, чтобы все учетные записи локальной группы
Administrators
могли подключаться к шлюзу RDGW. Сделать это можно через диск Windows PowerShell , который будет создан автоматически при импорте роли:New-Item -Path 'RDS:\GatewayServer\CAP' -Name 'Default-CAP' -UserGroups Administrators@Builtin -AuthMethod '1'
Результат:
Directory: RDS:\GatewayServer\CAP Name Type CurrentValue GP PermissibleValues PermissibleOperations ---- ---- ------------ -- ----------------- --------------------- Default-CAP - Get-Item, Get-ChildItem, Remove-Item,...
-
Создайте политику доступа к ресурсам, которая разрешит всем учетным записям локальной группы
Administrators
подключаться к любому внутреннему ресурсу через созданный шлюз RDGW.New-Item -Path 'RDS:\GatewayServer\RAP' -Name 'Default-RAP' -UserGroups Administrators@Builtin -ComputerGroupType '2'
Результат:
Directory: RDS:\GatewayServer\RAP Name Type CurrentValue GP PermissibleValues PermissibleOperations ---- ---- ------------ -- ----------------- --------------------- Default-RAP - Get-Item, Get-ChildItem, Remove-Item,...
-
Создайте сертификат с именем сервера, который будет использоваться для подключения и шифрования трафика:
$Certificate = New-SelfSignedCertificate -CertStoreLocation 'Cert:\LocalMachine\My' -DnsName $ENV:COMPUTERNAME
-
Экспортируйте созданный сертификат, чтобы в дальнейшем загрузить его в хранилище сертификатов
Trusted Roots Certificate Authorities
на компьютере, подключающемся к ВМ. Это необходимо, чтобы клиент доверял самоподписанному сертификату шлюза RDG:$Certificate | Export-Certificate -FilePath "C:\REGW.cer"
Результат:
Directory: RDS:\GatewayServer\RAP Name Type CurrentValue GP PermissibleValues PermissibleOperations ---- ---- ------------ -- ----------------- --------------------- Default-RAP - Get-Item, Get-ChildItem, Remove-Item,...
-
Укажите, какой сертификат нужно использовать шлюзу RDGW. Перезагрузите службу RDG, чтобы применить настройки:
Set-Item -Path 'RDS:\GatewayServer\SSLCertificate\Thumbprint' -Value $Certificate.Thumbprint Get-Service TSGateway | Restart-Service
Результат:
Directory: C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 6/9/2021 11:51 AM 796 REGW.cer
Виртуальная машина-шлюз с настроенной ролью RDGW позволяет локальным учетным записям группы BUILTIN\Administrators
подключаться к ВМ, у которых напрямую нет доступа в интернет.
Проверьте работу шлюза RDGW
-
Создайте ВМ без доступа в интернет, к которой вы будете подключаться во время проверки.
Консоль управленияCLIAPI-
На странице каталога в консоли управления
нажмите кнопку Создать ресурс и выберитеВиртуальная машина
. -
В блоке Образ загрузочного диска:
- Перейдите на вкладку Пользовательский.
- Нажмите кнопку Выбрать и в открывшемся окне выберите Создать новый.
- В поле Наполнение выберите
Образ
и в списке ниже выберите образ Windows Server 2022 Datacenter. Как загрузить свой образ для продуктов Microsoft подробнее см. в разделе Импортировать нужный образ. - (Опционально) В поле Дополнительно включите опцию Удалять вместе с виртуальной машиной, если вы хотите автоматически удалять этот диск при удалении ВМ.
- Нажмите кнопку Добавить диск.
-
В блоке Расположение выберите зону доступности
ru-central1-d
. -
В блоке Диски и файловые хранилища задайте размер загрузочного диска
60 ГБ
. -
В блоке Вычислительные ресурсы перейдите на вкладку
Своя конфигурация
и укажите необходимую платформу, количество vCPU и объем RAM:- Платформа —
Intel Ice Lake
. - vCPU —
2
. - Гарантированная доля vCPU —
100%
. - RAM —
4 ГБ
.
- Платформа —
-
В блоке Сетевые настройки укажите:
- Подсеть — сеть
rdgw-network
и подсетьrdgw-subnet
. - Публичный адрес —
Без адреса
.
- Подсеть — сеть
-
В блоке Общая информация задайте имя ВМ:
test-vm
. -
Нажмите кнопку Создать ВМ.
Дождитесь, когда статус ВМ сменится на
Running
, и сбросьте пароль:- Выберите виртуальную машину.
- Нажмите кнопку Сбросить пароль.
- Укажите Имя пользователя, для которого нужно сбросить пароль. Если у ВМ не существует пользователя с таким именем, он будет создан с правами администратора.
- Нажмите кнопку Сгенерировать пароль.
- Сохраните Новый пароль. После закрытия окна он будет недоступен.
Создайте ВМ:
yc compute instance create ` --name test-vm ` --hostname test-vm ` --memory 4 ` --cores 2 ` --platform standard-v3 ` --zone ru-central1-d ` --network-interface subnet-name=rdgw-subnet,ipv4-address=10.1.0.4 ` --create-boot-disk image-folder-id=standard-images,image-family=windows-2022-dc-gvlk ` --metadata-from-file user-data=setpass
Результат:
done (19s) id: fhm5pflreh2jellq97r0 folder_id: big67u7m5flplkc6vvpc created_at: "2021-06-09T11:53:03Z" name: test-vm zone_id: ru-central1-d platform_id: standard-v3 resources: memory: "4294967296" cores: "2" core_fraction: "100" status: RUNNING boot_disk: mode: READ_WRITE device_name: fhmmf65nlbt131b3e36l auto_delete: true disk_id: fhmmf65nlbt131b3e36l network_interfaces: - index: "0" mac_address: d0:0d:5d:ef:bb:74 subnet_id: e9b95m6al33r62n5vkab primary_v4_address: address: 10.1.0.4 fqdn: test-vm.ru-central1.internal scheduling_policy: {} network_settings: type: STANDARD placement_policy: {}
Воспользуйтесь методом REST API create для ресурса Instance или вызовом gRPC API InstanceService/Create.
-
-
Импортируйте созданный сертификат в папку
Trusted Roots Certificate Authorities
на компьютере, с которого вы будете подключаться к тестовой ВМ.Чтобы подключаться к шлюзу по имени ВМ, в файле
C:\Windows\system32\drivers\etc\hosts
укажите имя и внешний IP-адрес созданного шлюза RDGW. Например:87.250.250.242 my-rds-gw
-
Запустите утилиту
mstsc
, которая создает подключения к удаленному рабочему столу. В настройках на вкладке Advanced укажите в качестве шлюза имя ВМmy-rds-gw
, в качестве узла назначения — имя тестовой ВМtest-vm
, имя пользователя —Administrator
.
Как удалить созданные ресурсы
Если вам больше не нужны созданные ресурсы, удалите виртуальные машины и сети.