Hace poco hablé con alguien que había tenido problemas con la configuración del cortafuegos de su empresa. El cortafuegos borra de su tabla de estado cualquier conexión que haya estado inactiva durante más de 10 minutos. Por desgracia, cuando recibe un segmento de una conexión que no figura en su tabla de estado, su comportamiento es descartar el segmento de forma silenciosa. Esto significa que una aplicación STCP puede tardar hasta 8 minutos en darse cuenta de que ya no puede comunicarse con su punto final y restablecer la conexión. Esto resultaba molesto para sus usuarios.
En ese momento sugerí que se modificara la aplicación para incluir un mensaje de mantenimiento de conexión configurable en la capa de aplicación. Por desgracia, modificar la aplicación no es una opción. Además, la aplicación no establece la opción de socket SO_KEEPALIVE, por lo que ni siquiera reducir el temporizador de mantenimiento de conexión del sistema de las 2 horas predeterminadas a 9 minutos resolverá el problema.
La solución consiste en un segmento de mantenimiento de conexión de la capa TCP generado por un tercero. Se trata de un segmento de mantenimiento de conexión de la capa TCP que parece proceder de la aplicación (utilizando la dirección IP del módulo como dirección de origen y el puerto TCP de la aplicación como puerto de origen) y que se envía a la dirección IP y al puerto del host remoto. El cortafuegos lo registra como actividad y mantiene la conexión en su tabla de estado.
La explicación y los ejemplos de mi herramienta «3rd_party_keep_alive» son demasiado extensos para esta entrada del blog, así que puedes consultar los detalles aquí.
