Questo tutorial spiega alcuni scenari pratici e utili nell'uso del comando tshark.
Imparerai come salvare automaticamente le acquisizioni su più file, salvare automaticamente le acquisizioni in base ai limiti di tempo, specificare la dimensione del buffer per l'acquisizione, estrarre campi specifici dall'acquisizione e visualizzare le statistiche per un protocollo specifico da un'acquisizione.
1. Salvataggio automatico delle acquisizioni su più file
Ad esempio, sul tuo server di produzione, desideri acquisire i dati sul traffico per un periodo di tempo prolungato. Ti piace usare queste acquisizioni in seguito per analizzare i dati.
In tale situazione, invece di archiviare tutti gli output in un unico file, potresti voler suddividere automaticamente le acquisizioni in più file in base a una dimensione specificata.
L'esempio seguente acquisirà il traffico di rete su 20 file, ciascuno delle dimensioni di 100 KB, quindi l'acquisizione si interromperà automaticamente.
# 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
In quanto sopra:
- -b è l'opzione del buffer dell'anello
- filesize:100 indica che la dimensione massima del file di acquisizione dell'output è 100 KB
- files:20 indica che il numero totale di file di output che dovrebbero essere creati è 20
- -a indica l'arresto automatico
2. Salvataggio automatico delle acquisizioni in base al limite di tempo
L'esempio seguente acquisirà il traffico di rete su più file. Ma passerà ai nuovi file quando la dimensione del file raggiunge 10240 KB o quando è trascorso 1 secondo. Puoi utilizzare le condizioni di arresto automatico di conseguenza.
# 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. Specifica la dimensione del buffer di acquisizione
Questo scenario è utile quando si verificano perdite di pacchetti durante l'acquisizione.
In queste situazioni, puoi specificare una dimensione del buffer di acquisizione in MB usando l'opzione -B. La dimensione di acquisizione predefinita è 1 MB.
Viene utilizzato dal driver di acquisizione per memorizzare nel buffer i dati dei pacchetti fino a quando tali dati non possono essere scritti su disco. Se riscontri perdite di pacchetti durante l'acquisizione, prova ad aumentare questa dimensione.
# 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. Cattura utilizzando l'opzione "decodifica come"
Questo scenario è utile quando devi specificare come sezionare un tipo di livello.
Questo è lo stesso dell'opzione "decodifica come" di Wireshark, ma a volte il valore del selettore specificato è diverso dal valore presente nel pacchetto. Ad esempio, supponiamo che un pacchetto di diametro abbia un numero di porta di origine e di destinazione diverso da 3868 (numero di porta predefinito), quindi devi specificare questo valore su tshark in modo che possa sezionarlo correttamente.
# 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. Estrai campi specifici
Ad esempio, questo scenario è utile quando desideri estrarre campi specifici da pacchetti di protocollo di diametro.
Sai già come acquisire dati per servizi eseguiti su porte non standard utilizzando il comando tshark.
Attualmente tshark supporta questa opzione per pochi set di protocolli.
Puoi anche fare la stessa cosa usando l'opzione -V e combinandola con un comando rapido di scripting o grep. Tuttavia, il metodo mostrato di seguito è più veloce per file molto grandi.
# 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. Visualizza statistiche per protocollo specifico
Puoi anche visualizzare le statistiche da un file acquisito per un protocollo specifico.
Ad esempio, quanto segue stampa le statistiche da un file acquisito per il protocollo 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%