1、常用参数介绍(标红的要重点掌握)-i 指定监听的网络接口;
例如 -i eth0
-e 在输出行打印出数据链路层的头部信息(加上就显示MAC地址);
-c 截取指定数目的数据包;
例如 -c 1000,代表抓1000个包。
-n 不把网络地址转换成名字;
-nn 不把端口和网络地址转换成名称;
-x 将截取的数据包内容以十六进制打印出来;
-X 将截取的数据包内容以ASCII文本形式打印出来;
-s 截取指定大小的数据包,s0表示完整数据包;
需要保存到本地时一定要加上 -s0
-w 将抓包内容保存到指定到文件,并不打印出来;
-a 将网络地址和广播地址转变成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,如在ip包中包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
2、抓包参数运用案例
不保存到本地的抓包示例:
tcpdump -i eth0 host 10.10.1.1 -nne -c 100
代表抓eth0口抓100个10.10.1.1的数据包,显示出MAC地址
保存到本地的抓包示例:
tcpdump -i eth0 host 10.10.1.1 -s0 -c 10000 -w/tmp/pc.pcap -vv
代表抓eth0口抓10000个10.10.1.1的数据包,保存到/tmp下,-vv能够实时看到已抓包的数量
3、抓包条件介绍
tcpdump利用表达式作为报文的过滤条件,表达式有如下四种类型关键字和逻辑运算符组成:
关于类型的关键字,主要包括host,net,port ,ether 例如host 210.27.48.2,如果没有指定类型,缺省的类型是host
取非运算是 ‘not ’ ‘! ’
与运算是‘and’,‘&&’
或运算 是‘or’ ,‘||‘
4、抓包示例
指定MAC地址抓包:
tcpdump -i eth0 -c 100 ether src 68:A1:B7:22:F7:38 -nne
同时抓多个地址,其中一个方向地址为多个:
tcpdump -i eth4 host 61.185.220.229 and host '(111.20.144.206 or 123.139.155.16 or 114.215.100.5 )' -nn
指定源、目IP地址抓包
tcpdump -i vpntun src 200.200.0.20 and dst 192.200.20.200 -nn
指定源网段抓包
tcpdump -i eth1 src net 10.66.27.0/24 and dst port 80 -c 10 -nn
指定不抓某地址或者端口
按照正常的表达式加一个not就可以了
tcpdump -i eth2 host 1.1.1.1 and not port 22345 -nn -c 1000
抓指定ipv6地址的icmp包
tcpdump -i eth0 icmp6 and host 240e:699:8001:1600::ffff -nn
带vlan的抓包
tcpdump -i eth1 vlan and host 10.66.27.23 -c 10 -nn
抓取经过AF的pppoe拨号包
tcpdump -i eth1 pppoes and host 10.66.27.23 -c 10 -nn
抓取AF本身的pppoe拨号包(拨号未成功时,AF还未生成ppp口,所以需要直接抓物理口数据)
tcpdump -i eth1 pppoes -c 100 -nn
tcpdump -i eth1 host e80::fcfc:feff:fe20:4 -nn -s0
抓取某个ipv6地址数据包
tcpdump -i eth1 icmp6 -nn -s0
抓取eth1口icmp6的数据包
tcpdump -i eth1 ip6 -nn -s0
抓取eth1口所有的ipv6数据