F5 ltm 1600 Irules: Cerrando conexiones con http 1.0 y keepalived

Restringimos el tráfico de nuestros servidores virtuales de los F5, a través de una irule de throttle.

Básicamente, guardamos una subtabla con el número de peticiones en una ventana (1 hora), y cuando sobre pasa el límite, fijamos el estado de la IP a bloqueado.

La irule, se basa en el evento: when HTTP_REQUEST.

Hemos detectado, que se nos pasaban algunas peticiones.

Los que abren conexiones http 1.0 con el flag de keepalived. Estas conexiones, sólo lanzan el evento de HTTP_REQUEST en el primer Request (get o post).

  • El primer GET por la conexión, lanza el evento, y se devuelve el código de error.
  • Los siguientes, ya no aplica la irule, y se sirven.

Se añade a la lógica del programa el cierre TCP, para evitar que la conexión la mantengan abierta:

HTTP::respond 403 content «RequestLimit: THROTTLED»
TCP::close

Si usamos HTTP::Close, el cierre de http es demasiado brusco, y los navegadores no  devuelven el error que enviamos desde los F5. Lo que se ve es «Connection reset by server»

 

 

 

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *