Tcpdump介绍
Linux环境下的嗅探器tcpdump是一个多用途的网络通信监测器,可捕获和显示报文及其内容。它可用来作为协议分析器,在系统及网络设备间提供一个最佳途径来探查通信和(或)连通性问题。大多数时候,网络疑难问题集中在网络配置问题以及诊断硬件相关故障。然而,用户将常常面对协议相关问题并且被迫钻研特定协议的机制来解决问题。使用tcpdump,被检查的报文将用长格式或短格式(根据使用的命令行选项)显示其信息。tcpdump有一个非常强有力的过滤机制,可用来查找与指定字符串或规则相匹配的报文。
tcpdump提供两种主要的捕获模式:杂凑和非杂凑。在杂凑模式下,捕获每个在网络上传递的报文,不管该报文是否发送到执行tcpdump 的系统。tcpdump工具提供了许多命令行选项来选择捕获模式、控制输出、指定过滤规则以及指定其他操作特性。这些选项根据它们的功能被分组并且包括以下种类:操作模式、显示选项、报文过滤选项。
Tcpdump的使用
centos下安装Tcpdump
yum install -y tcpdump*
常用的过滤器设置方法:
地址过滤:
host 192.168.98.169、src 192.168.98.169 # 过滤主机或源地址
dst 192.168.98.169、net 111.1.1.0/24 # 过滤目的地址
src net 192.168.98.0/24、dst net 192.168.98.0/24 #过滤网段
协议过滤:udp 、tcp、icmp、esp、not arp等。
端口过滤:port 端口,例如:port 80
过滤关键字和值之间以空格分隔;各个条件之间用and、or逻辑符连接;支持not关键字.例如:
1、tcpdump –i any src 192.168.98.169 or dst 111.1.1.108 and udp and port 2010
2、tcpdump –i any tcp and not port 21
过滤选项
-i 指定接口
例:-i eth0、-i ipsec0 、-i vlan001
-n 不把主机的网络地址转换成名字。
-e 显示MAC地址。
tcpdump -i any -e -n -c 10
-t 不显示时间信息。
tcpdump -i any -t -n -c 10
-tt 显示没有格式化的时间信息。
tcpdump -i any -tt -n -c 10
-c 收到指定的数据包数目后,就停止显示
例:-c 10 收到10个包后停止。
tcpdump -i any -c 10
-s 显示信息长度设置
例:-s 30
tcpdump -i any -s 30 -c 10
-q 快速输出,仅列出少数的传输协议信息。
tcpdump -i any -q -c 10
-v 详细显示指令执行过程,使用该选项可以看到数据的ttl、ID、长度、offset、flag、协议等信息。
tcpdump -i any -v host 192.168.98.1 -c 10 and icmp
-vv 更详细显示指令执行过程。
tcpdump -i any -vv host 192.168.98.1 -c 10
-x 用十六进制字码列出数据包资料。
tcpdump -i any -x -c 5
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-S 用绝对而非相对数值列出TCP关联数。
tcpdump -i any -S tcp -c 5
-w<数据包文件> 把数据包数据写入指定的文件。
-r 从指定的文件中读取包(这些包一般通过-w选项产生)。
tcpdump -i any -c 10 -w tcpdump.pcap
tcpdump -i any -c 10 -r tcpdump.pcap
其余常用选项
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件
-l 使用标准输出列的缓冲区
-N 不列出域名
-O 不将数据包编码最佳化
-p 不让网络界面进入混杂模式:只抓发给给机的数据包
注意
各个选项之间用空格分隔,例如:
tcpdump -i any -c 20 -t -s 200 -n
选项和过滤条件组合如下面的例子:
tcpdump -i any -c 20 -t -s 200 -n host 111.1.1.108 and tcp