27 de septiembre de 2016

Conexiones activas en #SQUID3

Hoy les voy a compartir un poco de información valiosa, para aquellos administradores que utilizan el Servidor Proxy Squid3 en sus redes.

Figura 1: Conexiones activas en SQUID3

Es posible que en varias oportunidades sea indispensable conocer la cantidad de conexiones activas que está soportando el servidor en este momento. Lamentablemente, no existe un solo comando mágico que muestre esa información, pero de todas maneras lo vamos a resolver jugando con algunos comandos.

Generalmente Squid3 utiliza el puerto TCP/3128, es por ello que al ejemplo lo vamos a hacer con este número de puerto, aunque puede variar según como lo tengan configurado.

Conexiones activas en el servido Proxy Squid3


Primero iniciamos con el comando netstat, que no es más que una herramienta que permite obtener información de las conexiones sobre nuestro servidor.

$ netstat -nat

para ello hacemos uso de tres flag (-n) para que especifique los números de puertos, (-a)  para que se especifiquen todas las conexiones de todas las interfaces y finalmente (-t) para que se filtren conexiones TCP.

A esta salida se le aplica un filtro para que liste aquellas que corresponde al puerto 3128 de nuestro servidor Proxy.

$ netstat -nat | grep :3128

Y de esta manera el listado inicial comienza a reducirse.

El siguiente paso consiste nuevamente en aplicar un filtro para acotar las conexiones a su estado ESTABLISHED

$ netstat -nat | grep :3128 | grep ESTABLISHED

Ahora quitamos las conexiones localhost que tenga el servidor.

$ netstat -nat | grep :3128 | grep ESTABLISHED | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128

el flag (-v) del comando grep se utiliza para invertir la coincidencia, algo similar a una negación de lo que se quiere filtrar.

Falta muy poco para llegar al final, y para ello gracias al uso de awk, podemos visualizar los orígenes de las conexiones con el proxy.

$ netstat -nat | grep :3128 | grep ESTABLISHED | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128 | awk '{ print $5 }'

Como se puede apreciar, los puertos que está especificados, son puertos altos aleatorios con los que se negoció junto al proxy para establecer la conexión.

En el listado lo podríamos eliminar, una vez más haciendo uso de awk o de sed.

$ netstat -nat | grep :3128 | grep ESTABLISHED | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128 | awk '{ print $5 }' | awk -F\: '{ print $1 }'

Con el comando sort le podemos dar un orden descendiente en las direcciones IPs.

$ netstat -nat | grep :3128 | grep ESTABLISHED | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128 | awk '{ print $5 }' | awk -F\: '{ print $1 }' | sort

Una vez aplicado este filtro es posible aplicar el comando uniq

$ netstat -nat | grep :3128 | grep ESTABLISHED | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128 | awk '{ print $5 }' | awk -F\: '{ print $1 }' | sort | uniq 

Si utilizamos el flag uniq -c es posible conocer la cantidad de conexiones de cada dirección IP.

Y para finalizar y obtener un solo valor, se puede utilizar el comando wc -l que va a mostrar la cantidad de líneas generada, que en este caso corresponde a las direcciones ip conectadas de forma activa con el servidor proxy.

$ netstat -nat | grep :3128 | grep ESTABLISHED | grep -v 0.0.0.0:3128 | grep -v 127.0.0.1:3128 | awk '{ print $5 }' | awk -F\: '{ print $1 }' | sort | uniq | wc -l

Para muchas tareas cotidianas, no existe un solo comando o herramienta que lo soluciones, sin embarga concatenando pequeñas soluciones y haciendo uso de la imaginación es posible crear script muy interesantes.

Saludos!

Entradas populares