Задать вопрос
@Winseven

Провайдер режет TCP/UDP сессии через 240 сек неактивности, что делать?

Добрый день!
Ситуация такая: подключаюсь к серверу по SSH и если ничего не делать, то через 240 сек соединение зависает, хотя с обоих сторон состояние "ESTABLISHED". Если подключить услугу "Выделенный IP", то такой проблемы нет. Я считаю, что NAT провайдера чистит NAT-таблицу от неактивных соединений через 240 сек, отсюда и потеря связи. Техподдержка провайдера так не считает, отвечает:
- Ваша заявка обработана, было рекомендовано изменить keepalive interval в настройках ssh клиента.
- С нашей стороны на текущий момент ни каких ограничений не видим.

Уже второй месяц пытаюсь найти правду - где теряются мои TCP/UDP-сессии... даже ролик записал на примере NetCat - https://youtu.be/k4B77s4detk

На мой взгляд это нарушение "RFC793 Протокол управления пересылкой - TCP", если FIN пакета не было, то сессия должна быть активна.
Проверял через мобильный интернет - проблемы с потерей связи нет.
Может у кого-нибудь есть опыт решения данной проблемы, кроме как подключить услугу "Выделенный IP", использовать VPN или прописывать повсюду "keepalive interval"?
  • Вопрос задан
  • 1162 просмотра
Подписаться 2 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 5
В любой NAT/PAT таблице всегда есть таймаут, иначе если бы оба конца соединения отвалились из-за сетевых проблем или из-за ребута или плохо настроенных фаерволов, запись оставалась бы в таблице навечно. В UDP вообще нет ни одного механизма удаления записи из NAT/PAT кроме таймаута.

С одной стороны, ваш провайдер прав - в любом случае при раборе через NAT/PAT необходимо настроить TCP KEEPALIVE, он настраивается в любом ssh-клиенте, например https://songhuiming.github.io/pages/2019/02/28/how... и это единственный гарантированный способ решения вашей проблемы.

С другой стороны, 240 секунд очень маленький таймаут (обычно используется время порядка 10 минут для UDP и порядка часа для TCP) а TCP KEEPALIVE умеют слать не все клиенты, поэтому стоит продолжить ругаться с техподдержкой чтобы таймаут или размер таблицы или диапазон NAT-портов увеличили дo разумных значений.
Ответ написан
gbg
@gbg Куратор тега Компьютерные сети
Любые ответы на любые вопросы
Висящие сессии TCP и UDP вкусно кушают провайдеру порты NAT (видимо, он совсем мелкий и местечковый), так что ему надо как-то выкручиваться.

Никакого RFC он не нарушает - это Интернет, отрыв соединения является нормой.

Что делать - настройте KeepAlive, или примените autossh, он постоянно шлет байтики в дополнительном соединении
Ответ написан
@pfg21
ex-турист
Использовать mosh
он использует для связи UDP-посылки и не завязан на поддержание tcp-канала.
точнее tcp-канал нужен только в начале чтобы простучаться на сервер через ssh и запустить прогу слушать порт.
обещают что mosh выдерживает даже переключение "интернет-канала" c wifi на сотовый канал и т.д.
Ответ написан
Комментировать
CityCat4
@CityCat4
Жил да был черный кот за углом...
Если подключить услугу "Выделенный IP", то такой проблемы нет


Уже второй месяц пытаюсь найти правду

Услуга статического IP стоит фантастически дорого?
Ответ написан
exeonid
@exeonid
network engineer
очень странные пожелания от отвечающих...
делать дебаг на основе слов и предположений... очень инженерно (нет)
почему никто не предложил снять дамп сессии и просто тупо посмотреть...
или как логируется происходящее на сервере (или что там у вас)?
строить догадки на основе предположений
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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