Linux-tcpdump使用指南

简介

tcpdump 是一个运行在命令行下的的数据包分析器,它允许用户拦截和显示发送或接收通过网络连接到该台计算机的 TCP/IP 数据包或者其他协议的数据包。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 andornot等逻辑语句来帮助用户去掉无用的信息。

还有一些功能相同的工具,类似于 wireshark ,不过它是由图形化界面的,而 tcpdump 只有命令行。


使用规范

1
tcpdump [option] [proto] [dir] [type]

关于其中各种参数的含义:

  • option: 可选参数。
  • proto: 协议类过滤器。根据协议进行过滤,可识别的关键词有 tcpudpipicmp 等。
  • dir: 流向类过滤器。根据数据包的流向进行过滤,可识别的关键词有 srcdst,同时也可以使用逻辑运算符及逆行组合。
  • type: 类型类过滤器。可识别的关键词有 hostnetportportrange 等。

可选参数

-a

将网络地址和广播地址转变成名字。

-c

捕获 count 个包 tcpdump 就退出。

-d

打印出易读的包匹配码。
-dd:以C语言的形式打印出包匹配码。
-ddd:以十进制数的形式打印出包匹配码。

-e

每行的打印输出中将包括数据包的数据链路层头部信息。

-f

将外部的 Internet 地址以数字的形式打印出来。

-F

从指定的文件中读取表达式,忽略其它的表达式。

-i

指定要过滤的网卡接口,如果要查看所有网卡可以 -i any

-l

使标准输出变为缓冲行形式。

-n

不把 ip 转化成域名。直接显示 ip,避免执行 DNS lookups 过程,这样解析速度会快很多。
-nn: 不把协议和端口号转化成名字,速度也会快很多。

-N

不打印出 host 的域名部分。如果设置了此选现,tcpdump 将会打印 'nic' 而不是 'nic.ddn.mil'

-q

简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短.

-Q

选择是入方向还是出方向的数据包,可选项有:inoutinout

-r

使用 -r 是从文件中读取数据。

-t

在每行的输出中不输出时间。
-tt:在每行的输出中会输出时间戳。
-ttt:输出每两行打印的时间间隔(以毫秒为单位)。
-tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)。

-T

将监听到的包直接解释为指定的类型的报文,常见的类型有 rpc (远程过程调用)和 snmp(简单网络管理协议)。

-v

产生详细的输出。比如包的 TTLid 标识,数据包长度,以及 IP 包的一些选项。同时它还会打开一些附加的包完整性检测,比如对 IPICMP 包头部的校验和。
-vv: 产生比 -v 更详细的输出。比如 NFS 回应包中的附加域将会被打印, SMB 数据包也会被完全解码。
-vvv: 产生比 -vv 更详细的输出。比如 telent 时所使用的 SBSE 选项将会被打印,如果 telnet 同时使用的是图形界面,其相应的图形选项将会以 16 进制的方式打印出来。

-w

使用 -w 参数后接一个以 .pcap 后缀命令的文件名,就可以将 tcpdump 抓到的数据保存到文件中。

-x

16 进制的形式打印每个包的头部数据(但不包括数据链路层的头部)。
-xx:以 16 进制的形式打印每个包的头部数据(包括数据链路层的头部)。

-X

16 进制和 ASCII 码形式打印出每个包的数据(但不包括连接层的头部),这在分析一些新协议的数据包很方便。
-XX:以 16 进制和 ASCII 码形式打印出每个包的数据(包括连接层的头部),这在分析一些新协议的数据包很方便。


输出解析

tcpdump 的输出内容比较多但确是有规律的:

1
15:26:22.011621 IP 192.168.5.6.15605 > 192.168.5.10.5920 : Flags [P.], seq 49:97, ack 106048, win 4723, length 48

其中输出的内容总共可以分为七个部分:

  • 第一列: 时间。
  • 第二列: 网络协议。
  • 第三列: 发送方的 IP 地址 + 端口号。
  • 第四列: 箭头表示数据流向。
  • 第五列: 接收方的 IP 地址 + 端口号。
  • 第六列: 冒号。
  • 第七列: 数据包的内容,其中包含 Flags 标识符、seq号 、ack 号、win 窗口、length 长度。(关于这里的标识符信息参考 TCP 协议解析)

常用 tcpdump 命令

1、基于 IP 地址过滤

1
tcpdump host 192.168.1.1

2、基于网段过滤

1
tcpdump net 192.168.10.0/24

3、基于端口过滤

1
tcpdump port 8080

4、基于协议过滤

1
tcpdump tcp

引用


个人备注

此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!