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'
相关推荐
清源妙木真菌17 分钟前
应用层协议——HTTP
网络·网络协议·http
碎像1 小时前
Linux上配置环境变量
linux·运维·服务器
sunflower_w3 小时前
linux I2C核心、总线与设备驱动
linux·运维·服务器
Ronin3053 小时前
【Linux系统】进程间通信:System V IPC——共享内存
linux·服务器·system v 共享内存
网硕互联的小客服4 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
共享家95277 小时前
linux-数据链路层
linux·网络·macos
Demisse7 小时前
[Linux] Linux文件系统基本管理
linux·运维·服务器
BAOYUCompany8 小时前
暴雨服务器:以定制化满足算力需求多样化
运维·服务器
青岛佰优联创新科技有限公司9 小时前
移动板房的网络化建设
服务器·人工智能·云计算·智慧城市
禁默9 小时前
进程替换:从 “改头换面” 到程序加载的底层逻辑
linux·运维·服务器