La utilidad tcpdump le permite capturar paquetes que fluyen dentro de su red para ayudar en la resolución de problemas de red. Los siguientes son varios ejemplos del uso de tcpdump con diferentes opciones. El tráfico se captura en función de un filtro específico. Existe una variedad de opciones, que incluyen:
Opciones | Descripción |
---|---|
-D | Imprime una lista de interfaces de red. |
-i | Especifique una interfaz en la que capturar. |
-c | Especifique el número de paquetes a recibir. |
-v, -vv, -vvv | Aumentar el nivel de detalle (verbosidad). |
-w | Escribe los datos capturados en un archivo. |
-r | Leer datos capturados de un archivo. |
Instalando la utilidad tcpdump
En la mayoría de los sistemas Unix/Linux, no encontrará el paquete tcpdump ya instalado. Para instalar la última versión, use el administrador de paquetes apropiado en su sistema. Por ejemplo, en el caso de servidores CentOS/RHEL:
# yum install tcpdump
Ejemplos del uso de tcpdump para solucionar problemas de red
1. Mostrar lista de interfaces de red
Para imprimir una lista de las interfaces de red disponibles en las que tcpdump puede capturar paquetes:
# tcpdump -D 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.any (Pseudo-device that captures on all interfaces) 5.lo [Loopback]
2. Capturar en una interfaz específica
Como se ve desde el comando 'tcpdump -D', para cada interfaz de red, se imprime un número y un nombre de interfaz. El nombre de la interfaz o el número se puede proporcionar al -i marca para especificar una interfaz en la que capturar. Por ejemplo, para capturar los paquetes en la interfaz eth0:
# tcpdump -i 1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:26:51.118038 IP ec2-54-159-106-120.compute-1.amazonaws.com.48021 > geeklab.31297: Flags [S], seq 3960153353, win 26883, options [mss 1460,sac kOK,TS val 2229362922 ecr 0,nop,wscale 7], length 0 01:26:51.118072 IP geeklab.31297 > ec2-54-159-106-120.compute-1.amazonaws.com.48021: Flags [S.], seq 547340507, ack 3960153354, win 26847, optio ns [mss 8961,sackOK,TS val 5714985 ecr 2229362922,nop,wscale 7], length 0
En este ejemplo, la salida es continua hasta que se termina presionando Ctrl + C.
3. Captura solo un número específico de paquetes
Para salir de tcpdump después de recibir una cantidad específica de paquetes, use -c (recuento) opción seguida del número de paquetes a recibir. El siguiente ejemplo captura dos paquetes:
# tcpdump -i 1 -c 2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:37:08.956549 IP 182.100.67.76.38819 > geeklab.ssh: Flags [P.], seq 542149092:542149176, ack 774431931, win 271, options [nop,nop,TS val 26493 51 ecr 6332468], length 84 01:37:08.956575 IP geeklab.ssh > 182.100.67.76.38819: Flags [.], ack 84, win 230, options [nop,nop,TS val 6332824 ecr 2649351], length 0 2 packets captured 6 packets received by filter 0 packets dropped by kernel
Como se muestra en este ejemplo, cuando tcpdump termina de capturar paquetes, informa lo siguiente:
- paquetes capturados :Este es el número de paquetes que tcpdump ha recibido y procesado.
- paquetes recibidos por filtro :Se puede especificar un filtro en la línea de comandos y tcpdump solo procesa y cuenta aquellos paquetes que coinciden con el filtro definido.
- paquetes soltados por kernel :Este es el número de paquetes que se descartaron debido a la falta de espacio en el búfer. Utilice la opción -B para establecer el tamaño del búfer.
4. Aumentar los detalles (verbosidad) de la salida
Para aumentar el detalle (verbosidad) de la salida, use -v opción, o -vv para una salida aún más detallada, o -vvv para el nivel de salida más detallado:
# tcpdump –i 1 –v # tcpdump –i 1 -vv # tcpdump –i 1 –vvv
5. Capture los datos en un archivo
Uso de la utilidad tcpdump con -w La opción le permite escribir los datos capturados en un archivo. Esto permite que los datos capturados sean leídos por otras herramientas de análisis de red, como Wireshark. El siguiente ejemplo captura datos en un archivo llamado capture.out:
# tcpdump –i 1 –v –c2 –w capture.out
6. lectura de datos capturados
También puede leer los datos capturados de un archivo usando –r opción:
# tcpdump –r capture_file
Algunos ejemplos más del comando tcpdump
Se pueden usar muchas otras opciones y argumentos con tcpdump. Los siguientes son algunos ejemplos específicos del poder de la utilidad tcpdump.
1. Muestra el tráfico entre 2 hosts
Para mostrar todo el tráfico entre dos hosts (representados por las variables host1 y host2):
# tcpdump host host1 and host2
2. Mostrar el tráfico solo desde un host de origen o de destino
Para mostrar el tráfico solo desde un host de origen (src) o de destino (dst):
# tcpdump src host # tcpdump dst host
3. Mostrar tráfico para un protocolo específico
Proporcione el protocolo como argumento para mostrar solo el tráfico de un protocolo específico, por ejemplo, tcp, udp, icmp, arp:
# tcpdump protocol
Por ejemplo, para mostrar el tráfico solo para el tráfico tcp:
# tcpdump tcp
4. Filtrado basado en puerto de origen o destino
Para filtrar según un puerto de origen o de destino:
# tcpdump src port ftp # tcpdump dst port http
La utilidad tcpdump también acepta operadores booleanos (AND, NOT, OR) y agrupación de operadores, lo que le permite crear filtros complejos para capturar datos de red.