Este tutorial explica algunos escenarios prácticos y útiles al usar el comando tshark.
Comprenderá cómo guardar capturas automáticamente en varios archivos, guardar capturas automáticamente en función de los límites de tiempo, especificar su propio tamaño de búfer para la captura, extraer campos específicos de la captura y mostrar estadísticas para un protocolo específico de una captura.
1. Guardado automático de capturas en varios archivos
Por ejemplo, en su servidor de producción, desea capturar datos de tráfico durante un período de tiempo prolongado. Te gusta usar estas capturas más tarde para analizar los datos.
En esa situación, en lugar de almacenar todas las salidas en un solo archivo, es posible que desee dividir automáticamente las capturas en varios archivos según el tamaño que especifique.
El siguiente ejemplo capturará el tráfico de red en 20 archivos, cada uno con un tamaño de 100 KB, y luego la captura se detendrá automáticamente.
# tshark -b filesize:100 -a files:20 -w temp.pcap Running as user "root" and group "root". This could be dangerous. Capturing on eth0 28 # ls -lrt total 12 -rw------- 1 root root 1088 Apr 10 16:02 capture_00001_20140410160213.pcap -rw------- 1 root root 1088 Apr 10 16:02 capture_00002_20140410160215.pcap
En lo anterior:
- -b es la opción del búfer circular
- filesize:100 indica que el tamaño máximo del archivo de captura de salida es de 100 KB
- files:20 indica que el número total de archivos de salida que deben crearse es 20
- -a indica parada automática
2. Capturas guardadas automáticamente según el límite de tiempo
El siguiente ejemplo capturará el tráfico de red en varios archivos. Sin embargo, cambiará a nuevos archivos cuando el tamaño del archivo alcance los 10240 KB o cuando haya transcurrido 1 segundo. Puede utilizar las condiciones de parada automática en consecuencia.
# tshark -b filesize:10240 -b duration:1 -w temp.pcap Running as user "root" and group "root". This could be dangerous. Capturing on eth0 34 # ls -lrt -rw------- 1 root root 1863 Apr 10 16:13 temp_00001_20140410161312.pcap -rw------- 1 root root 1357 Apr 10 16:13 temp_00002_20140410161313.pcap -rw------- 1 root root 1476 Apr 10 16:13 temp_00003_20140410161314.pcap -rw------- 1 root root 1216 Apr 10 16:13 temp_00004_20140410161315.pcap
3. Especifique el tamaño del búfer de captura
Este escenario es útil cuando enfrenta caídas de paquetes durante la captura.
En esas situaciones, puede especificar un tamaño de búfer de captura en MB mediante la opción -B. El tamaño de captura predeterminado es 1 MB.
El controlador de captura lo utiliza para almacenar en búfer los datos del paquete hasta que esos datos se puedan escribir en el disco. Si encuentra caídas de paquetes durante la captura, intente aumentar este tamaño.
# tshark -B 2 2. Running as user "root" and group "root". This could be dangerous. 3. Capturing on eth0 4. 0.000000 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.30.59.101? Tell 10.30.32.1 5. 0.064507 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.70.11.143? Tell 10.70.0.1 6. 0.067515 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.70.11.143? Tell 10.70.0.1 7. 0.089554 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.30.50.212? Tell 10.30.32.1 8. 0.183726 LannerEl_24:eb:40 -> Broadcast ARP 60 Who has 10.30.36.86? Tell 10.30.32.1
4. Captura usando la opción "decodificar como"
Este escenario es útil cuando necesita especificar cómo se debe diseccionar un tipo de capa.
Esto es lo mismo que la opción "decodificar como" de Wireshark, pero a veces el valor del selector especificado es diferente del valor presente en el paquete. Por ejemplo, suponga que un paquete de diámetro tiene un número de puerto de origen y de destino diferente de 3868 (número de puerto predeterminado), entonces necesita especificar este valor a tshark para que pueda diseccionarlo correctamente.
# tshark -r capture.pcap -d sctp.port==3869,diameter 82 212.059173 192.168.105.20 -> 192.168.105.30 DIAMETER 262 cmd=Capabilities-ExchangeRequest(257) flags=R--- appl=Diameter Common Messages(0) h2h=204a16 e2e=67700000 83 212.059330 192.168.105.30 -> 192.168.105.20 SCTP 62 SACK 84 212.078804 192.168.105.30 -> 192.168.105.20 DIAMETER 294 cmd=Capabilities-ExchangeAnswer(257) flags=---- appl=Diameter Common Messages(0) h2h=204a16 e2e=67700000 85 212.080569 192.168.105.30 -> 192.168.105.20 DIAMETER 146 cmd=Device-WatchdogRequest(280) flags=R--- appl=Diameter Common Messages(0) h2h=5542a29 e2e=63d00002 86 212.084960 192.168.105.20 -> 192.168.105.30 SCTP 62 SACK 87 212.084998 192.168.105.20 -> 192.168.105.30 DIAMETER 178 SACK cmd=Device-WatchdogAnswer(280) flags=---- appl=Diameter Common Messages(0) h2h=5542a29 e2e=63d00002 88 212.100324 192.168.105.30 -> 192.168.105.20 DIAMETER 146 cmd=Device-WatchdogRequest(280) flags=R--- appl=Diameter Common Messages(0) h2h=5542a2a e2e=63d00003 89 212.101629 192.168.105.20 -> 192.168.105.30 DIAMETER 178 SACK cmd=Device-WatchdogAnswer(280) flags=---- appl=Diameter Common Messages(0) h2h=5542a2a e2e=63d00003 90 212.110997 192.168.105.30 -> 192.168.105.20 SCTP 62 SACK 91 212.119855 192.168.105.30 -> 192.168.105.20 DIAMETER 146 cmd=Device-WatchdogRequest(280) flags=R--- appl=Diameter Common Messages(0) h2h=5542a2b e2e=63d00004
5. Extraer campos específicos
Por ejemplo, estos escenarios son útiles cuando desea extraer campos específicos de paquetes de protocolo de diámetro.
Ya sabe cómo capturar datos para servicios que se ejecutan en puertos no estándar mediante el comando tshark.
Actualmente, tshark admite esta opción para algunos conjuntos de protocolos.
También puede hacer lo mismo usando la opción -V y combinándola con un script rápido o un comando grep. Sin embargo, el método que se muestra a continuación es más rápido para archivos muy grandes.
# tshark -q -r capture.pcap -R diameter -z diameter,avp,257,Origin-Host Running as user "root" and group "root". This could be dangerous. frame='82' time='212.059176' src='192.168.105.20' srcport='35132' dst='192.168.105.30' dstport='3868' proto='diameter' msgnr='0' is_request='1' cmd='257' req_frame='82' ans_frame='0' resp_time='0.000000' Origin-Host='backend.eap.testbed.aaa' frame='84' time='212.078807' src='192.168.105.30' srcport='3868' dst='192.168.105.20' dstport='35132' proto='diameter' msgnr='0' is_request='0' cmd='257' req_frame='82' ans_frame='84' resp_time='0.019631' Origin-Host='gw.eap.testbed.aaa' frame='126' time='225.283773' src='192.168.105.40' srcport='2844' dst='192.168.105.30' dstport='3868' proto='diameter' msgnr='0' is_request='1' cmd='257' req_frame='126' ans_frame='0' resp_time='0.000000' Origin-Host='opendiam.eap.testbed.aaa' frame='130' time='225.295815' src='192.168.105.30' srcport='3868' dst='192.168.105.40' dstport='2844' proto='diameter' msgnr='0' is_request='0' cmd='257' req_frame='126' ans_frame='130' resp_time='0.012042' Origin-Host='gw.eap.testbed.aaa' === Diameter Summary === requset count: 2 answer count: 2 req/ans pairs: 2
6. Mostrar estadísticas para un protocolo específico
También puede mostrar estadísticas de un archivo capturado para un protocolo específico.
Por ejemplo, lo siguiente imprime las estadísticas de un archivo capturado para el protocolo HTTP
# tshark -q -r a.pcap -R http -z http,tree Running as user "root" and group "root". This could be dangerous. =================================================================== HTTP/Packet Counter value rate percent ------------------------------------------------------------------- Total HTTP Packets 7 0.000375 HTTP Request Packets 4 0.000214 57.14% GET 4 0.000214 100.00% HTTP Response Packets 3 0.000161 42.86% 2xx: Success 2 0.000107 66.67% 200 OK 2 0.000107 100.00% 3xx: Redirection 1 0.000054 33.33% 302 Found 1 0.000054 100.00% 5xx: Server Error 0 0.000000 0.00% Other HTTP Packets 0 0.000000 0.00%