使用什么命令来查看目的主机接收到的报文

使用什么命令来查看目的主机接收到的报文,第1张

默认系统里边没有安装有tcpdump的,无法直接使用
这里我们可以使用yum来直接安装它
yum install -y tcpdump
如果忘记了这个软件的用法,我们可以使用 tcpdump --help 来查看一下使用方法
一般我们的服务器里边只有一个网卡,使用tcpdump可以直接抓取数据包,但是这样查看太麻烦了,所以都会添加参数来进行获取的。
例如我截取本机(19216831147)和主机114114114114之间的数据
tcpdump -n -i eth0 host 19216831147 and 114114114114
还有截取全部进入服务器的数据可以使用以下的格式
tcpdump -n -i eth0 dst 19216831147
或者服务器有多个IP 可以使用参数
tcpdump -n -i eth0 dst 19216831147 or 19216831157
我们抓取全部进入服务器的TCP数据包使用以下的格式,大家可以参考下
tcpdump -n -i eth0 dst 19216831147 or 19216831157 and tcp
从本机出去的数据包
tcpdump -n -i eth0 src 19216831147 or 19216831157
tcpdump -n -i eth0 src 19216831147 or 19216831157 and port ! 22 and tcp
或者可以条件可以是or 和 and 配合使用即可筛选出更好的结果。

最近几天同事一直反馈,APP有时候会提示 网络错误,请检查网络后重试 。

相隔一天,同事反馈问题依旧,查看内存依然还有5G的剩余,判断不是内存问题,便排查nginx的错误日志。结果发现,关于appkmb2bcom域名有比较多的报错。

upstream prematurely 表示上游服务器过早关闭连接,上游服务器是有两个IP的37580端口作为负载均衡,日志内只发现54这个IP。由此判断就是这个 1836111154 的37580端口过早关闭与该nginx的连接。

问题点,排查为何54这个IP会过早关闭连接

采用tcpdump命令,抓对端IP为: 1836111154 , 端口为: 37850 的流量

结果发现nginx向上游(1836111154)建立三次握手,然后请求一个资源,上游发完资源后就立马断开连接了。

结合开发人员发的502状态码,请求只有72ms秒就返回了502,这个说明在nginx跟上游建立连接,还没完全断开,准备发送数据交互时,上游就自动断开连接。

修改上游nginx的upstream配置,修改前:

修改后:

表示nginx连接上游三次都失败,那么300秒内不会再建立连接,之后重新启用对该地址的监听。

再次观察日志, upstream prematurely closed 的报错少了很多,测试APP也都正常,目前算是稳定。

至于对比日志发现,54的IP数量是139的十几倍的问题,怀疑是QingCloud云平台中的监听器软件有问题。1836411154的37580端口就对应一个监听器,监听的是中药城项目的内部nginx 80端口。而且之前也出现过监听器不生效的问题,删除重新添加恢复。

现在暂时恢复,继续观察。若再出现,可抓139IP的包分析对比,并且重新添加监听器。

常见的网络抓包工具大体上按照抓包节点可以分成两类:
一种是通过 代理中间服务 截取协议包,例如Whistle,Charles,Fiddler,miniproxy一种是在网卡链路层截取数据包,例如warshark, tcpdump
还有像,Chrome浏览器的调试工具,这种属于工具本身内置的能力。

根据其实现方式,它们的能力界限各有特点。下面是一个大致的比较:

总结:
通过以上的比较,大体上,这几个主流的抓包工具基本上可以满足我们日常的抓包需求

抓包工具能力图:

6反向代理
反向代理在本地端口上创建一个 Web 服务器,该服务器透明地将请求代理到远程 Web 服务器。反向代理上的所有请求和响应都可能记录在 Charles 中。

如果您的客户端应用程序不支持使用 >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13450208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存