Иногда из системы Linux я вижу следующее странное поведение:
Я могу пинговать вещи и иногда использовать некоторые сервисы, но работа в сети очень плохая.
Например, теперь я маршрутизировал соединение через свой ноутбук (-j MASQUERADE
) и заметил следующее: если я делаю небольшое TCP-соединение (сервер отправляет мне мало данных), оно продолжается:
# nc 86.57.151.3 80
GET /404
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
/proc/net/ip_conntrack имеет tcp 6 431998 ESTABLISHED src=192.168.99.9 dst=86.57.151.3 sport=49104 dport=80 src=86.57.151.3 dst=93.125.21.218 sport=
80 dport=49104 [ASSURED] mark=0 use=2
прежде чем я набрал "GET /404".
Но когда я делаю большую связь:
root@localhost:~# nc 86.57.151.3 80
GET /
Это глохнет. Прежде чем я ввожу «GET /», он показывает ESTABLISHED ASSURED, как обычно, но после того, как я нажимаю Return, он переходит к tcp 6 0 CLOSE_WAIT src=192.168.99.9 dst=86.57.151.3 sport=56991 dport=80 src=86.57.151.3 dst=93.125.21.218 sport=80 dpo
rt=56991 [ASSURED] mark=0 use=2
. Пакет с не получен. Когда я наконец нажимаю Ctrl+C, он отправляет FIN на сервер, и Wireshard жалуется, что FIN сервера "Не в порядке". Например, если упакованный ответ упал куда-то.
Когда я делаю то же самое nc 86.57.151.3 80
/GET /
от маршрутизатора, это работает.
Как отладить что не так?