В современных версиях 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
И решение
> очень и очень плохое решение
Очень категорично. Не соответствует реальности. См. ниже.
> UDP ускоряет транспорт
Иногда. А иногда — вообще без разницы. Если сети с большим временем отклика, где подтверждение доставки пакета (TCP) влияет значительно — то да, там без такого подтверждения (UDP) будет быстрее. В теории. Но есть риск получить визуальные артефакты.
А для сетей с небольшой задержкой для обычной офисной деятельности (если вы не смотрите видео через RDP-подключения и не играете в 3D-игры) на канале 10 мбит и выше вы вообще не заметите разницы от наличия или отсутствия UDP.
> UDP … сглаживает графику
На «сглаженность» графики (что бы под этим не понималось) UDP не оказывает совершенно никакого влияния.
В общем — решение из статьи рабочее в определённых сценариях.
У меня при подключении через VPN помогло отключение UDP на клиенте.
И лучше получить на условно 5% увеличение времени отклика у пользователя, которое он скорее всего вообще не заметит, чем постоянные разрывы, которыми он будет выносить мозг админу.
P.S. По ссылке на serverfault.com народ пришёл точно к такому же решению — отключению использования UDP.
Есть еще вариант — на сервере добавить ключ реестра 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.
благодоря вашему ману решил проблему….Спасибо ОГРОМНОЕ!
Интересно мелкомягкие в будущем пофиксят такое?
Есть хост Proxmox 8.3.3 с пятью виртуальными машинами, все на Windows Server 2025
dc
rdsgt – шлюз удаленных рабочих столов,
rdsb – брокер,
два узла RDS
Сеть стабильная, потерь нет.
Все системы свежие, драйвера и агенты установлены.
TCP включен на всех клиентах и серверах.
RemoteFX отключен
Периодически и абсолютно рандомно происходит зависание при входе.
Экран «залипает», но активность пользователя есть – он не висит в системе.
Закрываешь сессию, заходишь заново – всё нормально работает.
В статусе соединения отображается «хорошее соединение».
Средняя скорость RDP – 50 Мбит/с.
по логам?
На GT и узлах – ничего критического.
Cессия не зависает, а как будто залипает картинка.
Сервер не нагружен, производительность в норме.
Пользователь отображается активным и выполняет какие-то действия.
Если войти повторно, предыдущая сессия сообщает о новом входе и выкидывает пользователя.
Иногда только с пятого раза удаётся зайти, но если принудительно выкинуть пользователя – он спокойно заходит со второй попытки.
Так же из странностей. Если авторизировать с ПК. Взять телефон в руки и подключиться через microsoft remote desktop. Зависание я своё получу 100%. При этом выкинув пользователя. С телефона зайду с первой попытки.
Пробовал играться с кодеком. И шлюз из этого списка, наверное, тоже можно выкинуть. Ловил подобные зависания на прямую подключаясь к узлу…
По сети rb5009. За ним сразу сервер. Больше железок нет. Проблема такая замечена только с удалёнщиками.
Есть идеи что это может быть ?
Добрый день! Решить можно при помощи GPO
Конфигурация компьютера (включено)
Политики
Административные шаблоны
Компоненты Windows/Службы удаленных рабочих столов/Узел сеансов удаленных рабочих столов/Ограничение сеансов по времени
Политика Параметр Примечание
Задать ограничение по времени для отключенных сеансов Включено
Завершение отключенного сеанса 5 минут