Недавно в $ WORK был установлен новый брандмауэр (NAT). С тех пор я получаю много сетевых тайм-аутов и прерываний, особенно для операций, которые требуют от сервера немного подумать без ответа (svn update, rsync и т. Д.). Входящие сеансы SSH через VPN также часто прерываются.
Это ясно говорит о том, что мне нужно настроить время поддержки активности TCP (и ssh) на рассматриваемых серверах, чтобы уменьшить эти ошибки.
Но какое подходящее значение я должен использовать?
Предполагая, что у меня есть машины по обе стороны от брандмауэра, между которыми я могу установить соединение, есть ли способ измерить, какое ограничение по времени TCP-соединений может быть для этого брандмауэра?
Теоретически я бы отправил пакет с постепенно увеличивающимися интервалами, пока соединение не было потеряно. Какие-либо инструменты, которые могут помочь (лучше всего бесплатно или с открытым исходным кодом, но я открыт для других предложений)?
Устройство не находится под моим контролем, поэтому я не могу просто получить значение, хотя я пытаюсь спросить, что оно сейчас и можно ли увеличить его.
Я думаю, что вам просто нужно подключиться с одной машины к другой, выполняя захват пакетов на одной из машин. Создайте сеанс FTP, HTTP, SSH и т. Д. И просто оставьте его там до истечения времени ожидания.
Я не уверен, что вы имеете в виду, когда говорите: «Теоретически, я бы отправил пакет с постепенно увеличивающимися интервалами, пока соединение не будет потеряно», но я не думаю, что вам нужно делать что-либо, кроме установления соединения, захвата трафика, и оставьте его, пока не истечет время ожидания. Тайм-ауты происходят в незанятых сеансах, и если вы отправите данные на другой конец, это, вероятно, сбросит таймер, поскольку сеанс больше не будет бездействовать.
Когда истекает время ожидания, посмотрите на временную метку захвата из первого пакета (начало трехстороннего рукопожатия) до тех пор, пока соединение не будет разорвано (вы можете увидеть или не увидеть RST).
Запрет любых тайм-аутов уровня приложения (в зависимости от того, какой тип соединения вы устанавливаете), это должно дать вам представление о том, на что настроен параметр тайм-аута.
Я попытался установить исходящее соединение ssh, но мне пришлось сделать больше, чем просто позволить ему оставаться там. Без взаимодействия он будет действовать бесконечно, но перестанет принимать ввод после определенного времени простоя.
Итак, я попробовал запустить:
# for n in 60 90 120 180 240 300 600 900 1800 3600; do sleep $n && echo "Still r unning $n"; done Still running 60 Still running 90 Still running 120 Still running 180 Still running 240
Затем он простаивал более 5 минут. В этот момент я нажал клавишу и получил:
Connection to XXX closed by remote host. Connection to XXX closed.
Вероятно, мне следовало использовать вероятные интервалы плюс несколько секунд, но я почти уверен, что тайм-аут составляет от 240 до 300 секунд.
Сетевые администраторы сообщили, что тайм-аут установлен на 60 минут, но это явно не так. Удаленная сторона закрывает соединение намного раньше, но исходящие соединения просто зависают на моей стороне. Это очень неприятно для исходящих подключений, для которых удаленная сторона должна немного подумать, прежде чем отвечать (svn update, ftp с большими удаленными каталогами и т. Д.)
Может быть, самый простой способ узнать правильное значение тайм-аута - просто попросить сетевого администратора сообщить вам настроенные параметры для нового устройства NAT?