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 用时
tags:Tcpdump
标签云
alpine(1) api网关(1) async(1) await(1) centos(4) cli(1) client-go(1) debug(1) docker(10) docker-compose(1) dockerfile(1) embed(1) es6(1) etcd(1) etcdctl(1) freemesh(2) git(6) go(5) go-zeus(5) goland(2) golang(7) grafana(2) grpc(5) grpcurl(1) homebrew(1) homedir(1) http(2) hugo(1) java(2) javascript(3) job(1) js(1) json(1) k8s(16) k8s部署指南(1) kubebuilder(1) kubectl(4) kubernetes(1) linux(2) localecompare(1) lombok(1) metrics(2) mock(1) mysql(1) npm(1) nsenter(1) nvm(1) pnpm(2) pprof(1) prettier(1) prometheus(2) protobuf3(1) protoc(1) qiankun(1) request(1) scss(1) servicemesh(1) spring(1) springcloud->freemesh(1) ssh(2) systemctl(1) tcpdump(1) typescript(2) vite(2) vscode(2) vue(8) vue-admin(2) vue3(1) webssh(1) xtermjs(1) xxl-job(1) yarn(1) zookeeper(1) 云原生(4) 云原生框架(1) 介绍(1) 单体架构->freemesh(1) 单元化(1) 博客(1) 压缩(1) 可观测(1) 后台管理系统(1) 命名规范(1) 多云多活(1) 如水网(1) 安全(1) 安装(1) 容器(2) 开发联调神器(1) 微前端(1) 微服务(2) 微服务架构->freemesh(1) 微服务框架(1) 快速开始(1) 控制面(1) 数据面(1) 文集(2) 服务发现(1) 服务网格(1) 流量泳道(1) 流量管理(1) 监控告警(1) 端口映射(1) 证书(1) 负载均衡(1) 配置(1)