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

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工具的使用方法与常见选项
注意:如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0。

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

举例:只针对eth0网口抓5个包。
命令:tcpdump -c 5 -i eth0
tcpdump工具的使用方法与常见选项

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

举例:将抓包记录到一个指定的文件中
命令:tcpdump -w tcpdump.pcap -i eth0
tcpdump工具的使用方法与常见选项

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

对于保存的抓包文件,可以使用-r选项进行读取。
举例:tcpdump -r tcpdump.pcap
tcpdump工具的使用方法与常见选项

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

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

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

使用-tttt选项,抓包结果将包含抓包日期。
举例:tcpdump -n -tttt -i eth0
tcpdump工具的使用方法与常见选项
不显示时间戳(-t)
tcpdump工具的使用方法与常见选项

8、指定抓包协议类型

tcpdump支持指定协议类型有:ip,ip6,arp,tcp,udp,wlan等。
tcp ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
举例:抓取arp协议的包。
命令:tcpdump arp -i eth0
tcpdump工具的使用方法与常见选项

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

例如:截获所有210.27.48.1 的主机收到的和发出的所有的数据包
命令:tcpdump host 210.27.48.1
tcpdump工具的使用方法与常见选项

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

举例:如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
tcpdump工具的使用方法与常见选项