Закрыть УСТАНОВЛЕННОЕ соединение, основываясь только на последовательности SYN / ACK

0

После обсуждения Соединение остается помеченным как ESTABLISHED, даже если хост не подключен «Я вернулся, чтобы попросить дополнительную информацию.

Резюме: у меня есть удаленный хост (клиент Windows), который подключается к моей встроенной системе Linux (серверу, который я использую для передачи или получения данных). В этой ситуации, когда клиент подключен, он начинает получать данные с сервера по протоколу TCP. Если клиент отключается, соединение с сервером не исчезает. Остается как СОЗДАН ,
Я не программировал приложения, используемые для получения и отправки пакетов между двумя хостами (однако я мог изменить исходный код со стороны сервера), но если я не ошибаюсь, это не нужно.

После анализа сетевого трафика с ТСРйитр Я вижу, что эта проблема связана с последовательностью SYN / ACK (по крайней мере, я так понимаю) из этого примера вывода:

13:02:38.085996 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151644:151648, ack 1, win 473, length 4
13:02:38.283570 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151648:151916, ack 1, win 473, length 268
13:02:39.289412 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151916:151920, ack 1, win 473, length 4
13:02:39.489854 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 151920:152226, ack 1, win 473, length 306
13:02:40.093989 IP 192.168.11.98.2101 > 192.168.11.50.58987: Flags [P.], seq 152226:152230, ack 1, win 473, length 4

Но клиент не получает никаких данных и сервер не отправляет их, это просто последовательность SYN / ACK. Это продолжается вечно, и единственный способ остановить это - изменить конфигурацию сервера (режим приемника) или отключить адаптер Ethernet. Это не приемлемое решение.

Если я не ошибаюсь, это считается атакой SYNflood ..

Вопрос в том, как избежать подобной ситуации, закрывающей соединение со стороны сервера.
Можно ли сделать это из какого-либо файла конфигурации или из брандмауэра, не ограничивая входящие соединения (как предложено) Вот )

simo-zz
источник
Как «удаленный хост отключает соединение»? Потому что между первым хостом существует определенная связь, решающая, что он хочет прекратить, и фактическим концом соединения. (Например, см. Диаграмму serverfault.com/questions/450055/... ). Прога закрывается чисто? Вы видите какие-либо сообщения FIN_WAIT?
Hennes
Нет, любой пакет FIN_WAIT. Я также думаю, что клиент не закрывает соединение должным образом ..
simo-zz
Если клиент просто оставляет соединение зависшим, то оно остается установленным (как и должно!). И некоторые сообщения активности являются хорошей идеей для установленного простаивающего соединения. В принципе, работает как надо * основано на поведении клиента , Если у вас есть исходный код клиента, то, возможно, мы могли бы сказать больше (или, возможно, мы могли бы, хотя он может быть перенесен, он превращается в Переполнение стека сообщение.)
Hennes
ОК, я наконец-то подтвердил, что проблема в исходном коде приложений. Я должен буду исправить их.
simo-zz