Tcpdump的命令行参数与使用方法

Tcpdump的命令行参数与使用方法

常见问题:

1.tcpdump为什么不能抓完整的包,在Wiresharke中总是显示”Packet size limited during capture”

这是因为 tcpdump默认只抓取一个包的前68个字节(IP v4) 或者 前96个字节(IP v6),而Wiresharek默认抓取全部,最多为65535个字节,可以通过使用 -s 0 参数来让tcpdump抓取全部,对于老版本的tcpdump,则使用-s 65535, 当然,目前几乎所有的系统上都是比较新的版本了

Wireshark其实也有一个选项,来限制包长度的,不过默认没有选上

Limit each packet to 68 bytes 

-C file_size     必须与 -w 联合使用 

在写入一个包到保存文件时(使用 -w  参数), 检查文件的当前大小是否比 file_size 大,  如果大, 就关闭当前文件, 再重新打开一个.    新打开的文件的名称 , 就是用 -w 参数指定的名称, 再加上一个数字序号, 从1开始,依次增加.   file_size的大小是 百万字节 (比如 -C  1 就是100万字节, 而不是 1M Bytes/1,048,576 Bytes)

-G rotate_seconds 

与 -w 选项联合使用, 每隔 rotate_seconds 秒的时间,  就将新捕获的数据 写入 -w指定的文件

比如   -G 3600 -w ‘trace_%Y-%m-%d_%H:%M:%S.pcap’ 就会按照 年月日 时分秒 生成文件

如果 -w 没有包含一个strftime 格式的字符串,  就会覆盖原来的文件

但是-G 与 -C 选项一起用, 那么会生成   file[count] 格式的文件, 而不是覆盖了

-W filecount 

同-C 选项一起使用, 写完filecount个文件后, 就会覆盖, 继续写

同-G 选项使用, 写完后, 就会退出

如果-W -C -G 一起用, 写完不退出, 还是会覆盖

nohup tcpdump.4.1.1 -i eth1 -s 0  -W 20  -G 300 -w trace_%Y-%m-%d_%H:%M:%S.ezcap & 

后台抓包,保存20个文件,300秒一个文件,文件名按年月日时分秒命名,后缀名ezcap。

目录

 [显示

利用PFring的tcpdump进行抓包

利用PFring下的tcpdump捕捉到的数据包将和探针的probe捕捉到的数据一模一样,因此在排除探针对数据包的解码问题时,一定要用PFring下的tcpdump进行抓包

进入探针的PFring安装包目录,再进入userland/tcpdump-4.1.1,编译安装tcpdump

./configure 
make 

安装完毕后,在该目录下即可运行tcpdump

示例:

[root@localhost tcpdump-4.1.1]# cd /root/PF_RING-5.5.2/userland/tcpdump-4.1.1 
[root@localhost tcpdump-4.1.1]# ./tcpdump -s 0 -i eth0 -vv -C 200 -w /home/20141202.pcap 
-s 0:抓全包 
-i eth0:在eth0抓包 
-C 200:每200M写一个文件 
-w:写文件 
-vv:显示详情 

tcpdump用过滤器抓混杂带vlan tag和不带vlan tag的报文

tcpdump使用过滤器抓包,如果流量既有带vlan tag的,也有不带vlan tag的,也就是说两种流量是混杂在一起的,那么就必须使用如下过滤器语法

filter or (vlan and filter)

举例

tcpdump -i eth0 -vv -w test.pcap "host 192.168.1.20 or (vlan and host 192.168.1.20)" 

如果要指定vlan id抓包,则需要直接计算相应字节的值,举例,要抓vlan 200和vlan 500并且IP地址是10.1.1.98或者10.1.1.99的包,如下

tcpdump -vv -i eth1 '( vlan and ( ether[14:2] & 0xfff == 200 or ether[14:2] & 0xfff == 500 ) ) and ( ip host 10.1.1.98 or ip host 10.1.1.99 )' 

抓取指定网段的数据包

tcpdump -nvi eth1 net 10.16.200.0/24 

抓取目的地址范围是192.168.1.10 ~ 192.168.1.100

tcpdump -n -nn 'ip[16] == 192 and ip[17] == 168 and ip[18] == 1 and ip[19] > 9 and ip[19] < 101'

猜你喜欢

转载自www.cnblogs.com/zhangyunfei-blog/p/9288444.html