Доступ по RDP протоколу со страницы браузера

Задача:

Получить доступ к удаленному компьютеру по RDP протоколу через любой браузер.

Сами компьютеры находятся за NAT.

Назовем компьютер, к которому хотим получить доступ — сервером. На сервере устанавливаем программу Myrtille.

Схема соединения:

web browser <-> web gateway <-> wcf services <-> rdp client <-> rdp server

Используемые протоколы:

web browser <-HTTP(S),XMLHTTP,WS(S)-> web gateway <-WCF-> wcf services <-SYSTEM-> rdp client <-RDP-> rdp server

Перенаправляем 443 порт с внешнего адреса на 443 порт сервера. После этого открываем в браузере страницу

https://IP//myrtille

где IP — внешний адрес сервера, заполняем поля данными и работаем.

Можно воспользоваться возможностью предварительно заполнять поля, тогда строка будет выглядеть так:

https://IP/Myrtille/Default.aspx?__EVENTTARGET=&__EVENTARGUMENT=&server=192.168.10.190&user=BigAdmin

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

 

Требования
— Браузер: любой браузер HTML4 или HTML5 (начиная с IE6!). Никаких дополнительных или административных прав не требуется.
— Gateway (myrtille): IIS 7 или выше (желательно IIS 8+ с включенным протоколом websocket) и .NET 4.5+
— RDP-сервер: любой компьютер с поддержкой RDP (желательно Windows Server, но также может быть Windows XP, 7, 8, 10)

Шлюз:

Простой двухъядерный процессор с 4 ГБ оперативной памяти может обрабатывать до 50 одновременных сеансов (около 50 МБ оперативной памяти с помощью клиентского процесса rdp).

Удобно пользоваться когда подключаешься к сети из нескольких компьютеров через такой вот шлюз.

Для определения внешнего IP адреса использую свою программу Helper_OVPN_Server, которая постоянно контролирует изменения внешнего адреса и отсылает его значение на email