Назад | Перейти на главную страницу

Как отследить разорванные TCP-соединения?

Попытка помочь кому-то в ситуации, когда TCP-соединения загадочно обрываются через несколько минут без видимой причины (это происходит даже с не простаивает соединения). И клиент, и сервер работают под Linux и работают хорошо за пределами этого случая.

Есть все основания подозревать, что это делает какой-то неисправный маршрутизатор (здесь задействован NAT).

Как мне найти какой роутер сбрасывает соединение?

Любой инструмент вроде tcptraceroute но при этом TCP-соединение будет оставаться открытым и проверять его, пока оно не будет отключено? (в этот момент мы знаем, кто виноват)

Ранее я заявлял, что отследить установленное соединение невозможно.
Однако это неверно.

lcamtuf создал 0trace инструмент, позволяющий трассировку TCP с использованием пакетов, соответствующих установленному соединению.
Есть улучшенная версия под названием Intrace, а также Python версия пользователя Jon Oberheide.

Идея состоит в том, чтобы прослушивать пакеты для указанного соединения, а затем вводить пакеты с соответствующими порядковыми номерами TCP, увеличивая TTL (как обычно traceroute делает).

После нескольких попыток и некоторой удачи вы, возможно, сможете найти прыжок, который начинает отбрасывать пакеты, так как этот прыжок также сбросит ваши пакеты трассировки.