当前位置: 首页 > news >正文

Tcpdump使用

一 介绍

tcpdump,是 Linux/Unix 系统下强大的网络抓包工具,能够捕获和分析网络流量。用简单的语言概括就是dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有sniffer等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进程分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等语句进行逻辑组合捕获数据包或过滤掉不用的信息。

二 语法及选项(按功能划分)

1. 基本语法

tcpdump [选项] [过滤表达式]

  • 关于 proto:可选有 ip, arp, rarp, tcp, udp, icmp, ether 等,默认是所有协议的包
  • 关于 dir:可选有 src, dst, src or dst, src and dst,默认为 src or dst
  • 关于 type:可选有 host, net, port, portrange(端口范围,比如 21-42),默认为 host

2.命令选项

参数  

解析
-a   将网络地址和广播地址转变成名字
-A   以ASCII格式打印出所有分组,并将链路层的头最小化
-b   数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c   指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d   将匹配信息包的代码以人们能够理解的汇编格式输出
-dd   将匹配信息包的代码以c语言程序段的格式输出
-ddd   将匹配信息包的代码以十进制的形式输出
-D   打印系统中所有可以监控的网络接口
-e   在输出行打印出数据链路层的头部信息
-f    将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F   从指定的文件中读取表达式,忽略其他的表达式
-i   指定监听网络接口
-l   使标准输出变为缓冲形式,可以数据导出到文件
-L   列出网络接口已知的数据链路
-n   不把网络地址转换为名字
-N   不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn   不进行端口名称的转换
-P   不将网络接口设置为混杂模式
-q   快速输出,即只输出较少的协议信息
-r   从指定的文件中读取数据,一般是-w保存的文件
-w   将捕获到的信息保存到文件中,且不分析和打印在屏幕
-s   从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S   将tcp的序列号以绝对值形式输出,而不是相对值
-T   将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t   在输出的每一行不打印时间戳
-tt   在每一行中输出非格式化的时间戳
-ttt   输出本行和前面以后之间的时间差
-tttt   在每一行中输出data处理的默认格式的时间戳
-u   输出未解码的NFS句柄
-v   输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv   输出详细的报文信息

