tcpdump线上抓包排查问题指南

前言

开发过程中,本地程序可以进行debug自测,但是,针对服务调用和联调,需要定位问题的时候,可能就需要抓包去定位一些非代码层面或者服务注入相关的问题。因为在程序运行时,数据都是以数据包的形式进行传输,发送和接收数据的过程中,可能发出的数据有错误的数据,也可能接收的包中有错误的数据,从而导致程序处理出错,因此我们直接抓取传输的数据包,通过其他工具或方法解析数据包中的原始数据,可以定位是否因为数据输错导致的程序出错,如果出错又是因为那一部分的数据出错等。常见的抓包工具有F12、Fiddler、Charles,wireshark等

抓包工具的具体用途如下

  1. 查看请求方和服务方IP
  2. App抓包,查看请求数据包进行分析对比
  3. 模拟弱网环境,测试一些弱网下用户操作出现的bug
  4. 修改请求头数据
  5. 修改响应包数据
  6. 设置网络延迟导致网络超时
  7. 也可以模拟压测,频繁请求接口,查看服务器性能

本地抓包工具使用

fiddler 抓包详细教程
charles抓包相信教程

线上抓包tcpdump命令

针对线上环境的抓包,由于不能使用本地抓包的那些工具,所以只能通过相关命令进行端口的监听进而抓取数据包进行分析。tcpdump(dump traffic on a network)是一个用于截取网络分组,并输出分组内容的工具。tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

安装tcpdump

linux安装tcpdump:yum install -y tcpdump
linux安装成功
abutu安装tcpdump:先apt update ,然后apt-get install -y tcpdump
在这里插入图片描述

tcpdump常见命令

1.查询第一块网卡的所有的数据包
# tcpdump (-i eth0)-i指定用哪一块网卡,缺省默认第一块,一般可以不写,后续demo都使用默认的
2.选项-vnn
-v 解析和打印时,产生(略多)详细输出。例如,打印IP包中的生存时间,标识,总长度和选项。还启用其他数据包完整性检查,例如验证IP和ICMP头校验和。
-nn 不要将协议和端口号等转换为名称
3.监听抓取某一个端口的包 port
# tcpdump -vnn port 22
4.抓取某一类型协议的包
# tcpdump -vnn  udp/icmp/arp/ip
5.抓取来源是某一个ip的所有的数据包
#  tcpdump -vnn src host 172.1.1.1
6.抓取对应目的ip的数据包
#  tcpdump -vnn dst host 172.1.1.1
7.ip和端口的组合,通过and,or, not
#  tcpdump -i eth0 -vnn src host 172.1.1.1 and not port 22
8.抓包并保存成cap文件 -w
#  tcpdump -vnn src host 172.1.1.1 -w aaa.cap

tcpdump下载文件后分析

1.使用tcpdump命令监听服务端口(我使用的1006),保存生成aaa.cap
在这里插入图片描述
2.curl模拟触发一次请求
3.下载生成的aaa.cap到本地
4.通过wireshark打开文件并分析数据
在这里插入图片描述

  • 第一部分是所有的请求的基本信息,包括sourceIp,targetIp,请求方式,port等;
  • 第二部分是数据包的详细信息,是按照TCP/IP四层结构显示的,第一行是数据链路层的信息,第二行是网络层信息(IP协议),第三行是传输层信息(TCP协议),第四层是应用层信息(HTTP协议),可以展开第一行用来观察具体的内容;
  • 第三部分是原始数据包的样式
    5.查看具体的tcp信息或者http信息,右键点击请求,点击Follow-》HTTP/TCP Stream
    在这里插入图片描述

6.根据抓到包的详情进行分析和问题定位
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值