主要功能:捕获和分析数据包。

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤。


命令格式:tcpdump [ 选项 ] [ -c 数量 ] [ -i 网络接口 ] [ -w 文件名 ] [ 表达式 ]


常用选项:

可以使用帮助查看有什么参数

man tcpdump

下面列出常用的参数


-l:使标准输出变为缓冲行形式;

-c:抓包次数;

-nn:直接以 IP 及 Port Number 显示,而非主机名与服务名称;

-s :<数据包大小> 设置每个数据包的大小;

-i:指定监听的网络接口;

-r:从指定的文件中读取包;

-w:输出信息保存到指定文件;

-a:将网络地址和广播地址转变成名字;

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

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

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

-t:在输出的每一行不打印时间戳;

-v :输出稍微详细的报文信息;加一个v更详细。



四种表达式的过滤条件


1、关于类型的关键字,主要包括host,net,port, 例如 host106.122.248.2,指明 106.122.248.2是一台主机,net 228.232.0.0 指明228.232.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host。


2、确定传输方向的关键字,主要包括src, dst ,dst or src, dst and src ,这些关键字指明了传输的方向。例如 src106.122.248.2 ,指明ip包中源地址是106.122.248.2, dst net 228.232.0.0 指明目的网络地址是228.232.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。


3、协议的关键字,主要包括ip,arp,tcp,udp等类型。


4、三种逻辑运算,与运算是’and’,'&&’; 或运算是’or’ ,’||’; 非运算是 ‘not ‘ ‘! ‘。


其他重要的关键字如下: broadcast,less(小于),greater(大于)


例子:


1、截获eth0网卡10次收发所有数据包并将抓包结果保存到tcpdump.txt文件,再读取tcpdump.txt抓包结果文件


tcpdump -i eth0 -c 10 -w tcpdump.txt


tcpdump -r tcpdump.txt


2、截获来访问80端口的所有数据包(指定端口范围portrange 1-1024)


tcpdump port 80


3、截获所有来自主机106.122.248.2的进出所有数据包


tcpdump host 106.122.248.2


4、截获ip包中源地址是106.122.248.2的(目的是dst)


tcpdump src 106.122.248.2


5、截获主机106.122.248.2和主机125.77.18.5的通信


tcpdum host 106.122.248.2 and 125.77.18.5


6、截获tcp协议并且源地址106.122.248.2来访问80的端口


tcpdump tcp and src 106.122.248.2 and port 80


7、截获主机106.122.248.2除了和125.77.18.5之外的所有ip包


tcpdump ip host 106.122.248.2 and ! 125.77.18.5


8、截获长度大于1000数据包,对于DDOS攻击时,可以使用


tcpdump -i eth0 greater 1000