После обсуждения « Соединение остается помеченным как УСТАНОВЛЕННОЕ, даже если хост не подключен », я снова возвращаюсь, чтобы запросить дополнительную информацию.
Резюме: у меня есть удаленный хост (клиент Windows), который подключается к моей встроенной системе Linux (серверу, который я использую для передачи или получения данных).
В этой ситуации, как только клиент подключен, он начинает получать данные с сервера по протоколу TCP. Если клиент отключается, соединение с сервером не исчезает. Это остается как УСТАНОВЛЕНО.
Я не программировал приложения, используемые для получения и отправки пакетов между двумя хостами (однако я мог изменить исходный код со стороны сервера), но если я не ошибаюсь, это не нужно.
После анализа сетевого трафика с помощью tcpdump я вижу, что эта проблема связана с последовательностью 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 ..
Вопрос в том, как избежать подобной ситуации, закрывающей соединение со стороны сервера.
Возможно ли это сделать из какого-либо файла конфигурации или из брандмауэра, не ограничивая входящие соединения (как предлагается здесь)?