2.1. 地址与名称解析选项
-a将网络地址和广播地址转换为名称(如 192.168.1.1router.local)。tcpdump -a(显示主机名而非 IP)
-n禁用所有名称解析(IP/端口均显示数字)。tcpdump -n(不解析任何名称)
-nn禁用端口和协议名称解析(端口 80 不显示为 http)。tcpdump -nn(强制显示数字端口)
-N不输出主机名的域名部分(如 www.baidu.comwww)。tcpdump -N(简化主机名输出)
-f强制以数字形式显示外部 Internet 地址(禁用反向 DNS)。tcpdump -f(避免 DNS 查询延迟)
2.2. 数据链路层与协议选项
-e输出数据链路层头部(如 MAC 地址、VLAN 标签)。tcpdump -e(查看源/目标 MAC)
-b指定数据链路层协议(如 ip/arp/rarp/ipx)。tcpdump -b arp(仅抓 ARP 包)
-L列出接口支持的数据链路类型(如 ETHERNET/Wi-Fi)。tcpdump -L -i eth0
2.3. 输出格式控制
-A以 ASCII 格式显示数据(适合 HTTP/文本协议)。tcpdump -A port 80(查看网页内容)
-X同时以十六进制和 ASCII 显示数据(二进制协议分析)。tcpdump -X port 443(分析 HTTPS)
-q快速输出模式(减少协议详情,仅显示基本信息)。tcpdump -q(简洁流量摘要)
-v增加输出详细度(-vv/-vvv 更详细)。tcpdump -vv(显示 TTL、服务类型等)
-S以绝对值显示 TCP 序列号(默认显示相对值)。tcpdump -S(分析序列号跳跃)
2.4. 时间戳选项
-t不显示时间戳。tcpdump -t(仅输出协议数据)
-tt显示 Unix 时间戳(秒级)。tcpdump -tt(用于时间对齐分析)
-ttt显示包与包之间的时间差(毫秒)。tcpdump -ttt(分析网络延迟)
-tttt显示带日期的完整时间戳。tcpdump -tttt(记录完整时间日志)
2.5. 文件与输入输出控制
-w <文件>将原始数据包保存到文件(.pcap 格式)。tcpdump -w traffic.pcap
-r <文件>从文件读取抓包数据(离线分析)。tcpdump -r traffic.pcap
-F <文件>从文件加载过滤表达式(避免长命令行)。tcpdump -F filter.txt
-l启用行缓冲(适合实时管道处理)。`tcpdump -l
2.6. 包捕获控制
-c <数量>捕获指定数量的包后退出。tcpdump -c 10(抓 10 个包)
-s <长度>设置每个包的捕获长度(默认 262144 字节)。tcpdump -s 100(只抓前 100 字节)
-P禁用混杂模式(仅捕获目标为本机的流量)。tcpdump -P(避免抓取无关流量)
2.7. 高级解析与调试
-d将过滤表达式转为汇编代码(调试用)。tcpdump -d 'port 80'
-dd将过滤表达式转为 C 代码片段。tcpdump -dd 'icmp'
-ddd将过滤表达式转为十进制数字。tcpdump -ddd 'host 1.1.1.1'
-T <类型>强制解析为指定协议(如 rpc/snmp)。tcpdump -T snmp
-u输出未解码的 NFS 句柄(NFS 调试专用)。tcpdump -u port 2049
2.8. 特殊场景选项
-D列出所有可用接口(不抓包)。tcpdump -D(选择监控接口)
-K禁用校验和验证(抓取错误校验包)。tcpdump -K(抓取损坏的包)
-U包到达时立即写入文件(实时保存)。tcpdump -w file.pcap -U

三 关键字及协议类型

1. 常见协议关键字

关键字协议类型示例命令说明
tcpTCP 协议tcpdump tcp抓取所有 TCP 流量
udpUDP 协议tcpdump udp抓取所有 UDP 流量
icmpICMP 协议(Ping/路由)tcpdump icmp抓取 ICMP 包(如 ping
arpARP 协议tcpdump arp抓取 ARP 请求/响应(MAC 地址)
ipIPv4 协议tcpdump ip抓取所有 IPv4 流量
ip6IPv6 协议tcpdump ip6抓取所有 IPv6 流量
httpHTTP 协议tcpdump port 80HTTP 默认端口 80
httpsHTTPS 协议tcpdump port 443HTTPS 默认端口 443
dnsDNS 协议tcpdump port 53DNS 查询(UDP/TCP)
sshSSH 协议tcpdump port 22SSH 默认端口 22
ftpFTP 协议tcpdump port 21FTP 控制端口 21
smtpSMTP 协议(邮件发送)tcpdump port 25邮件发送协议
dhcpDHCP 协议tcpdump port 67 or port 68DHCP 请求/响应
vrrpVRRP 协议(虚拟路由)tcpdump vrrp路由器高可用协议
stpSTP 协议(生成树)tcpdump stp交换机防环协议

2.数据类型关键字

host主机(IP/域名)host 192.168.1.1未指定类型时默认生效
net网络段net 192.168.0.0/24支持 CIDR 表示法
port端口号port 22需结合协议(如 tcp/udp)
portrange端口范围portrange 8000-9000替代多个 or 条件

3.方向关键字

src仅源地址src 192.168.1.1ether src 00:11:22:33:44:55
dst仅目标地址dst port 53ether dst 00:11:22:33:44:55
src or dst双向流量(默认行为)host 192.168.1.1隐含方向
src and dst严格匹配源和目标src 192.168.1.1 and dst 80精确会话过滤

4.逻辑运算符

and/&&逻辑与tcp && port 80
or/``逻辑或
not/!逻辑非!udp需引号
()分组优先级(port 80 or 443) and host 1.1.1.1需转义为 \( \)

四 常用案例

抓取指定网卡上的所有数据包tcpdump -i eth0不加任何参数的情况下,默认抓取第一块网卡的数据tcpdump指定网卡上抓取关于指定IP的所有数据tcpdump -i eth0 host 10.0.0.3在网卡(eth0)上抓取关于指定IP的所有数据,将主机名显示为IP地址不进行DNS解析tcpdump -i eth0 host 10.0.0.3 -n抓取网卡(eth0)上的源地址是(10.0.0.3)的数据tcpdump -i eth0 src 10.0.0.3抓取网卡(eth0)上的目的IP是(10.0.0.3)的数据tcpdump -i eth0 dst 10.0.0.3抓取网卡(eth0)上的关于网段(10.0.0.0/24)的数据tcpdump -i eth0 net 10.0.0.3抓取网卡(eth0)上的所有关于443端口的数据tcpdump -i eth0 port 443抓取网卡(eth0)上关于icmp协议的数据tcpdump -i eth0 icmp抓取网卡(eth0)上的icmp报文或者tcp报文tcpdump -i eth0 icmp or tcp抓取指定数目的包tcpdump -c 2 -i eth0将抓到包写入文件中tcpdump -w 20250606.pcap -i eth0读取tcpdump保存文件tcpdump -r 20250606.pcap从文件读取并过滤tcpdump -r 20250606.pcap 'port 80'增加抓包时间戳(-tttt选项)tcpdump -n -tttt -i eth0指定抓包的协议类型tcpdump -i eth0 arp抓取特定目标ip和端口的包tcpdump -i eth0 dst 10.0.0.3 and port 22tcpdump -i eth0 -nn -s0 -v port 80-i : 选择要捕获的接口,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该系统上只有一个网络接口,则无需指定。-nn : 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度。-s0 : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。-v : 使用 -v,-vv 和 -vvv 来显示更多的详细信息,通常会显示更多与特定协议相关的信息。
port 80 : 这是一个常见的端口过滤器,表示仅抓取 80 端口上的流量,通常是 HTTP。额外再介绍几个常用参数:-p : 不让网络接口进入混杂模式。默认情况下使用 tcpdump 抓包时,会让网络接口进入混杂模式。一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。如果设备接入的交换机开启了混杂模式,使用 -p 选项可以有效地过滤噪声。-e : 显示数据链路层信息。默认情况下 tcpdump 不会显示数据链路层信息,使用 -e 选项可以显示源和目的 MAC 地址,以及 VLAN tag 信息。

http://www.dtcms.com/a/284068.html

相关文章:

  • linux_线程同步
  • 七彩喜跌倒检测仪:用科技编织银发安全的“隐形防护网”
  • 【Mobx】学习笔记
  • Python-多线程编程
  • 时序数据库
  • AWS WebRTC:RTP讲解
  • GitHub开源轻量级语音模型 Vui:重塑边缘智能语音交互的未来
  • onenote千年老bug,字体bug (calibri微软雅黑) 的解决
  • Spring之【BeanDefinition】
  • MyBatis之核心组件与配置详解
  • LVDS系列21:Xilinx 7系ISERDESE2原语(二)
  • Amazon发布Kiro AI IDE
  • Kali Linux 信息收集完全指南:从原理到实战
  • 月结7-CO模块月结关键点和步骤总结
  • EP-SPY 基於GI6E 編碼無線電通訊間諜工具
  • 串口232通讯数据传输丢失的原因、不可靠性及底层原理分析
  • 从高斯噪声的角度分析MAE和MSE
  • Mac 安装及使用sdkman指南
  • Java全栈面试实录:从电商支付到AIGC的深度技术挑战
  • YOLOv3 技术深度解析:从理论到实践的完整指南
  • Clip微调系列:《MaPLe: Multi-modal Prompt Learning》
  • kong是什么
  • Vsan关闭集群与重启集群
  • 6、docker network
  • Docker国内镜像
  • Docker-Beta?ollama的完美替代品
  • Ansible AWX 自动化运维
  • 线上项目https看不了http的图片解决
  • Go语言实战案例 - 找出切片中的最大值与最小值
  • vue3+ts+elementui-表格根据相同值合并