Dieses Tutorial erklärt einige praktische und nützliche Szenarien zur Verwendung des Befehls tshark.
Sie erfahren, wie Sie Captures automatisch in mehreren Dateien speichern, Captures basierend auf Zeitlimits automatisch speichern, Ihre eigene Puffergröße für die Erfassung angeben, bestimmte Felder aus der Erfassung extrahieren und Statistiken für ein bestimmtes Protokoll aus einer Erfassung anzeigen.
1. Captures automatisch in mehreren Dateien speichern
Beispielsweise möchten Sie auf Ihrem Produktionsserver Verkehrsdaten über einen längeren Zeitraum erfassen. Sie möchten diese Aufnahmen später verwenden, um die Daten zu analysieren.
Anstatt alle Ausgaben in einer einzigen Datei zu speichern, möchten Sie in dieser Situation die Aufnahmen möglicherweise automatisch in mehrere Dateien aufteilen, basierend auf einer von Ihnen angegebenen Größe.
Im folgenden Beispiel wird der Netzwerkverkehr in 20 Dateien mit einer Größe von jeweils 100 KB erfasst, und die Erfassung wird dann automatisch beendet.
# 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
Oben:
- -b ist die Ringpufferoption
- filesize:100 gibt an, dass die maximale Größe der Ausgabe-Capture-Datei 100 KB beträgt
- files:20 gibt an, dass die Gesamtzahl der zu erstellenden Ausgabedateien 20 beträgt
- -a zeigt Autostopp an
2. Automatisches Speichern von Aufnahmen basierend auf dem Zeitlimit
Das folgende Beispiel erfasst den Netzwerkverkehr in mehreren Dateien. Es wird jedoch zu neuen Dateien gewechselt, wenn die Dateigröße 10240 KB erreicht oder wenn 1 Sekunde verstrichen ist. Sie können Auto-Stopp-Bedingungen entsprechend verwenden.
# 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. Größe des Erfassungspuffers angeben
Dieses Szenario ist hilfreich, wenn Sie während der Erfassung mit Paketverlusten konfrontiert werden.
In diesen Situationen können Sie mit der Option -B eine Erfassungspuffergröße in MB angeben. Die Standardaufnahmegröße beträgt 1 MB.
Dies wird vom Erfassungstreiber verwendet, um Paketdaten zu puffern, bis diese Daten auf die Festplatte geschrieben werden können. Wenn Sie während der Erfassung auf Paketverluste stoßen, versuchen Sie, diese Größe zu erhöhen.
# 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. Erfassen mit der Option „decodieren als“
Dieses Szenario ist hilfreich, wenn Sie angeben müssen, wie ein Schichttyp seziert werden soll.
Dies ist dasselbe wie die Wireshark-Option „Decodieren als“, aber manchmal unterscheidet sich der angegebene Selektorwert von dem im Paket vorhandenen Wert. Angenommen, ein Diameter-Paket hat eine andere Quell- und Zielportnummer als 3868 (Standardportnummer), dann müssen Sie diesen Wert für tshark angeben, damit es ihn richtig zerlegen kann.
# 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. Bestimmte Felder extrahieren
Dieses Szenario ist beispielsweise hilfreich, wenn Sie bestimmte Felder aus Diameter-Protokollpaketen extrahieren möchten.
Sie wissen bereits, wie Sie mit dem Befehl tshark Daten für Dienste erfassen, die auf nicht standardmäßigen Ports ausgeführt werden.
Derzeit unterstützt tshark diese Option für wenige Protokolle.
Sie können dasselbe auch mit der Option -V tun und mit einem schnellen Skript- oder grep-Befehl kombinieren. Aber die unten gezeigte Methode ist schneller für sehr große Dateien.
# 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. Statistiken für bestimmte Protokolle anzeigen
Sie können auch Statistiken aus einer kopierten Datei für ein bestimmtes Protokoll anzeigen.
Im Folgenden werden beispielsweise die Statistiken aus einer erfassten Datei für das HTTP-Protokoll gedruckt
# 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%