Tento tutoriál vysvětluje několik praktických a užitečných scénářů při používání příkazu tshark.
Pochopíte, jak automaticky ukládat zachycené soubory do více souborů, automaticky ukládat zachycené soubory na základě časových limitů, určit vlastní velikost vyrovnávací paměti pro zachycení, extrahovat konkrétní pole ze zachycení a zobrazit statistiky pro konkrétní protokol ze zachycení.
1. Automatické ukládání snímků do více souborů
Například na svém produkčním serveru chcete zaznamenávat provozní údaje po delší dobu. Tyto zachycování rádi použijete později k analýze dat.
V takové situaci můžete místo ukládání všech výstupů do jednoho souboru chtít automaticky rozdělit zachycené soubory do více souborů podle velikosti, kterou určíte.
Následující příklad zachytí síťový provoz do 20 souborů, každý o velikosti 100 kB, a poté se zachytávání automaticky zastaví.
# 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
Ve výše uvedeném:
- -b je volba kruhové vyrovnávací paměti
- filesize:100 udává, že maximální velikost výstupního zachyceného souboru je 100 kB
- files:20 udává, že celkový počet výstupních souborů, které by měly být vytvořeny, je 20
- -a označuje automatické zastavení
2. Automatické ukládání snímků na základě časového limitu
Následující příklad zachytí síťový provoz do více souborů. Ale přepne se na nové soubory, když velikost souboru dosáhne 10240 KB nebo když uplyne 1 sekunda. Podle toho můžete použít podmínky automatického zastavení.
# 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. Zadejte velikost vyrovnávací paměti pro zachycení
Tento scénář je užitečný, když se během zachycení setkáte s pády paketů.
V těchto situacích můžete zadat velikost vyrovnávací paměti pro zachycení v MB pomocí volby -B. Výchozí velikost záznamu je 1 MB.
To je používáno ovladačem pro zachycení k ukládání dat paketů do vyrovnávací paměti, dokud nelze tato data zapsat na disk. Pokud při zachycování zaznamenáte poklesy paketů, zkuste tuto velikost zvětšit.
# 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. Zachytit pomocí možnosti „dekódovat jako“
Tento scénář je užitečný, když potřebujete určit, jak má být typ vrstvy rozřezán.
Toto je stejné jako volba „dekódovat jako“ wireshark, ale někdy se zadaná hodnota selektoru liší od hodnoty přítomné v paketu. Předpokládejme například, že paket s průměrem má číslo zdrojového a cílového portu odlišné od 3868 (výchozí číslo portu), pak musíte tuto hodnotu zadat tshark, aby jej mohl správně rozebrat.
# 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. Extrahujte specifická pole
Tyto scénáře jsou například užitečné, když chcete extrahovat konkrétní pole z paketů protokolu průměru.
Již víte, jak zachytit data pro služby, které běží na nestandardních portech pomocí příkazu tshark.
V současné době tshark podporuje tuto možnost pro několik sad protokolů.
Totéž můžete udělat také pomocí volby -V a kombinací s rychlým skriptováním nebo příkazem grep. Níže uvedená metoda je však rychlejší pro velmi velké soubory.
# 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. Zobrazit statistiky pro konkrétní protokol
Můžete také zobrazit statistiky z nahraného souboru pro konkrétní protokol.
Následující příklad například vytiskne statistiku ze zachyceného souboru pro protokol 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%