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

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

 

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

[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、查看tcpdumpwireshark的软件包是否安装,可以发现,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 tcpdumptcpdump -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:表示以ipport的方式显示来源主机和目的主机,而不是用主机名和服务。

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

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

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

 

下面是一些使用的例子

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

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

tcpdump host hostname

 

5)特定端口

tcpdump port 3000

 

6)监听TCP/UDP

服务器上不同服务分别用了TCPUDP作为传输层,假如只想监听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 eth1 -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 和 tcpudpicmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

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

-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抓取的数据包_第1张图片

上图中标出三快区域:

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

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

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

Linux中使用wireshark分析tcpdump抓取的数据包_第2张图片

 

 
作者:SEian.G(苦练七十二变,笑对八十一难)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31015730/viewspace-2150287/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31015730/viewspace-2150287/

你可能感兴趣的:(Linux中使用wireshark分析tcpdump抓取的数据包)