tcpdump抓包分析过程

本次抓包原因:
公司统一采用阿里云k8s和slb服务;node开发的kuaizimu在调用saas服务的时候,无法调用到saas的api接口,发现超时问题严重。问到其他团队调用saas服务的同事(公司的zishuo项目组和dupa项目组),均表示能正常访问saas服务,并无出现超时现象。
也就是说:saas服务一直能够稳健提供服务,网络也没有出问题。

排查了很久,开发和运维都咬定不是自己的问题;
开发说:我线下开发环境可以访问,到了线上就不行;无能为力。并表示代码从始至终为获取到saas的api接口数据
运维说:其他人的服务是正常的,就只有你的代码不能连接,肯定是你代码的问题,重新检查。
saas开发团队的同事提议:采用tcpdump抓包,看看中间的网络链路到哪里出了问题?运维同事表示赞同。于是开启tcpdump抓包的历程。

环境介绍:
公司统一采用阿里云k8s和slb向外提供服务;node和saas的服务都部署在k8s集群环境中。node端(kuaizimu-admin-gray.bhbapp.cn)访问saas服务(vpc-saas-pay-gray.bhbapp.cn)超时
node的ip为172.25.3.10
saas 的ip为172.25.3.192
公网SLB的ip为
内网SLB的ip为10.19.3.186

具体拓扑图如下:

在node项目中安装tcpdump软件,对其进行抓包;获取到的数据如下:
安装wireshark,对抓取到的数据进行分析:如图


第一次抓包的时候发现node端在发起请求的时候有Retransmission重新发送的现象,怀疑是对端拒绝了这个请求。经过查证,对端的ip10.19.3.186为SLB的地址。
saas觉得证据仍旧不够,不太具备说服力,于是进行第二次抓包,同样是在node端进行抓包分析。发现这种现象重复发生,并且只要node端发出请求都会有相同的包被拒绝;开始怀疑是node端请求在经过slb的时候被拒绝,而saas一直没收到过node端请求。
抓包到这里引发了两个猜想:
一:是slb出了问题?还是k8s不支持这种slb的解析方式?总之slb和k8s肯定有一方出现问题。
二:为什么node端的域名解析会经过slb呢?按道理来说k8s本身就剧本解析能力不需经过k8s集群外面的slb

为了验证猜想:开始了两步工作:
1、 提交1个SLB工单,看看是不是阿里云的slb出现问题,想查询slb的访问日志
2、 提交1个k8s工单,看看有没有更好的解析方式

果然,阿里云工作人员回答说:k8s集群内容器之间的服务调用,可以直接走k8s集群内网解析,不需要经过外部的slb。在容器内尝试连接容器的servicename,方案可行。
这里就可能是node端连接的域名出现问题,询问zishuo项目和dupa项目的同事,发现他们访问的域名果然和node端不一致;分别为公网域名和k8s内网域名。验证了之前的猜想。

解决了问题,并解答出之前的访问超时的原因:
k8s集群内容器之间的服务调用,域名统一使用 "项目名.命名空间.svc.cluster.local" ;这个仅在k8s集群内解析。
外网之间调用k8s服务,直接使用公网的域名即可
注:
k8s集群内的容器之间的服务调用 不能走ECS的vpc网络,这种情况集群会把slb的ip当着是service的ip就进行转发。

总结:
node端修改了连接地址之后,恢复正常访问。建议:以后容器之间的调用地址直接使用k8s内网域名即可。

原文地址:https://blog.51cto.com/12131824/2396425

时间: 2024-08-14 03:45:23

tcpdump抓包分析过程的相关文章

TCP三次握手与Tcpdump抓包分析过程

一.TCP连接建立(三次握手) 过程 客户端A,服务器B,初始序号seq,确认号ack 初始状态:B处于监听状态,A处于打开状态 A -> B : seq = x (A向B发送连接请求报文段,A进入同步发送状态SYN-SENT) B -> A : ack = x + 1,seq = y (B收到报文段,向A发送确认,B进入同步收到状态SYN-RCVD) A -> B : ack = y+1 (A收到B的确认后,再次确认,A进入连接状态ESTABLISHED) 连接后的状态:B收到A的确认

tcpdump抓包分析具体解释

說實在的,對於 tcpdump 這個軟體來說,你甚至能够說這個軟體其實就是個駭客軟體, 因為他不但能够分析封包的流向,連封包的內容也能够進行『監聽』, 假设你使用的傳輸資料是明碼的話,不得了,在 router 上面就可能被人家監聽走了! 非常可怕吶!所以,我們也要來瞭解一下這個軟體啊!(註:這個 tcpdump 必須使用 root 的身份執行) [[email protected] ~]# tcpdump [-nn] [-i 介面] [-w 儲存檔名] [-c 次數] [-Ae] [-qX] [

[转]Linux操作系统tcpdump抓包分析详解

PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息.因此系统中存在网络分析工具主要不是对本

转:tcpdump抓包分析(强烈推荐)

评:示例详细,还有很不错的图解 转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac718685382c0aa1cb5dbca45&scene=5&srcid=0527iHXDsFlkjBlkxHbM2S3E#rd 转自:http://www.jianshu.com/p/8d9accf1d2f1 1 起因 前段时间,一直在调线上的一个问题:线上应用

Wireshark和TcpDump抓包分析对比

常见的抓包分析工具有:微软的Network Monitor和Message Analyzer.Sniff.WSExplorer.SpyNet.iptools.WinNetCap.WinSock Expert.Wireshark和linux的tcpdump等工具 今天,做了实验测试就对比分析其中的两款,其他的大家可以百度谷歌测试一哈^_^ 1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用

Wireshark和TcpDump抓包分析心得

? 1. Wireshark与tcpdump介绍 ?Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话,我直接用tcpdump了,因为我工作环境中的Linux一般只有字符界面,且一般而言Linux都自带的tcpdump,或者用tcpdump抓包以后用Wireshark打开分析. 在Windows平台下,Wireshark通过WinPcap进行抓包,封装的很好,使用起来很方便,可以很容易的制定抓

在Linux下使用tcpdump抓包分析TCP连接的建立与释放

笔者使用的环境为WIN7 64位旗舰版下使用VirtualBox安装的centOS6.5实验环境 建立连接 ---------------------------------------------------------------- 在终端1中进入root权限,键入 tcpdump tcp -vX -i eth2 #使用man手册查看tcpdump的使用方法 #eth2为接口,可以使用arp -a显示当前的接口 在终端2中键入 telnet www.baidu.com 80 #远程登录www

安卓模拟器BlueStacks+TCPdump对APP抓包分析

最近要搞安卓APP抓包分析,在网上找了一些方法,综合一自身条件下还是安卓模拟器+tcpdump最方便. 需准备工具: 1.Microsoft .NET Framework 2.0 SP22.Bluestack 0.7.5.27003.Bluestack 0.7.5.2700 Root镜像4.调试用的adb程序5.Wireshark之类的分析工具6.待抓包的APP 首先模拟器选用了BlueStacks,要想使用tcpdump必须要Root,所以还要找一个BlueStacks Root镜像来覆盖掉原

tcpdump 抓包让wireshark来分析

在linux下面用tcpdump 抓包非常方便, 但是抓的包要提取出来进行分析, 还是得用wireshark来过滤分析比较方便. 下面先介绍一下 TCPDUMP 的使用 例:tcpdump host 172.16.29.40 and port 4600 -X -s 500 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -