【系统运维】网络抓包工具tcpdump使用说明

TangLu 运维 2016-10-11 8468 0

一、tcpdump工具介绍

tcpdump工具可以将网络中传送的数据包完全截获下来提供分析。支持网络层、协议、主机或端口的过滤,并提供and/or/not等逻辑语句来去掉无用的信息。在实际运用中,由于tcpdump可读性不高,可以结合Wireshark来更方便的对抓包数据进行分析。


二、tcpdump的安装与使用

1、在Linux系统上通过yum工具可以快速的安装好tcpdump

yum install tcpdump -y
tcpdump --version  #

tcpdump1.jpg


2、tcpdump常用选项

-D:列出当前系统上可以进行抓包的设备

tcpdump2.jpg


-i:指定一个需要进行抓包的设备,如"tucdump -i eth0",每一行都是一个数据包的信息,由多个字段组成,第1个字段是时间;第2个是IP协议,IPv4显示为IP,IPv6显示为IP6;第3、4个是源地址与目标地址;第5个字段是TCP协议里的Flags;剩下几个字段就是包的详细信息以及最后length包的长度,0代表没有数据。

tcpdump4.jpg


-n:不解析主机名,直接显示IP信息


-q:仅显示主要信息,多余字段(如TCP Flags)不做输出

tcpdump3.jpg


-v | -vvv:和q相反,会显示更详细的信息,三个v信息最详细


-c:指定抓包个数,比如"tcpdump -c 5",只抓5个数据包,而不会持续进行抓包


-A:把包内的详细数据也显示出来,如果没加密的数据都会被抓出来,包括密码

tcpdump6.png


-w:把tcpdump的抓包内容存到指定文本中,方便以后读取。如"tcpdump -i eth0 port 80 -c 10 -w tcpdump.pcap",通常情况下将tcpdump抓包文件后缀定义为pcap


-r:读取之前保存的pcap文件,读取的时候也可以加选项,如"tcpdump -r tcpdump.pcap -A"


-C file size | -W filecount | -G seconds:分别表示-w所记录的抓包数据文本的大小、文本的个数以及多少秒创建一次文本


3、tcpdump过滤表达式(使用表达式可以灵活的定义抓包条件,如端口,目标IP、源IP等,表达式一般写在命令的末尾)

port:后面接上指定的端口号,这样可以对指定端口的数据抓包,下图是本机用curl访问baidu后的抓包信息,可以看到本机192.168.44.129发出的请求以及收到220.181.57.217的返回数据

tcpdump5、.png


host  ip:指定需要抓包的主机,如"host 192.168.44.129"


net range:指定IP地址的范围,如"net 192.168.44"或“192.168.44.0/24”


udp | tcp | icmp:抓取udp或者tcp或者icmp协议的数据包


src ip:源地址,只对指定源地址进行抓包


dst ip:目标地址,只对指定目标地址进行抓包


and | or | not:可以将多个表达式组合一起,如:

tcpdump -i eht0 -nq port 80 or port 443
tcpdump -i eht0 -nq 'src host 192.168.44.129 and (dst port 80 or 443)'

评论