В современных версиях 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 трафика.
Отключить использование протокола 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
gpmc.msc
).
А когда меняшь порт, со стандартного 3389 на другой, например 29889, udp порт меняется на такойже или остается 3389 ?
Да, при смене номера RDP порта в реестре, будут изменены порты как для tcp так и для udp
помню при тормозах rdp помогало
netsh interface tcp set global autotuninglevel=disabled
Это было для вин7 актуально старых версий. Сейчас W10-11, W2008R2, 2016… на это сильно снижает скорость передачи файлов по сети. Особенно заметно на ftp протоколе.
приходится делать netsh interface tcp set global autotuninglevel=normal.
Это при любых тормозах с локалкой очень часто помогает ещё с windows 7
Не помогла инструкция. Придётся снести рабочие столы. Буду использовать rdpwrap.
Было такое на винде 10 билд 1909, долго не мог понять почему виснет рдп, через мин 20 работы. Помогло отключение udp через реестр.
Привет. Это очень и очень плохое решение. UDP ускоряет транспорт и сглаживает графику.
А вот соответственно объяснение причинно-следственной связи: https://serverfault.com/questions/945591/rdp-over-udp-failing-on-windows-10-1809-with-reduced-mtu-links
И решение
Есть еще вариант — на сервере добавить ключ реестра HKLM\SOFTWARE\Microsoft\Terminal Server Client
d-word (32-bit) с именем UseURCP и значением 0
Это отключит URCP (Universal Rate Control Protocol) для терминальных служб.
Взято отсюда
Просьба добавить в статью, т.к. полное отключение UDP на сервере — очень плохая идея.
Столкнулся с такой же проблемой на WSS2022 в виртуализации на базе KVM. Перепробовал все, что пишут в сети — без толку. При использовании UDP сессия могла подвиснуть на несколько минут. Отключать его совсем посчитал совсем уж костылем.
Оказалось, проблема в совместимости драйверов виртуального сетевого адаптера VirtIO. При использовании Intel E1000 проблема не проявлялась. Обновил драйверы и RDP-over-UDP заработал стабильно.
с приветом!
Вот у меня случай, когда периодически замирает rdp — сессия у клиента с Apple Macbook
При повторном подключении — всё нормально..
Сервер на WS 2019 Std.
Есть ли какой совет на этот случай?
Не проще ли грохать проброс в роутере? чем дизеблить в винде
Тут обнаружилось, что в Windows 11 24H2 по умолчанию для RDP сессий всегда используется TCP. Поэтому для этой версии отключение UDP уже не актуально..
Пишу из 2025. появилась такая проблема на машинах с 22H2.
благодоря вашему ману решил проблему….Спасибо ОГРОМНОЕ!
Интересно мелкомягкие в будущем пофиксят такое?