Попытка помочь кому-то в ситуации, когда TCP-соединения загадочно обрываются через несколько минут без видимой причины (это происходит даже с не простаивает соединения). И клиент, и сервер работают под Linux и работают хорошо за пределами этого случая.
Есть все основания подозревать, что это делает какой-то неисправный маршрутизатор (здесь задействован NAT).
Как мне найти какой роутер сбрасывает соединение?
Любой инструмент вроде tcptraceroute но при этом TCP-соединение будет оставаться открытым и проверять его, пока оно не будет отключено? (в этот момент мы знаем, кто виноват)
Ранее я заявлял, что отследить установленное соединение невозможно.
Однако это неверно.
lcamtuf создал 0trace
инструмент, позволяющий трассировку TCP с использованием пакетов, соответствующих установленному соединению.
Есть улучшенная версия под названием Intrace, а также Python версия пользователя Jon Oberheide.
Идея состоит в том, чтобы прослушивать пакеты для указанного соединения, а затем вводить пакеты с соответствующими порядковыми номерами TCP, увеличивая TTL (как обычно traceroute
делает).
После нескольких попыток и некоторой удачи вы, возможно, сможете найти прыжок, который начинает отбрасывать пакеты, так как этот прыжок также сбросит ваши пакеты трассировки.