Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是不可少的。
TcpDump是Linux中强大的网络数据采集分析工具之一。
TcpDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

常用选项

常用选项

具体含义

-a

将网络地址和广播地址转变成名字

-d

将匹配信息包的代码以人们能够理解的汇编格式给出

-dd

将匹配信息包的代码以c语言程序段的格式给出

-ddd

将匹配信息包的代码以十进制的形式给出

-e

在输出行打印出数据链路层的头部信息

-f

将外部的Internet地址以数字的形式打印出来

-l

使标准输出变为缓冲行形式

-n

不把网络地址转换成名字

-t

在输出的每一行不打印时间戳

-v

输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息

-vv

输出详细的报文信息

-c

在收到指定的包的数目后,tcpdump就会停止

-F

从指定的文件中读取表达式,忽略其它的表达式

-i

指定监听的网络接口

-r

从指定的文件中读取包(这些包一般通过-w选项产生)

-w

直接将包写入文件中,并不分析和打印出来

-T

将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)

常用的实例

1、默认启动-tcpdump

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包:

tcpdump工具的使用方法与常见选项_抓包

2、监视指定网络接口的数据包(-i)

举例:tcpdump抓取所有通过eth0的包

命令:tcpdump -i eth0

tcpdump工具的使用方法与常见选项_时间戳_02


注意:如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0。

3、抓取指定数目的包(-c)

举例:只针对eth0网口抓5个包。

命令:tcpdump -c 5 -i eth0

tcpdump工具的使用方法与常见选项_抓包_03

4、将抓到的包写入文件中(-w)

举例:将抓包记录到一个指定的文件中

命令:tcpdump -w tcpdump.pcap -i eth0

tcpdump工具的使用方法与常见选项_选项解释        _04

5、读取tcpdump保存文件(-r)

对于保存的抓包文件,可以使用-r选项进行读取。

举例:tcpdump -r tcpdump.pcap

tcpdump工具的使用方法与常见选项_时间戳_05

6、抓包时不进行域名解析(-n)

默认情况下,tcpdump抓包结果中将进行域名解析,显示的是域名地址,而不是IP地址,而使用-n选项,可以指定显示IP地址。

tcpdump工具的使用方法与常见选项_时间戳_06

7、增加抓包时间戳(-tttt)

使用-tttt选项,抓包结果将包含抓包日期。

举例:tcpdump -n -tttt -i eth0

tcpdump工具的使用方法与常见选项_网络接口_07


不显示时间戳(-t)

tcpdump工具的使用方法与常见选项_tcpdump        _08

8、指定抓包协议类型

tcpdump支持指定协议类型有:ip,ip6,arp,tcp,udp,wlan等。

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

举例:抓取arp协议的包。

命令:tcpdump arp -i eth0

tcpdump工具的使用方法与常见选项_网络接口_09

9、监视指定主机的数据包

例如:截获所有210.27.48.1 的主机收到的和发出的所有的数据包

命令:tcpdump host 210.27.48.1

tcpdump工具的使用方法与常见选项_tcpdump        _10

10、监视指定主机和端口的数据包

举例:如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

tcpdump工具的使用方法与常见选项_选项解释        _11