tcpdump 命令解析(随手记)

目录

简介

Tcpdump是类 Unix 系统的王牌抓包工具,名字由「TCP 协议」和「数据导出」组合而来。它基于 libpcap 库实时捕获网络数据包,支持:

  • 嗅探并保存流量数据
  • 按协议 / 端口 / IP 精准过滤
  • 生成 pcap 文件供后续分析

tcpdump 是一个单独 yum 包,可以直接通过yum install -y tcpdump安装

shell 复制代码
$ rpm -qa| grep tcpdump
tcpdump-4.99.1-1.oe1.x86_64

命令解析

选项 描述
-a 将网络地址和广播地址转变成名字
-A 以ASCII码格式打印出所有数据包,并将链路层的头部最小化
-B 用于设置操作系统捕捉缓冲大小
-c 指定抓取数据包的数量
-C 此选项用于配合-w选项使用,如果保存文件大小超过阈值则关闭当前文件,并启用新文件继续保存数据(分多个固定大小的文件保存抓包数据,利于长期抓包的场景)
-d 将匹配到的数据包以人们能够理解的汇编格式输出
-dd 以C语言的形式打印出包匹配码
-ddd 以十进制数的形式打印出包匹配码
-D 打印系统中所有支持抓包的网络接口
-e 在输出行打印出数据链路层的头部信息
-E 解密IPsec ESP分组。具体来说,它使用spi@ipaddr algo:secret的格式来解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。这样,tcpdump可以捕获并显示经过IPsec加密的数据包内容,帮助用户更好地分析和理解网络流量
-f 将外部的因特网地址以数字的形式打印出来
-F 使用file文件作为过滤条件表达式的输入
-i 指定监听网络接口
-l 对标准输出进行行缓冲
-L 列出指定网络接口所支持的数据链路层的类型后退出
-m 通过module 指定的file 装载SMI MIB 模块
-n 不把网络地址转换成名称,即直接显示IP地址而不是主机名
-N 不打印出host 的域名部分
-nn 不进行端口名称的转换
-O 不启用进行包匹配时所用的优化代码
-p 不让网络接口进入混杂模式
-q 快速简短打印输出
-R 设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825而不是RFC1829
-r 从文件file 中读取包数据
-s 数据包抓取长度,如果不设置默认将会是68字节
-S 打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号
-t 在每行输出中不打印时间戳
-tt 不对每行输出的时间进行格式处理
-ttt tcpdump 输出时, 每两行打印之间会延迟一个段时间(以毫秒为单位)
-tttt 在每行打印的时间戳之前添加日期的打印
-u 打印出未加密的NFS句柄
-U 使得当tcpdump在使用-w 选项时, 其文件写入与包的保存同步
-v 分析和打印产生详细的输出
-vv 产生比-v更详细的输出
-vvv 产生比-vv更详细的输出
-w 把包数据直接写入文件而不进行分析和打印输出
-W 设置输出文件的最大数目
-x 以十六进制的形式打印每个数据包的头部数据,但是不包括数据链路层的头部
-xx 以十六进制的形式打印每个数据包的头部数据,并且包括数据链路层的头部
-X 以ASCII码格式显示输出,但是不包括数据链路层的头部
-XX 以ASCII码格式显示输出,并且包括数据链路层的头部
-y 只捕获数据链路层协议类型是datalinktype的数据包

实际使用

  1. 默认启动------监听系统上第一个网络接口的所有流过数据包,结果会在前台直接打印出来
shell 复制代码
tcpdump
  1. 抓取指定网卡的流量,同样会在前台打印出来
shell 复制代码
tcpdump -i <NIC-Name>

# e.g.: tcpdump -i ensf160p0
  1. 抓取指定网卡的流量,并保存到pcap 文件中
shell 复制代码
# 保存
tcpdump -i lo -w lo.pcap

# 这个文件是binary file,读取
tcpdump -r lo.pcap
  1. 抓取包含指定 mac 的数据包
shell 复制代码
# 包含 mac
tcpdump -i lo -w lo.pcap ether host aa:bb:cc:dd:ee:ff
# 包含 源mac
tcpdump -i lo -w lo.pcap ether src aa:bb:cc:dd:ee:ff
# 包含 目的mac
tcpdump -i lo -w lo.pcap ether dst aa:bb:cc:dd:ee:ff
  1. 抓取包含指定 IP 的数据包
shell 复制代码
# 包含 ip
tcpdump -i eth0 host 192.168.1.2 -w eth0_192.168.1.2.pcap
# 或者
tcpdump -i eth0 -nn 'host 192.168.1.2'

# 包含源ip
tcpdump -i eth0 src host 192.168.1.2
# 或者
tcpdump -i eth0 -nn 'src host 192.168.1.2'

# 包含目的ip
tcpdump -i eth0 dst host 192.168.1.2
# 或者
tcpdump -i eth0 -nn 'dst host 192.168.1.2'

# 匹配源目 ip
tcpdump -i eth0 'src host 192.168.1.2 and dst host 192.168.1.3'
  1. 包含指定端口
shell 复制代码
# 某个端口
tcpdump -i lo -nnA 'port 80 and src host 192.168.1.2'

# 除非某个端口
tcpdump -i lo -nnA '!port 22'
相关推荐
曾几何时`21 分钟前
网络协议(四)网络层 路由协议
网络·网络协议
iナナ26 分钟前
初识网络原理
网络
曾几何时`40 分钟前
网络协议(三)网络层 IPv4、CIDR(使用子网掩码进行网络划分)、NAT在私网划分中的应用
网络·网络协议
刘哥测评技术zcwz6261 小时前
亚马逊自养号测评实战指南:从环境搭建到安全提排名
网络·安全·网络安全
m0_694845571 小时前
服务器系统时间不准确怎么办?
linux·运维·服务器·游戏·云计算
LCY1331 小时前
阿里云平台使用的ack创建的pod与服务器中的MongoDB不在同一网段如何解决
服务器·mongodb·阿里云
90后小陈老师2 小时前
网络安全实验06 部署防火墙主备备份双机热备,提高网络可靠性
运维·网络·华为·ensp
过往入尘土2 小时前
linux中的各种dmo语句(一些)
linux·运维·服务器
2501_911121232 小时前
部署Zabbix企业级分布式监控
网络
海文宇2 小时前
Linux的目录
linux·运维·服务器