Muy útil para depurar los mensajes que se envían por la red.
Permite ver en tiempo real los paquetes TCP/UDP que están pasando por la red. Por ejemplo, podríamos entrar a una app y ver como se comunica con otra. Supongamos que se comunica app-02
mediante el puerto 2020
:
sudo tcpdump -i any -A "host app-02 and port 2020"
Algunos parámetros:
-
-A Imprimir cada paquete en ASCII.
-
-i {interface} Indicás que interface sniffeas, por ejemplo: eth0 , wlan0 , etc. Para todas: any.
-
-n Mostrar la IP y el puerto en vez del nombre del host.
La expresión es opcional, y se puede especificar un montón de cuestiones.
sudo tcpdump { parámetros } { expresión para filtrar }
Desde o hasta un host específico:
sudo tcpdump -i any -A "host 192.168.1.1"
Desde un host expecífico:
sudo tcpdump -i any -A "src host 192.168.1.1"
Hasta un puerto expecífico:
sudo tcpdump -i any -A "dst port 23"
Hasta un host específico y hasta un puerto específico:
sudo tcpdump -i any -A "dst host 192.168.1.1 and dst port 23"
Hasta un host específico y desde un puerto u otro específico:
sudo tcpdump -i any -A "dst host 192.168.1.1 and (dst port 80 or dst port 443)"
Para armar filtros más elaborados, donde el payload del TCP contenga un string específico: https://www.wireshark.org/tools/string-cf.html
Y si no, lo mas fácil es grepear y usar los parámetros de contexto: -A (after) -B (before) y -C (arriba y abajo). Por ejemplo:
sudo tcpdump -i any -A "host hotels.despegar.it" | grep -B 5 -A 20 'GET /v3/hotels'**
Un resultado:
..f...P.............k.....
9.1.....
12:36:16.939283 IP rebook-rc-00.39439 > 10.254.168.102.http: Flags [P.], seq 1128:1894, ack 30634, win 65160, options [nop,nop,TS val 967193037 ecr 2864896274], length 766
E..2..@[email protected]
..f...P.............i.....
9.1.....GET /v3/hotels?ids=480926&options=room_types%28amenities%29&include=test%2Cunpublished HTTP/1.1
Host: hotels.despegar.it
X-Access-Token: 3ft5scs3ina7b4jekdiimt8er2
X-Cluster:
X-Forwarded-For: 1.1.1.1
X-Version-Override:
X-Component: rebook-v1.1.51
X-Author-Transaction: rebook-1.1.51-rebook-rc-00-4912ad30-8ab3-44de-9f31-4966b5bf05c2
X-Client: rebook
X-UOW: tEun8370-94200-rebook-rc-00
X-Username: admin
X-TID:
X-User-Id: tEun8370-94200-rebook-rc-00
X-NewRelic-Transaction: PxQCBQVUDwJRUwVUVVQAVlMFFB8EBw8RVU4aV1xbAwUCBA4FBwNWVVQBA0NKQQkAB1xVUw4BFTs=
X-NewRelic-ID: VQQGUFFRCBABUFRVBgMAVg==
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
- Una limitación es que solo sirve cuando se va por HTTP, no por HTTPS.
- Es mucho más poderoso que lo que acá se detalla. Permite sniffear a nivel IP, y trae utilidades para filtrar con especificaciones a nivel TCP, UDP e ICMP.
- La salida puede ser consumida por el famoso
Wireshark
.