如何使用 Wireshark Tshark 指定文件,时间,缓冲区捕获限制

本教程解释了使用 tshark 命令的一些实用和有用的场景。

您将了解如何将捕获自动保存到多个文件、根据时间限制自动保存捕获、指定您自己的捕获缓冲区大小、从捕获中提取特定字段以及从捕获中显示特定协议的统计信息。

1.自动保存捕获到多个文件

例如,在您的生产服务器上,您希望捕获较长时间的流量数据。您喜欢稍后使用这些捕获来分析数据。

在这种情况下,您可能希望根据您指定的大小将捕获自动分解为多个文件,而不是将所有输出存储在单个文件中。

以下示例将网络流量捕获到 20 个文件,每个文件的大小为 100 KB,然后捕获将自动停止。

# 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_20190410160213.pcap 
-rw------- 1 root root 1088 Apr 10 16:02 capture_00002_20190410160215.pcap

在上面:

  • -b 是环形缓冲区选项
  • filesize:100 表示输出捕获文件的最大大小为 100 KB
  • files:20 表示应创建的输出文件总数为 20
  • -a 表示自动停止

2. 基于时间限制的自动保存捕获

以下示例将捕获到多个文件的网络流量。但是,当文件大小达到 10240 KB 或经过 1 秒时,它将切换到新文件。您可以相应地使用自动停止条件。


# 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_20190410161312.pcap 
-rw------- 1 root root 1357 Apr 10 16:13 temp_00002_20190410161313.pcap 
-rw------- 1 root root 1476 Apr 10 16:13 temp_00003_20190410161314.pcap 
-rw------- 1 root root 1216 Apr 10 16:13 temp_00004_20190410161315.pcap

3. 指定捕获缓冲区大小

当您在捕获期间遇到数据包丢失时,此方案很有帮助。

在这些情况下,您可以使用 -B 选项以 MB 为单位指定捕获缓冲区大小。默认捕获大小为 1MB。

捕获驱动程序使用它来缓冲数据包数据,直到该数据可以写入磁盘。如果在捕获时遇到丢包,请尝试增加此大小。

# 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. 使用“解码为”选项捕获

当您需要指定应如何剖析图层类型时,此方案很有用。

这与wireshark“解码为”选项相同,但有时指定的选择器值与数据包中存在的值不同。例如,假设一个diameter包的源和目的端口号都不同于3868(默认端口号),那么你需要指定这个值给tshark,以便它可以正确解析。

# 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. 提取特定字段

例如,当您喜欢从直径协议数据包中提取特定字段时,此方案很有帮助。

您已经知道如何使用tshark 命令为在非标准端口上运行的服务捕获数据。

目前 tshark 为少数协议集支持此选项。

您还可以使用 -V 选项并结合快速脚本或 grep 命令执行相同的操作。但是,对于非常大的文件,下面显示的方法更快。

# 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. 显示特定协议的统计信息

您还可以显示来自特定协议的捕获文件的统计信息。

例如,下面从捕获的 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% 
(完)