Linux中如何使用wireshark分析tcpdump抓取的数据包

这篇文章将为大家详细讲解有关Linux中如何使用wireshark分析tcpdump抓取的数据包,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

很多时候我们的系统部署在Linux系统上面,在一些情况下定位问题就需要查看各个系统之间发送数据报文是否正常,下面就简单讲解一下如何使用wireshark分析tcpdump抓取的数据包。网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。

1、首先,通过yum查看tcpdump和wireshark所需要的软件包

[root@wjq2 ~]# yum search tcpdump

Loaded plugins: product-id,
refresh-packagekit, security, subscription-manager

This system is not registered
to Red Hat Subscription Management. You can use subscription-manager to
register.

================================================
N/S Matched: tcpdump =================================================

tcpdump.x86_64 : A network traffic monitoring tool

  Name and summary matches only, use
"search all" for everything.

[root@wjq2 ~]# yum search
wireshark

Loaded plugins: product-id,
refresh-packagekit, security, subscription-manager

This system is not registered
to Red Hat Subscription Management. You can use subscription-manager to
register.

===============================================
N/S Matched: wireshark ================================================

wireshark-gnome.x86_64 : Gnome desktop integration for wireshark
and wireshark-usermode

wireshark.i686 : Network traffic analyzer

wireshark.x86_64 : Network traffic analyzer

  Name and summary matches only, use
"search all" for everything.

2、查看tcpdump和wireshark的软件包是否安装,可以发现,tcpdump已经安装,wireshark没有安装

[root@wjq2 ~]# rpm -qa|grep
wireshark

[root@wjq2 ~]# rpm -qa | grep
tcpdump

tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64

3、使用yum安装wireshark

[root@wjq2 tmp]# yum install
wireshark* -y

[root@wjq2 tmp]# which tcpdump

/usr/sbin/tcpdump

[root@wjq2 tmp]# which wireshark

/usr/sbin/wireshark

4、下面对tcpdump命令的使用做一个详细的说明

tcpdump的命令格式

tcpdump的参数众多,通过man tcpdump或tcpdump -h可以查看tcpdump的详细说明,这边只列一些自己常用的参数:

[root@wjq2 tmp]# tcpdump -h

tcpdump version
4.1-PRE-CVS_2012_02_01

libpcap version 1.0.0

Usage: tcpdump
[-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]

                [ -C file_size ] [ -E
algo:secret ] [ -F file ] [ -G seconds ]

                [ -i interface ] [ -M secret ]
[ -r file ]

                [ -s snaplen ] [ -T type ] [ -w
file ] [ -W filecount ]

                [ -y datalinktype ] [ -z
command ] [ -Z user ]

                [ expression ]

tcpdump [-i 网卡] -nnAX '表达式'

各参数说明如下:

-i:interface 监听的网卡。

-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。

-A:以ascii的方式显示数据包,抓取web数据时很有用。

-X:数据包将会以16进制和ascii的方式显示。

表达式:表达式有很多种,常见的有:host 主机;port 端口;src
host 发包主机;dst host 收包主机。多个条件可以用and、or组合,取反可以使用。

下面是一些使用的例子

(1)不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。

tcpdump

(2)监听特定网卡

tcpdump -i eth0

(3)监听特定主机:监听本机跟主机10.1.1.123之间往来的通信包。

备注:出、入的包都会被监听。

tcpdump host 10.1.1.123

(4)特定来源、目标地址的通信

特定来源

tcpdump src host
 hostname

特定目标地址

tcpdump dst host
 hostname

如果不指定src跟dst,那么来源 或者目标 是hostname的通信都会被监听

tcpdump host
 hostname

(5)特定端口

tcpdump port 3000

(6)监听TCP/UDP

服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包

tcpdump tcp

(7)来源主机+端口+TCP

A、监听来自主机123.207.116.169在端口22上的TCP数据包

tcpdump tcp port
 22 and src host 123.207.116.169

B、监听特定主机之间的通信

tcpdump ip host
 210.27.48.1 and 210.27.48.2

C、210.27.48.1除了和210.27.48.2之外的主机之间的通信

tcpdump ip host
 210.27.48.1 and ! 210.27.48.2

(8)稍微详细点的例子

tcpdump tcp -i
 eth2 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w
 ./target.cap

说明:

tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

-i eth2 : 只抓经过接口eth2的包

-t : 不显示时间戳

-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包

-c 100 : 只抓取100个数据包

dst port ! 22 : 不抓取目标端口是22的数据包

src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24

-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

(9)限制抓包的数量

如下,抓到1000个包后,自动退出

tcpdump -c 1000

(10)保存到本地

备注:tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘

tcpdump -n -vvv
 -c 1000 -w /tmp/tcpdump_save.cap

也可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)

(11)保存tcpdump抓包结果

[root@wjq2 tmp]# tcpdump -i eth0 -w
eth0_dump.pcap

tcpdump: WARNING: eth0: no
IPv4 address assigned

tcpdump: listening on eth0,
link-type EN10MB (Ethernet), capture size 65535 bytes

^C39 packets captured

39 packets received by filter

0 packets dropped by kernel

[root@wjq2 tmp]# ll -h
eth0_dump.pcap

-rw-r–r– 1 root root 3.4K
Jan 18 11:19 eth0_dump.pcap

5、使用wireshark分析抓取的数据包:

[root@wjq2 tmp]# wireshark eth0_dump.pcap

Linux中如何使用wireshark分析tcpdump抓取的数据包

上图中标出三快区域:

红色框内,是用来显示简单的数据包信息,用tcpdump抓包如时候,默认情况是显示成这样的;

绿色框内,是用来显示选中的数据包的详细信息,是按照TCP/IP四层结构显示的,第一行是数据链路层的信息,第二行是网络层信息(IP协议),第三行是传输层信息(TCP协议),第四层是应用层信息(HTTP协议),可以展开第一行用来观察具体的内容;

蓝色框中,是用来显示此数据包的真实面目。(下图列更清楚一些)

Linux中如何使用wireshark分析tcpdump抓取的数据包

关于Linux中如何使用wireshark分析tcpdump抓取的数据包就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/199990.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

相关推荐

发表回复

登录后才能评论