用户必须有root权限才可运行tcpdump
-w file: 将抓包存入指定的文件。
-r file: 从指定的文件读入报文(由-w选项保存而成),而不是抓取网卡上的报文
-c count:指定抓取count个报文后停止,否则一直抓下去,用户可通过Ctrl-C终止
-e:将二层报文头也解析出来。默认情况下,只从IP头开始解析,增加此选项后会将报
文的二层头也解析出来。
-F:抓包的过滤条件从指定的文件中读取
-D:列出可抓取的网卡的列表,如下面的例子有三个网卡
[p01056@localhost ~]$ sudo /usr/sbin/tcpdump -D
1.eth3
2.any (Pseudo-device that captures on all interfaces)
3.lo
-i interface:抓取指定的网卡上的报文,参数就是-D中列出的那些接口。
如果不指定该参数,将选取link-up状态的编号最小的网卡抓取(除环回接口外)
例如,下面就是抓取lo接口上的报文(自己ping自己的报文)
[p01056@localhost ~]$ sudo /usr/sbin/tcpdump -i 3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
15:37:24.266382 IP 10.153.107.75 > 10.153.107.75: ICMP echo request, id
13934, seq 1, length 64
15:37:24.266434 IP 10.153.107.75 > 10.153.107.75: ICMP echo reply, id 13934,
seq 1, length 64
-n:不将主机地址转换成dns名称
-nn:不将协议号和端口号转换成名称
不加-nn
15:43:37.223798 IP 10.153.107.72.tsdos390 > 10.153.107.75.ssh: . ack 441 win
62371
加-nn
15:43:45.936130 IP 10.153.107.72.1237 > 10.153.107.75.22: P 1:53(52) ack
4294955024 win 64467
-q:快速输出模式,输出较少的协议信息。
-S:打印tcp序号的绝对值,而不是相对序号。
-t:不打印时间戳
-ttt:打印和前一个报文的时间差
-v:打印verbose信息
-vv:打印更多的verbose信息
-vvv:打印更更多的verbose信息
-x:以16进制的形式打印,不含二层头
-xx:以16进制的形式打印,包含二层头
-X:以16进制打印,同时输出ASCII码,不含二层头
-XX:以16进制打印,同时输出ASCII码,包含二层头
过滤条件:放在命令的最后
由一个或多个限定符加上id(名称或数字)构成。
限定符有三类:
type:指明id的类型,如host,net,port,portrange等
dir:指明id的传送方向,如src/dst/src or dst/src and dst
proto:指明协议类型,例如ether,ip,arp等。
例如:
ether dst ehost
ether dst 68:b5:99:79:17:b2 : 目的mac = 68:b5:99:79:17:b2
ip src 10.153.107.73 : 源IP = 10.153.107.73
tcp dst port 22 : tcp目的端口号 = 22 (ssh)
多个简单过滤条件可以用and,or连接成一个符合过滤条件。如:ip src
10.153.107.79 && tcp dst port 22
sudo /usr/sbin/tcpdump -e -c 10 ip src 10.153.107.79 && tcp dst port 22
新闻热点
疑难解答