¿Cómo puedo averiguar lo que está congestionando mi connection de networking?

Estoy preguntando porque ha habido un par de veces cuando la connection de networking de nuestro server estaba saturada. Quiero tener una idea de lo que está causando la carga de la networking.

Mi primera idea fue hacer una regla de logging de iptables . P.ej:

 /sbin/iptables -A INPUT -m mport --dports 20,80,53 -j LOG --log-prefix "Audit: " 

Pero esto no funciona muy bien ya que tendría que analizar el logging y recostackr statistics. Preferiblemente, me gustaría algo que responda a las siguientes preguntas:

  1. ¿Cuántas conexiones TCP están activas para cada puerto de escucha
  2. ¿Cuántos packages UDP se recibieron en un puerto en particular en un set intreval
  3. ¿Qué dirección IP ha realizado la mayoría de las conexiones a mi server en las últimas x horas

Si tiene una distribución basada en networkinghat / centos / fedora, el package iftop está disponible en los repositorys EPEL, lo que da un desglose por connection, lo que le permitirá determinar si su host particular está causando el problema.

Probablemente quiera el command "iftop -P -N" que muestra los puertos además de los hosts como en la captura de pantalla de abajo.

Algunos detalles

introduzca la descripción de la imagen aquí

También aparece en el deb / ubuntu / gentoo repos en alguna parte …
sudo aptitude install iftop
yum install iftop
emerge si encima

Con respecto a sus 3 preguntas;

1) ¿Cuántas conexiones TCP están activas para cada puerto de escucha

 netstat -ant | egrep 'ESTABLISHED' | awk '{print $4}' | \ awk -F: '{print $NF}' | sort -n | uniq -c 5 22 1 389 1 766 1 778 1 812 1 838 1 4369 

que es un bastante básico de la parte superior de mi cabeza, para masticar la salida de netstat, puede cambiar el grep para agregar o quitar varios estados …

2) ¿Cuántos packages UDP se recibieron en un puerto determinado en un set intreval? 3) ¿Qué dirección IP ha realizado la mayoría de las conexiones a mi server en las últimas x horas

En ambos casos, usted va a necesitar recolectar datos, como usted sugirió la manera más simple es una cierta class de regla de iptables -j LOG. La primera respuesta en esta pregunta da algunos ejemplos;
https://stackoverflow.com/questions/349576/linux-retrieve-per-interface-sent-received-packet-counters-ethernet-ipv4-ipv

Para herramientas de visualización más generales, puede considerar iptraf o ntop que generan informes y datos más completos.

Hay una list bastante completa de herramientas de monitoreo de networking aquí;
http://www.ubuntugeek.com/bandwidth-monitoring-tools-for-linux.html

Ejecutar una captura de packages y luego usar Wireshark para analizarlo, esto debería darle una buena idea. Hay un montón de tutoriales por ahí para ayudarle a averiguar cómo se logra esto. Si el server pasa a tener una GUI, etherape puede ayudarle a visualizar lo que está pasando con bastante facilidad.

Puede utilizar modules recent o limit iptables. Echa un vistazo a esta página .