使用 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_20140410160213.pcap
-rw------- 1 root root 1088 Apr 10 16:02 capture_00002_20140410160215.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_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. 指定捕获缓冲区大小
当您在捕获过程中遇到数据包丢失时,此方案很有帮助。
在这些情况下,您可以使用 -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“解码为”选项相同,但有时指定的选择器值与数据包中存在的值不同。例如,假设一个直径数据包的源和目的端口号不同于 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. 显示特定协议的统计信息
您还可以显示来自特定协议的 cpatured 文件的统计信息。
例如,以下从捕获的 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%
- 点赞
- 收藏
- 关注作者
评论(0)