В современных версиях Windows 10/11 и Windows Server 2022/2019/2016 при подключении к серверу RDP (RDS) кроме стандартного порта TCP/3389, дополнительно используется UDP порт 3389. Когда ваш RDP клиент подключается к серверу, устанавливается несколько сессий. В управляющей TCP (HTTP) сессии передаются клавиатура и мышь, а несколько UDP сессий используются для передачи картинки.
Вы можете проверить, использует ли ваш клиент mstsc режим UDP, если щелкните по значку Connection Info в верхней полоске RDP подключения. В нашем случае протокол UDP используется:
The quality of the connection to the remote computer is excellent and UDP is enabled.
По утверждениям Microsoft использование UDP для RDP сессий позволяет существенно повысить отзывчивость удаленного рабочего стола за счет сокращения ретрансмиссии и возможности работать на нестабильных подключениях с высокими задержками.
Зависание RDP сессий при использовании UDP
В некоторых случаях использование протокола UDP для RDP подключения может вызывать проблемы: периодическое замирание картинки, обрывы RDP сессий, пользователи видят черных экран вместо удаленного рабочего стола, сообщение о внутренней ошибке при RDP подключении и т.д. В таких случаях обычно помогает переподключение к RDP сессии. Но иногда такая проблема происходит очень часто и мешает нормальной работе.
Проблема с замиранием RDP сессий встречается:
- При использовании RDP сессий внутри VPN туннелей ( чаще всего наблюдается при использовании сервера OpenVPN). Это вызывается фрагментированием UDP пакетов (может быть вызвано разными настройками MTU) при пересылке через VPN туннель;
- После обновления до билда 22H2 в Windows 11/10;
- При использовании шлюза Remote Desktop Gateway на Windows Server 2022 и порта 3391 для UDP трафика.
Причем проблема не связана с плохой производительностью RDS сервера как описано в кейсе по ссылке: на сервере достаточно свободных ресурсов, память и CPU не нагружены.
Отключить использование протокола UDP для RDP
Для решения проблемы с зависанием RDP сессий при использовании VPN туннелей вы можете попробовать отключить использование протокола UDP.
Можно отключить протокол UDP для RDP через групповые политики.
- Откройте консоль редактора локальной GPO (
gpedit.msc
); - Перейдите в раздел Computer Configuration -> Administrative Templates -> Windows Components -> Remoter Desktop Services -> Remote Desktop Session Host -> Connections;
- Включите параметр политик Select RDP transport protocols и установите Select Transport Type = Use only TCP;
- Перезагрузите RDS/RDP сервер, чтобы применить настройки;
- Подключитесь к RDP серверу и нажмите на значок информации о подключении. Здесь должна появиться надпись:
The quality of the connection to the remote computer is good.
Это означает, что для RDP подключения используется только TCP.
Этот способ позволяет отключить использование UDP на стороне сервера RDP/RDS. Если вы хотите запретить использовать UDP для RDP на стороне клиента, нужно включить параметр Turn off UDP on Client в разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remoter Desktop Services -> Remote Desktop Connection Client.
После внесения изменений, нужно обновить локальные политики командой
gpupdate /force
и перезапустить клиент mstsc.exe.
Также можно включить этот параметр через реестр (параметр GPO соответствует ключу fClientDisableUDP в реестре):
reg add "HKLM\software\policies\microsoft\windows nt\Terminal Services\Client" /v fClientDisableUDP /d 1 /t REG_DWORD
Избавляемся от залипаний и чёрного экрана в RDP сессии при удалённом подключении к серверу. Работаем в Windows 7 с пакетом обновления 1 (SP1).
Сначала проверяем, что RDP подключение действительно использует UDP протокол. Нажимаем на иконку сети слева.
Написано «… протокол UDP включен». Отключаемся от RDP.
Запускаем реестр:
regedit
Переходим в раздел:
\HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client
Создаём параметр fClientDisableUDP с типом REG_DWORD и устанавливаем значение 1.
Перезагружаем свой компьютер. После перезагрузки ещё раз проверяем, что RDP подключение больше не использует UDP протокол. Подключаемся RDP клиентом к серверу. Нажимаем на иконку сети слева.
Ни слова о UDP.
Ссылки
Windows 10 — отключаем протокол UDP в RDP
Windows 11 — отключаем протокол UDP в RDP
Вопрос:
Подключаюсь по RDP с рабочей станции на терминальный сервер с ОС Windows. Запрос аутентификации (а также запрос логина и пароля) происходит на стороне терминального клиента (Рабочей станции) в окне «Безопасность Windows». Как сделать так, чтобы запрос аутентификации происходил на стороне терминального сервера уже после установления RDP подключения?
Ответ:
Запрос имени пользователя и пароля на стороне терминального клиента является стандартной настройкой для операционных систем Microsoft версий Vista и выше. Чтобы окно с запросом пользователя не появлялось на терминальном клиенте при подключении к терминальному серверу по RDP, необходимо выполнить изменение системных настроек. После этого запрос будет происходить уже непосредственно на самом терминальном сервере.
Для отключения запроса пользователя на стороне терминального клиента при подключении к терминальному серверу по RDP необходимо для терминального сервера выполнить следующие настройки:
Вариант 1
GPO:
В настройках групповых политик в разделе Local Computer Policy\Computer Configuration\Windows Settings\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Security выставить следующие значения групповых политик для данного сервера:
-
Require user authentication for remote connections by using Network Level Authentication = disabled
-
Set client connection encription level = enabled, High
-
Require use of specific security layer for remote (RDP) connections = RDP
При комбинации настроек 2 и 3 канал будет шифроваться RC4 со 128-битным ключом.
Реестр:
Данные параметры можно настроить, изменив параметры в реестре. Для этого в редакторе реестра необходимо выполнить следующее:
-
Перейти в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-
Для параметра «UserAuthentication» тип DWORD задать значение 0 (если данный параметр отсутствует, его необходимо создать)
-
Для параметра «MinEncryptionLevel» тип DWORD задать значение 3 (если данный параметр отсутствует, его необходимо создать)
-
Для параметра «SecurityLayer» тип DWORD задать значение 0 (если данный параметр отсутствует, его необходимо создать)
Вариант 2
Создать на терминальном клиенте RDP-файл с настройками для подключения к терминальному серверу. Открыть файл на редактирование в текстовом редакторе. Добавить в список настроек в файле следующую строку:
EnableCredSSPSupport:i:0
Использование UDP-протокола для RDP (Remote Desktop Protocol) подключения к Windows Server может вызывать определенные сложности, хотя этот протокол часто используется для оптимизации и ускорения удаленных рабочих столов. Вот некоторые из основных сложностей, с которыми можно столкнуться при использовании UDP-протокола для RDP:
-
Потеря пакетов данных. UDP является протоколом без установления соединения, и он не обеспечивает подтверждение доставки данных. Это означает, что пакеты данных могут быть потеряны в сети, что приводит к артефактам на экране, задержкам и низкому качеству аудио и видео в удаленном сеансе. В случае потери пакетов данных, RDP может пытаться восстановить изображение, что может замедлить работу сеанса.
-
Снижение производительности. UDP-протокол часто используется для стриминга мультимедийных данных в реальном времени, что может конфликтовать с производительностью RDP-сеанса. Это особенно заметно при одновременном использовании мультимедийных приложений и RDP-сессий, что может привести к снижению скорости работы удаленного рабочего стола.
-
Сложности с брандмауэром и NAT. UDP-протокол может столкнуться с сложности, связанными с настройками брандмауэра и NAT (Network Address Translation) у некоторых локальных или региональных интернет провайдеров. Они могут блокировать или жестко фильтровать UDP-пакеты, что может вызвать невозможность подключения к удаленному серверу. Некоторые сети могут также иметь ограничения NAT, которые делают использование UDP сложным или невозможным.
-
Особенности маршрутизации и сетевой инфраструктурой. Может сказаться на качестве и стабильности RDP-подключения. UDP-пакеты могут подвергаться сетевым задержкам и потерям, особенно при наличии сложности в сетевой инфраструктуре. Это важно для местных (региональных) небольших интернет провайлров, если у них перегруженны маршрутизаторы или низкая пропускная способность канала.
-
Иногда на Windows Server 2022-2019 может быть черный экран при RDP-подключении. А при подключении с других устройств екран при поключении может отображается корректно.
-
При слабом подключении и фризах, обрывах, торможении. Отключение UDP-протокола при RDP-подключении также помогает в таких слачаях. Хотя также нужны дополнительные действия.
Именно поэтому в некоторых случаях пользователям администраторы Windows Server рекомендуют отключить поддержку UDP для RDP-подключений и использовать только TCP-протокол, который более надежен и стабилен в условиях неблагоприятных сетевых условий. Это может помочь избежать вышеупомянутых сложностей и обеспечить более стабильное удаленное управление сервером. Для запрета RDP-подключения по UDP на Windows Server можно использовать несколько методов. В данной статье, мы рассмотрим самый простой и быстрый способ.
Одной командой для всех WindowsServer.
1. Откройте PowerShell через «Пуск».
Нажмите кнопку «Пуск» (Start) на клавиатуре и выберите «Windows PowerShell» (запуск из-под пользователя Администратор).
Если есть только «Командная строка Windows (Администратор)» (в зависимости от версии Windows), запустить ее, а в ней выполните команду: «PowerShell».
2. Выполнить команду.
Далее вставьте команду представленную ниже, в окно PowerShell:
reg add “HKLM\software\policies\microsoft\windows nt\Terminal Services\Client” /v fClientDisableUDP /d 1 /t REG_DWORD
Обратите внимание, что вы должны иметь права администратора на сервере для выполнения этих команд. Также голубой значек ярлыка PowerShell может быть у Вас внизу возле Пуска на панели заданий (в зависимости от версии Windows).
Итоги.
Этот простой и быстрый способ позволит вам успешно отключить поддержку UDP для RDP-подключений, что может повысить стабильность и безопасность удаленных сеансов на вашем Windows Server. Не забудьте переподключиться по RDP после применения изменений для корректной работы.
Также предлагаем рассмотреть другие полезные статьи:
- Как установить и настроить веб-сервер IIS на Windows Server
- Как посмотреть логи shutdown и restart в Windows Server
- Как посмотреть логи RDP подключений в Windows Server 2016, 2019
Давайте рассмотрим, что делать, если во время RDP подключении к удаленному хосту вы видите не рабочий стол, а черный экран. Проблема особенно часто встречается в ранних версиях Windows 10 и Windows Server 2019. Забегая наперед скажем, что проблема решается.
RDP (Remote Desktop Protocol) — протокол удаленного рабочего стола, разработанный компанией Microsoft. Он предназначен для удаленного управления компьютером через сеть. RDP позволяет пользователям подключаться к удаленному компьютеру или серверу и управлять им, будто они находятся непосредственно перед ним.
Протокол широко используется для удаленной поддержки, администрирования серверов, удаленной работы и других подобных целей. RDP встроен в операционные системы Windows и доступен как клиентская и серверная части. Также существуют сторонние программы, которые поддерживают RDP для подключения к удаленным рабочим столам, даже если они работают на других операционных системах, таких как macOS или Linux.
RDP (Remote Desktop Protocol) используется для удаленного доступа и управления компьютером или сервером через сеть. Вот несколько основных причин, для которых используется RDP:
- Удаленное администрирование: системные администраторы могут использовать RDP для удаленного управления серверами без необходимости физического присутствия перед ними.
- Удаленная поддержка: технические специалисты могут использовать RDP для удаленной поддержки пользователей, помогая им решать проблемы на их компьютерах.
- Удаленная работа: пользователи могут использовать RDP для доступа к своему рабочему столу и файлам с любого места, где есть доступ к интернету, что позволяет работать удаленно.
- Обучение и демонстрации: RDP может использоваться для обучения пользователей или демонстрации программного обеспечения, позволяя показывать рабочий стол другим пользователям.
- Централизованное управление: RDP позволяет централизованно управлять несколькими компьютерами или серверами из одного места.
Инструмент предоставляет удобный способ удаленного доступа к компьютерам и серверам для различных целей.
Почему вместо RDP сессии появляется черный экран?
Диагностировать или присвоить их к категории, то есть классифицировать, достаточно проблематично.
Но мы постараемся это сделать:
Во время сессии RDP нажмите CTRL+ALT+END, после чего Отмена. Часто так можно вернуться к рабочему столу RDP сессии. Если не помогает, запускаем диспетчер задач Task Manager и процесс File Explorer (File -> Run new task -> explorer.exe -> Ok);
Проверьте, что в настройках RDP клиента (mstsc.exe) отключено кэширование (выключаем Persistent bitmap caching на вкладке Experience) и используется разрешение экрана.
Оно поддерживается удаленным хостом. Проверьте, что на вашем ПК стоит последняя версия видеодрайвера. Вы можете установить драйвера ручным способом или установить их автоматическое обновление.
Для Windows 10 нужно вставить использование XDDM вместо WDDM. Откроем редактор групповых политик gpedit.msc и в разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment ставим значение параметра Use WDDM graphics display driver for Remote Desktop Connections = Disabled. Обновляем групповые политики на RDP сервере.
В Windows Server 2016 с выставленными таймаутами для RDS сессий иногда приходят жалобы пользователей, что после подключения в отключенную (disconnected) сессию, она не активировалась корректно и они видели черный экран. Здесь поможет только завершение RDP сеанса пользователем самостоятельно (CTRL+ALT+End -> Sign out
), либо принудительное завершение сессии администратором (по аналогии со статьей Не удается завершить требуемую операцию при входе по RDP). Либо настройте более агрессивные настройки отключения disconnected сессий;
Отключаем использование протокола UDP 3389 для передачи RDP трафика в дополнение к стандартному RDP порту TCP 3389 через параметр Turn off UDP on client на клиенте (Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Connection Client) или через реестр: reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client” /v “fClientDisableUDP” /t REG_DWORD /d 1 /f . Для отключения UDP протокола для RDP трафика на стороне сервера, настройте параметр GPO …Remote Desktop Session Host -> Connections -> Select RDP transport protocols = Use only TCP.
Из более экзотических рекомендаций от Microsoft, которые помогают далеко не всегда, но могут исправить именно источник проблемы:
Проверяем RDP сервер, клиент и все сетевое оборудование между ними. Они должны быть настроены на одинаковый MTU.
Выключаем опцию сжатия данных, которые перелаются, в сеансе RDP через редактор локальной GPO – Configure compression for RemoteFX data (Настройка сжатия данных RemoteFX) = Do not use an RDP compression algorithm (Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host).
Если проблема с черным экраном в RDP встречается на Windows Server 2019 и Windows 10 1809+. Откройте Event Viewer и проверьте журнал событий Application and Service Logs –> Microsoft –> Windows –> RemoteDesktopService-RdpCoreTS.
Проверьте, есть ли там ошибки вида ‘ Failed GetConnectionProperty’ in CUMRDPConnection::QueryProperty at 2884 err=[0x80004001] ‘, ‘ Connection doesn’t support logon error redirector’ in CUMRDPConnection::GetLogonerrorRedirector at 4199 err=[0x80004001].
Если есть, отключаем использование протокола URCP (Universal Rate Control Protocol), который используется для передачи некоторых данных между RDP клиентом и сервером поверх UDP (MS-RDPEUDP2): reg add “HKLM\SOFTWARE\Microsoft\Terminal Server Client” /v “UseURCP” /t REG_DWORD /d 0 /f или так New-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\Terminal Server Client’ -Name UseURCP -PropertyType DWord -Value 0
Теперь вы знаете, как можно решить эту проблему.