Linux tcpdump 命令 - 数据包捕获分析工具
介绍
tcpdump 命令是 Linux 系统中的一个网络数据包截获分析工具,支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句帮助过滤无用的信息。
tcpdump 命令通常默认不安装,在 Debian/Ubuntu 系统上可以使用如下命令进行安装。
sudo apt install tcpdump
语法:
tcpdump [-adeflnNOpqStvx]
[-c <count>] [-dd] [-ddd] [-F <file>]
[-i <interface>] [-r <file>]
[-s <snaplen>] [-tt] [-T <type>]
[-vv] [-w <file>]
选项:
-a
:尝试将网络和广播地址转换成名称。-c <数据包数目>
:收到指定的数据包数目后,就停止进行倾倒操作。-d
:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。-dd
:把编译过的数据包编码转换成 C 语言的格式,并倾倒到标准输出。-ddd
:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。-e
:在每列倾倒资料上显示连接层级的文件头。-f
:用数字显示网际网络地址。-F <表达文件>
:指定内含表达方式的文件。-i <网络界面>
:使用指定的网络截面送出数据包。-l
:使用标准输出列的缓冲区。-n
:不把主机的网络地址转换成名字。-N
:不列出域名。-O
:不将数据包编码最佳化。-p
:不让网络界面进入混杂模式。-q
:快速输出,仅列出少数的传输协议信息。-r <数据包文件>
:从指定的文件读取数据包数据。-s <数据包大小>
:设置每个数据包的大小。-S
:用绝对而非相对数值列出 TCP 关联数。-t
:在每列倾倒资料上不显示时间戳记。-tt
:在每列倾倒资料上显示未经格式化的时间戳记。-T <数据包类型>
:强制将表达方式所指定的数据包转译成设置的数据包类型。-v
:详细显示指令执行过程。-vv
:更详细显示指令执行过程。-x
:用十六进制字码列出数据包资料。-w <数据包文件>
:把数据包数据写入指定的文件。
示例
提示:运行 tcpdump 需要超级用户(root)权限,普通用户执行下列命令时需要加上 sudo 提权,否则会收到一条错误消息:“You don’t have permission to capture on that device”。
显示所有网络数据包信息
tcpdump
打印 tcpdump 所有可用网络接口(包括以太网口、Wi-Fi、蓝牙等)
tcpdump -D