#docker #tcp #wsl-2
#docker #tcp #wsl-2
Вопрос:
Интересно, заметили ли другие эту проблему с реализацией TCP WSL2 Debian.
Я подключаюсь из контейнера Docker под управлением WSL2 Debian v. 20
TCP-клиент отправляет пакет Keep-Alive каждую секунду, что является излишним. Затем примерно через 5 минут клиент прерывает соединение без какой-либо причины. Кто-нибудь видит это поведение?
Вы можете воспроизвести это, просто открыв сеанс telnet на другом хосте. Но такое поведение происходит и на других типах сокетов.
И прежде чем вы спросите, эта проблема не вызвана сервером, она не возникает при открытии того же tcp-соединения с других хостов.
дамп wireshark последних нескольких секунд бездействующего TCP-соединения
Комментарии:
1. Параметры TCP keepalive по умолчанию могут быть переопределены, и, кроме того, приложение может устанавливать параметры TCP keepalive для каждого сокета; их не обязательно определяет реализация TCP. TCP-соединение при захвате было прервано нормально. Что-то на прикладном уровне прервало соединение. Я не думаю, что есть что-то, указывающее на ошибку TCP в захвате. Возможно, вы захотите попробовать netcat-keepalive ( github.com/cyberelf/netcat-keepalive ), чтобы увидеть, что происходит, когда вы указываете свои собственные параметры keepalive.
Ответ №1:
У меня была такая же проблема с Ubuntu на WSL2. Исходящее ssh-соединение закрывается по истечении определенного периода времени, если в этом соединении не было никакой активности. Особенно неприятно, если вы запускали приложение, которое не выводило данные на экран.
Я подозреваю, что внутренний маршрутизатор, который соединяет wsl с локальной сетью, сбросил неработающее TCP-соединение.
Решение состояло в том, чтобы сократить таймеры поддержки TCP в /proc/ sys / net/ ipv4, для меня сработало следующее:
echo 300 > /proc/sys/net/tcp_keepalive_time
echo 45 > /proc/sys/net/tcp_keepalive_intvl
Ответ №2:
Итак, я понял это. К сожалению, реализация WSL2 Debian, похоже, имеет это жестко запрограммированное в стеке. Я попытался изменить параметры открытого вызова сокета, и они не привели к изменению поведения.