Вопрос или проблема
У моей жены есть удаленный доступ к системе хостинга, который она использует с Windows. До нескольких месяцев назад он работал и с Linux, но теперь я обнаружил, что TCP-порт был закрыт!
Таким образом, требуется протокол RDP и UDP.
FreeRDP, который используется, например, в Remmina, имеет открытую проблему по этому поводу уже 5 лет. Существуют ли какие-нибудь проекты, которые это поддерживают?
Ответ или решение
Тема удаленного рабочего стола (RDP) в ИТ-инфраструктуре сегодня актуальна как никогда, особенно в условиях удаленной работы. Проблема, с которой вы столкнулись — необходимость использовать RDP через UDP — действительно представляет определенные вызовы, особенно если доступ к TCP-порту закрыт. Частично это связано с тем, что UDP и TCP — это различные протоколы транспортного уровня, и поддержка RDP через UDP требует определенной специфичности от клиентских приложений.
Теоретический аспект
Удаленный рабочий стол (RDP) традиционно использует протокол TCP для установления соединения между клиентом и сервером. TCP обеспечивает надежную передачу данных, гарантируя доставку пакетов в правильной последовательности и повторную отправку потерянных пакетов. Однако в случае с медленными или ненадежными сетями TCP может вызывать задержки из-за проверок и коррекций ошибок.
UDP (User Datagram Protocol), в свою очередь, представляет собой более простой протокол, который не обеспечивает никаких гарантий доставки и воспроизведения пакетов, но зато позволяет уменьшить задержки, что может быть критично для приложений реального времени, таких как мультимедиа трансляция или удаленный доступ через RDP в определенных условиях.
Microsoft внедрила поддержку RDP через UDP в рамках улучшения сессий через функцию RemoteFX и протоколы, используемые для улучшения качества подключения в условиях высоких задержек и ненадежности соединений. Это стало частью RDP начиная с версии 8.0. Интересно, что использование UDP помогает улучшить качество соединения в сетях с высокой задержкой.
Пример из практики
На текущий момент FreeRDP, упомянутый вами как часть Remmina, действительно имеет открытый вопрос о поддержке UDP, который остается нерешенным на протяжении нескольких лет. Это связано с ресурсами, выделенными проекту, и сложностью в реализации надежного алгоритма работы с ненадежным протоколом UDP.
Однако будущее за RDP через UDP, поэтому соответствующие клиенты начинают постепенно появляться. Например, Microsoft Remote Desktop для Windows (и его версии на Linux при условии использования Microsoft RDP Server) изначально поддерживает UDP, начиная с RDP версии 8.0. Однако для Linux-версия клиента через Wine эта поддержка остается под вопросом и требует опыта в настройке Wine.
Для Linux-систем альтернатива может быть найдена в таких проектах, как rdesktop, который потенциально может поддерживать настройку через дополнительные патчи или пакеты, или Guacamole, который использует собственный подход к удаленному доступу через веб-браузер и может работать через различные протоколы по настройке.
Применение к вашей ситуации
В вашем случае, если доступ через TCP закрыт, вы действительно ограничены в выборе инструментов для доступа через UDP, учитывая необходимость использования протокола RDP. Однако прежде всего рекомендую протестировать следующие подходы:
-
Настройка VPN сервера. Это может обойти ограничения на уровне вашего хоста, предоставив доступ ко всем портам, не затрагивая глобальные настройки брандмауэра.
-
Использование Microsoft-поддерживаемого клиента RDP, если возможно. Это может быть Wine с установленным клиентом Windows RDP.
-
Тестирование Guacamole, который также может предоставить доступ в обход ограничения на уровне порта, используя только подключение через веб-браузер.
-
Запрос поддержки у хостинг-провайдера — возможно, существуют недокументированные способы настройки вашей текущей конфигурации, которые просто не были очевидны.
К сожалению, до тех пор, пока FreeRDP не интегрирует поддержку UDP, ваше решение будет зависеть от конкретных обстоятельств и возможности настройки дополнительных сервисов. В долгосрочной перспективе сохраняется надежда, что сообщество с открытым исходным кодом предоставит решение для Linux аналогично тому, как это делает Microsoft для Windows.