snaiper04ek
@snaiper04ek
Не стреляйте в эникея, он админит как умеет

Windows rdp — обрывы были периодические, но пропали при ping host -t из cmd, из-за чего это?

Жалобы были у сотрудника, что у него периодические обрывы соединения происходили: замирал экран по rdp подключению, нужно было переподключаться. Хотел понять - это физически рвётся что-то, или софтина какая виновата.
Врубил ему ping 192.168.0.x -t и сказал позвать когда обрубит.
Не позвал, а на следующий день снова обрывы. Не позвал потому что обрывов не было, когда работали запросы ping, потом комп грузанул, без запросов обрывы. Снов врубил, обрывы пропали. Отрубил - появлись обрывы.
Настроил ему .bat с подключением к rdp и параллельным ping -t а фоне. Ни разу обрыва больше не было.
Ну настроил и забыл. Через два месяца (вчера) снова столкнулся с такой ситуацией у другого сотрудника, при подключении к совершенно другому компьютеру.
Тайны человечества за 1000: Кто-то знает что это за дичь? Может сталкивались с такой штукой, может быть это изветсный баг/фича?

И ещё, может быть как-то можно диагностировать причину таких замираний экрана?
  • Вопрос задан
  • 6883 просмотра
Решения вопроса 1
snaiper04ek
@snaiper04ek Автор вопроса
Не стреляйте в эникея, он админит как умеет
После длительного гугления и гадания на кофейной гуще, спустя несколько месяцев тестирования решения, могу чётко сказать решение: все проблемы ушли после насильственного выключения UDP протокола на клиенте, оставил только TCP. Причины зависания мне обнаружить не удалось (эникей скиллы не позволили), но теория следующая:
пользователь устанавливает подключение по RDP, и дальше по UDP кидаются пакеты туда-сюда, без проверки целостности и без отсылки пакетов, поддерживающих сеанс (нет сообщений "соединение живое", keepalive). Либо где-то кто-то по пути теряет коннект из-за отсутствия пакетов keepalive, думая что раз keepalive нет, то соединение мертво.
TCP же всегда гоняет keepalive, даже если свернуть RDP соединение, предположительно поэтому соединение не обрывается.
Включается TCP only либо через групповые политики (легко гуглится), либо через реестр вот так:
Use only TCP
Registry Hive HKEY_LOCAL_MACHINE
Registry Path SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
Value Name SelectTransport
Value Type REG_DWORD
Value 1

Появилась проблема в первом месте потому что я сам настроил UDP, пользуясь вот этой статьёй с хабра: https://habr.com/ru/post/501132/, а в другом месте в душе не знаю почему она появилась, но семь бед - один ответ.
з.ы. Не всё то золото, что гайд на хабре.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
vesper-bot
@vesper-bot
Любитель файрволлов
Вруби на клиенте tcpdump/wireshark и ищи пропадания связи по времени посе часа-двух работы. Потом смотри, есть ли в каких-нибудь логах что-то странное на этот момент. Как вариант, сетевая спать идет. Как вариант, теряется мак-адрес, а ARP либо отдает кривой адрес, либо ещё что. Если он на вайфае, как вариант роутер решил освободить канал или как-нибудь переключить и карта глючит, а при постоянном трафике этого нет. Если там VPN, как вариант где-то UDP-сессия отваливается на роутере. Проблем может быть много.
Ответ написан
msHack
@msHack
Нужна длительная проверка в течении 30 минут попробуте проверить с помашю WinMtr ну или пинг с большим количеством пакетов длительный пинг так же проверьте фрагментацию пакетов MTU в роутере и у проваидера если они разные то будет фрагментация пакетов это ( нормально ) но это может превести к увеличению пинга и проверьте корректно ли у вас работает фрагментация пакетов все это можно сделать из консоли командой пинг с соответствующими ключами на виндовс это делается так ping yandex.ru -4 -l 65500
Ответ написан
Комментировать
Можно попробовать отключить масштабирование окна приёма TCP. В винде посмотреть текущее значение:
netsh interface tcp show global
Здесь нас интересует параметр ″Уровень автонастройки окна получения″ (англ. Receive Window Auto-Tuning Level).
Можно попробовать подобрать нужный уровень, например попробовать higlyrestricted, а если не помогает, то отключить:
netsh interface tcp set global autotuninglevel=disabled
После изменения настройки компьютер следует перезагрузить.

В линуксах есть аналогичные настройки. При проблемах с RDP я несколько часов копался, а оказалось всё проще, галочку поставил в network manager "Отключить масштабирование окна TCP".

P.S. Кроме того, может и сам RDP клиент и сервер RDP всякие бяки вытворять. Я вот так и не победил, что если долго не было ввода (не двигал мышь или клаву не нажимал), то при нажатии/движении картинка замирает, и идёт реконнект. Хотя соединение не было зависшим - если там, например, видео воспроизводилось или какой-то процесс установки софта шёл - всё отображалось и не зависало. И это всё не считая возможности настроек параметров RDP через политики (там можно тоже много чего навертеть).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы