这篇文章将为大家详细讲解有关Linux中如何使用wireshark分析tcpdump抓取的数据包,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
很多时候我们的系统部署在Linux系统上面,在一些情况下定位问题就需要查看各个系统之间发送数据报文是否正常,下面就简单讲解一下如何使用wireshark分析tcpdump抓取的数据包。网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
首先,通过yum查看tcpdump和wireshark所需要的软件包
[root@wjq2 ~]# yum search tcpdump
Loaded plugins: product-id,refresh-packagekit, security, subscription-manager
This system is not registeredto Red Hat Subscription Management. You can use subscription-manager toregister.
================================================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 searchwireshark
Loaded plugins: product-id,refresh-packagekit, security, subscription-manager
This system is not registeredto Red Hat Subscription Management. You can use subscription-manager toregister.
===============================================N/S Matched: wireshark ================================================
wireshark-gnome.x86_64 : Gnome desktop integration for wiresharkand wireshark-usermode
wireshark.i686 : Network traffic analyzer
wireshark.x86_64 : Network traffic analyzer
Name and summary matches only, use"search all" for everything.
查看tcpdump和wireshark的软件包是否安装,可以发现,tcpdump已经安装,wireshark没有安装
[root@wjq2 ~]# rpm -qa|grepwireshark
[root@wjq2 ~]# rpm -qa | greptcpdump
tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64
使用yum安装wireshark
[root@wjq2 tmp]# yum installwireshark* -y
[root@wjq2 tmp]# which tcpdump
/usr/sbin/tcpdump
[root@wjq2 tmp]# which wireshark
/usr/sbin/wireshark
下面对tcpdump命令的使用做一个详细的说明
tcpdump的命令格式
tcpdump的参数众多,通过man tcpdump或tcpdump -h可以查看tcpdump的详细说明,这边只列一些自己常用的参数:
[root@wjq2 tmp]# tcpdump -h
tcpdump version4.1-PRE-CVS_2012_02_01
libpcap version 1.0.0
Usage: tcpdump[-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
[ -C file_size ] [ -Ealgo:secret ] [ -F file ] [ -G seconds ]
[ -i interface ] [ -M secret ][ -r file ]
[ -s snaplen ] [ -T type ] [ -wfile ] [ -W filecount ]
[ -y datalinktype ] [ -zcommand ] [ -Z user ]
[ expression ]
tcpdump [-i 网卡] -nnAX '表达式' |
各参数说明如下:
-i:interface 监听的网卡。
-nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
-A:以ascii的方式显示数据包,抓取web数据时很有用。
-X:数据包将会以16进制和ascii的方式显示。
表达式:表达式有很多种,常见的有:host 主机;port 端口;srchost 发包主机;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 -weth0_dump.pcap
tcpdump: WARNING: eth0: noIPv4 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 -heth0_dump.pcap
-rw-r--r-- 1 root root 3.4KJan 18 11:19 eth0_dump.pcap
使用wireshark分析抓取的数据包:
[root@wjq2 tmp]# wireshark eth0_dump.pcap
上图中标出三快区域:
红色框内,是用来显示简单的数据包信息,用tcpdump抓包如时候,默认情况是显示成这样的;
绿色框内,是用来显示选中的数据包的详细信息,是按照TCP/IP四层结构显示的,第一行是数据链路层的信息,第二行是网络层信息(IP协议),第三行是传输层信息(TCP协议),第四层是应用层信息(HTTP协议),可以展开第一行用来观察具体的内容;
蓝色框中,是用来显示此数据包的真实面目。(下图列更清楚一些)
关于Linux中如何使用wireshark分析tcpdump抓取的数据包就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。