这里我们可以使用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 中。
如果您的客户端应用程序不支持使用 >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)