tcpdump命令需要在root权限下运行。
1、指定端口Port抓包
示例:12500端口上抓包。
命令如下: tcpdump -n -X -i any port 12500
将会把抓包结果打印到控制台界面上。
命令如下: tcpdump -n -X -i any port 12500 > 1.txt
将会把抓包结果保存到当前路径下的1.txt中。
注意:指定端口抓包时,显示的抓包结果最大为1472字节的数据。udp大包的情况,一个4KB的包分成多个片,其他数据片的显示打印不出来。
udp的大包场景(数据大于1472字节)下,需要使用下面的指定目的IP进行抓包。
2、指定目的IP抓包
示例:抓包发送给目的服务器10.60.18.80的请求包和响应包。
(1)请求包抓取
命令如下:tcpdump -n -X -i bond0 dst host 10.60.18.80
将会把抓包结果打印到控制台界面上。可以使用>1.txt,将抓包结果保存到txt中。
其中-i 是指定在哪一个网口上抓包,可以使用ifconfig得到;或者单网口情况下,不使用-i,也可以抓包。
(2)响应包抓取
命令如下:tcpdump -n -X -i bond0 src host 10.60.18.80
将会把抓包结果打印到控制台界面上。可以使用>1.txt,将抓包结果保存到txt中。
2.1 udp大包的抓包结果分析示例
示例:以一个4KB的udp发送包为例,从10.23.48.170.12500 发送到 10.60.18.80:700端口。
一个4kB的udp包,被拆分成了1个udp-bad-length包,和2个ip-proto-17的片包。总的组成了4KB的udp发送包。
(1)分析udp-bad length包
它由20个字节的IP头,加上8个字节的udp头,在加上后面的数据组成。后面的数据就是我们真正发送的有效数据。
(2)分析ip-proto-17片包
它由20个字节的IP头,在加上后面的数据组成。后面的数据就是我们真正发送的有效数据。