Задача:
Получить доступ к удаленному компьютеру по 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