tcpdump 使用指南
过滤
tcpdump [option] [proto] [dir] [type]
基于IP进行过滤host、src、dst
1 | tcpdump host 192.168.10.0 |
基于网段进行过滤net
1 | tcpdump net 192.168.10.0/24 |
基于端口进行过滤
1 | tcpdump tcp port 80 |
如果需要指定两个端口,可以如下。
1 | tcpdump port 80 or port 22 |
范围过滤
1 | tcpdump portrange 8000-8088 |
基于协议进行过滤
获取icmp协议的报文
1 | tcpdump icmp |
常用于icmp、IP、IP6、arp、icmp、tcp、udp等。
应用层协议http、dns、https、ssh等应用层协议,需要写成tcpdump port http
。
过滤规则组合
- and :
tcpdump src 192.168.10.1 and port 80
- or:
tcpdump tcp port 443 or port 80
- not
tcpdump not tcp port 22
- 多个过滤运算符组合:
- 需要用到括号,而括号在shell中是特殊符号,所以需要使用双引号包裹。
- and的优先级大于or
tcpdump "src hostname and (dst port 80 or 443)"
基于包大小的过滤
- 获取小于100字节的数据包
tcpdump less 100
- 获取大于100字节的数据包
tcpdump greater 100
常用参数
使用tcpdump -h
或man tcpdump
查看参数和使用手册。
1 | root@host:~# tcpdump -h |
-i
-i
指定监听网络接口(网卡),使用ifconfig
命令查看网络接口:
1 | root@host:~# ifconfig |
再使用tcpdump -i eth0
。
tcpdump默认是监听第一块网卡。
tcpdump -i any
监听所有的网卡。
-w
-w
将捕获的信息写入(write)到文件中。导出的文件格式最好是cap
或pcap
,能够被wireshark打开,便于分析。
实例
1 | tcpdump -w test # test 是文件名 |
-r
-r
read
1 | tcpdump -r test # test 是文件名 |
-n、-nn、-N
-n
不把ip转换成域名,直接显示ip,避免执行DNS lookups
的过程,提高执行效率。-nn
不把ip和端口转换成域名与别名。-N
简化host的显示
-t、-tt、-ttt、-tttt
-t
每一行不显示时间。-tt
每一行显示时间戳。-ttt
输出每两行的时间间隔(毫秒)。-tttt
在时间前面加上日期。
-v、-vv、-vvv
-v
-vv
-vvv
-c、-C、-W
-c
count , tcpdump抓取报文的数量。- -C file_size ,输出的文件大小,需要配合
-w
使用,基本单位是百万字节,file_size为1时,指的是一百万字节。 - -W 最大文件数量。
-Q、-q
-Q
选择是入方向还是出方向的数据包,可选项为in,,out,inout。也可使用--direction=[direction]
。-q
简洁的输出
-D、-L
- -D
- -L
-s
-A、-X
-e
-F
-l
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LT的编程笔记!