"tcpdump" para capturar los últimos paquetes

"tcpdump" para capturar los últimos paquetes

Estoy monitoreando un determinado puerto, porque mi aplicación usa ese puerto, parece que la conexión se cae en momentos aleatorios, quiero ver cuáles son los últimos paquetes que pasan antes de que se caiga la conexión: usé esta línea

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

pero para que funcione tengo que iniciar otra terminal y emitir

sudo killall tcpdump

¿Existe un mejor enfoque? EDITAR 1: es importante capturar solo los últimos paquetes ya que no quiero que el archivo aumente, ya que hay suficiente tráfico para llenar el espacio en disco rápidamente.

Respuesta1

Ok, creo que encontré unsolución:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

Esto rota su archivo de salida cada 10 segundos a un nuevo archivo llamadotcpamir-<unixtimestamp>.txt

También puede modificar el archivo de salida para que se sobrescriba todos los días, si le preocupa el tamaño del archivo pendiente. Para más información lea man 3 strftime.

pienso en algo como

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

Donde %Rda la hora en notación de 24 horas (12:40, por ejemplo).

Leer archivos de salida relevantes con

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

Segunda solución:

Divídalo en más comandos y guárdelo como un script/función:

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

Respuesta2

Si solo deseas escribir todo el tráfico capturado solo tienes que agregar -w a la línea eliminando'| cola >> tcpamir.txt'

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

Si analiza la captura en Wirehark, la extensión debe ser .cap. Cuando se asegure de que la captura esté realizada, puede eliminar esto concontrol + c

NOTA: -w [nombre de archivo.cap] para escribir la captura en un archivo

información relacionada