tcpdump参数解析及常用命令

tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有。熟悉 tcpdump 的使用能够帮助你分析调试网络数据,本文将通过一个个具体的示例来介绍它在不同场景下的使用方法。不管你是系统管理员,程序员,云原生工程师还是 yaml 工程师,掌握 tcpdump 的使用都能让你如虎添翼,升职加薪。

tcpdump 的选项介绍

 1-a 将网络地址和广播地址转变成名字;
 2-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
 3-dd 将匹配信息包的代码以c语言程序段的格式给出;
 4-ddd 将匹配信息包的代码以十进制的形式给出;
 5-e  在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;
 6-f 将外部的Internet地址以数字的形式打印出来;
 7-l 使标准输出变为缓冲行形式;
 8-n 指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;
 9-nn 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
10-t  在输出的每一行不打印时间戳;
11-v  输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
12-vv 输出详细的报文信息;
13-c 在收到指定的包的数目后,tcpdump就会停止;
14-F 从指定的文件中读取表达式,忽略其它的表达式;
15-i 指定监听的网络接口;
16-p 将网卡设置为非混杂模式,不能与host或broadcast一起使用
17-r 从指定的文件中读取包(这些包一般通过-w选项产生)18-w 直接将包写入文件中,并不分析和打印出来;
19-s snaplen   snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。
20-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
21 -X 告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时 是绝对的利器。

常用命令

抓取特定协议的数据

后面可以跟上协议名称来过滤特定协议的流量,以 UDP 为例,可以加上参数 udp 或 protocol 17,这两个命令意思相同。

1tcpdump -i eth0 udp
2tcpdump -i eth0 proto 17

抓取特定主机的数据

eth0网卡使用过滤器 host 可以抓取特定目的地和源 IP 地址的流量。

1tcpdump -i eth0 host 10.10.1.1

保存文件

抓取所有的网络包,并存到 result.cap 文件中。

1tcpdump -w result.cap

目的地址

抓取目的地址包含是 192.168.1.100 的包,并将结果保存到 result.cap 文件中。

1tcpdump dest host 192.168.1.100 -w result.cap

指定端口

抓取网卡 eth0 上所有包含端口 22 的数据包

1tcpdump -i eth0 -vnn port 22

and

抓取源 ip 是 192.168.1.100 且目的 ip 端口是 22 的数据包

1tcpdump -i eth0 -vnn src host 192.168.1.100 and dst port 22

or

抓取源 ip 是 192.168.1.100 或者包含端口是 22 的数据包

1tcpdump -i eth0 -vnn src host 192.168.1.100 or port 22

and&or

抓取源 ip 是 192.168.1.100 且目的端口是 22,或源 ip 是 192.168.1.102 且目的端口是 80 的数据包。

1tcpdump -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )

排除

如果想要获取主机 192.168.1.100 除了和主机 192.168.1.101 之外所有主机通信的 ip 包,使用命令:

1tcpdump ip host 192.168.1.100 and ! 192.168.1.101

管道处理

实时将抓取到的数据通过管道传递给其他工具来处理,需要使用 -l 选项来开启行缓冲模式,使用 -l 选项可以将输出通过立即发送给其他命令,其他命令会立即响应

1tcpdump -i eth0 -s0 -l port 80 | grep 'Server:'

发布日期:2023-05-08 19:40 字数:228 用时 2分钟
tags:tcpdump