常见问题:
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'