Проверка активности TCP и брандмауэр, уничтожающий неактивные сессии

На сайте для клиентов сетевая команда добавила брандмауэр между клиентом и сервером. Это заставляет неактивные соединения быть разъединенными приблизительно после 40 минут времени простоя. Сетевые люди говорят, что брандмауэр не имеет никакого неактивного тайм-аута соединения, но факт - то, что неактивные соединения повреждаются.

Для обхождения этого мы сначала настроили сервер (машина Linux) с сообщениями проверки активности TCP, включенными с tcp_keepalive_time=300, tcp_keepalive_intvl=300, и tcp_keepalive_probes=30000. Это работает, и соединения остаются жизнеспособными в течение многих дней или больше. Однако мы также хотели бы, чтобы сервер обнаружил мертвые клиенты и уничтожил соединение, таким образом, мы изменили настройки к time=300, intvl=180, probes=10, думая, что, если бы клиент был действительно жив, сервер зондировал бы каждые 300 с (5 минут), и клиент ответит ACK, и это помешало бы брандмауэру рассматривать это как неактивное соединение и уничтожать его. Если бы клиент был мертв, то после 10 датчиков сервер прервал бы соединение. К нашему удивлению неактивные, но живые соединения уничтожаются приблизительно после 40 минут как прежде.

Wireshark, работающий на стороне клиента, не показывает сообщений проверки активности вообще между сервером и клиентом, даже когда сообщения проверки активности включены на сервере.

Что могло происходить здесь?

Если бы настройки проверки активности на сервере являются time=300, intvl=180, probes=10, я ожидал бы, что, если бы клиент жив, но неактивен, сервер отправлял бы датчики проверки активности каждые 300 секунд и оставлял бы соединение в покое, и если бы клиент мертв, это отправило бы тот после 300 секунд, то еще 9 датчиков каждые 180 секунд прежде, чем уничтожить соединение.Я прав?

Одна возможность состоит в том, что брандмауэр так или иначе прерывает датчики проверки активности с сервера и не удается передать их клиенту, и то, что это получило датчик, заставляет его думать, что соединение активно. Это общее поведение для брандмауэра? Мы не знаем, какой брандмауэр включен.

Сервер является узлом Teradata, и соединение с клиентской утилиты Teradata на сервер базы данных, порт 1025 на стороне сервера, но мы видели ту же проблему с соединением SSH, таким образом, мы думаем, что это влияет на все соединения TCP.

10
задан 30 August 2012 в 23:11
1 ответ

Межсетевой экран с отслеживанием состояния проверяет пакеты, а также подтверждает, живо ли соединение. Я считаю, что настройки брандмауэра также должны быть настроены точно так же, как и на компьютерах. По умолчанию многие брандмауэры открывают неактивные соединения только в течение 60 минут, но это время может меняться в зависимости от поставщика.

Некоторые поставщики будут иметь такие функции, как TCP Intercept, TCP State Bypass и Disable Connection Detection, которые позволят обрабатывать особые ситуации, подобные вашей.

Другой вариант - настроить сам брандмауэр с теми же параметрами, что и на серверах чтобы убедиться, что все согласовано.

На брандмауэре cisco у вас есть следующая команда для его настройки.

hostname (config) # timeout feature time

timeout conn hh: mm: ss - время простоя, после которого соединение закрывается, между 0: 5: 0 и 1193: 0: 0. По умолчанию это 1 час (1: 0: 0).

у вас есть несколько параметров в соответствии с вашими потребностями.

Я бы посоветовал поговорить с командой, которая управляет брандмауэром, и настроить тайминги в соответствии с вашими потребностями или проверить функциональность.

1
ответ дан 2 December 2019 в 22:16

Теги

Похожие вопросы