全站加速WebSocket偶发访问失败-劫持行为

简介: 对于能复现的问题,可以尝试抓包分析具体的请求得出结论。劫持行为可以通过配置HTTPS来改善。

问题描述

客户使用DCDN的WebSocket业务,偶发出现无法访问的情况,线上有1%左右的失败率。根据客户沟通,该问题并不是必现的,目前是其中一位同事家里的wifi网络下能复现问题,而且重启家里的光猫以后能正常,但一段时间以后又会出现问题。

问题排查

1. 客户端信息

尝试让客户复现问题,提供客户端的Netwrok信息和客户端抓包信息。从抓包信息看,是源站响应了500。进一步跟客户确认源站逻辑,根据客户的反馈是源站会先校验Upgrade: websocket 这个请求头,如果没有这个请求头就会返回500。但是奇怪的是,根据抓包文件看,客户端明明是带了Upgrade: websocket请求头的,因此怀疑是DCDN节点转发的问题。

根据WebSocket的RFC协议文档可以知道

  1. Websocket请求必须包含一个Upgrade header字段,它的值必须包含"websocket"。
  2. WebSocket请求必须包含一个Connection header字段,它的值必须包含"Upgrade"。

2. 模拟访问测试

根据抓包信息,使用curl指定到对应的DCDN请求模拟发WebSocket请求测试,发现在客户侧能稳定复现的情况下,我们curl测试并不能复现,排查来看又跟节点没有关系。

curl -sv 'http://xxx.xxx.com/' -H'Connection: Upgrade' -H'Upgrade: websocket' -H'Sec-WebSocket-Key: pCnMykJwUTQB14FCbP2Beg==' -H'Sec-WebSocket-Version: 13' -H'Origin:http://xxx.xxx.com' -H'Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits' -H'Accept-Encoding: gzip, deflate' -x 116.253.29.212:80

3. 源站打印

尝试让客户在源站侧加一下打印,将收到的请求头打印出来,从源站的打印来看,出问题的时候的确是没有收到Upgrade: websocket头。而如果是正常的请求,源站是能打印出Upgrade: websocket头的。如果尝试在源站侧去掉这个Upgrade的校验,虽然可以请求成功,但是无法进行WebSocket通信,因为整条链路并不是走的WebSocket。

3. 排查CDN日志

排查后台CDN的日志,发现正常请求的hit_info字段显示的是WS,也就是走的WebSocket请求。而异常请求的hit_info字段是dynamic,也就是走的动态加速,并不是WebSocket。从现象分析来看,怀疑是L1收到的请求里就没有Upgrade: websocket相关的头,所以L1认为这不是WebSocket请求,走的是普通的动态加速,转发回源站也不会带Upgrade头。

4. DCDN侧增加debug日志

由于日志里并没有记录收到的客户端Upgrade字段,因此需要后台加一下debug日志,打印下该字段。

5. 重新复现问题

重新让客户复现了一次问题,并提供客户端抓包数据。从抓包数据看,客户端请求确实带了Upgrade头,而从DCDN的日志来看,确实是没有收到Upgrade头的,因此走的也是普通动态加速请求。同时从客户端收到的来自DCDN的报文看,这个TTL是64,这明显是不正常的。正常情况由于DCDN节点发出的报文TTL原始值是64,中间每经过一个网络路由节点,TTL减1,客户端收到的报文TTL不应该是64。因此判断是客户端存在劫持行为,走了代理,应该是客户端发出请求以后客户端层面做了异常转发,按照普通的HTTP请求转发,没有转WebSocket相关头导致的。

问题解决

配置HTTPS证书,客户端走wss请求以后,客户侧能复现问题的现场就正常了,无法再复现问题,而且线上错误率明显改善。

适用产品

DCDN

目录
相关文章
《阿里云产品手册2022-2023 版》——全站加速
《阿里云产品手册2022-2023 版》——全站加速
|
弹性计算 编解码 负载均衡
阿里云全站加速DCDN降价6-30%
阿里云全站加速DCDN降价6-30%,阿里云产品大规模调价,核心云产品价格全线下调,技术红利释放核心产品最高降幅50%,以下产品的价格调整将于2023年5月7日生效,最终以产品详情页实际情况为准,阿里云百科分享阿里云官网发布的降价产品及降价幅度说明:
173 0
|
云计算 CDN
阿里云产品体系分为6大分类——云计算基础——CDN与边缘——全站加速DCDN
阿里云产品体系分为6大分类——云计算基础——CDN与边缘——全站加速DCDN自制脑图
118 1
阿里云产品体系分为6大分类——云计算基础——CDN与边缘——全站加速DCDN
|
边缘计算 缓存 网络协议
|
存储 数据采集 边缘计算
阿里云全站加速DCDN重磅发布!打造新一代加速引擎
阿里云CDN经过10多年的发展,已逐步构筑一个边缘+云的安全网络立体防护体系,包含全链路安全传输、常见攻击类型的边缘防御、企业级资源部署、运维以及内容安全保障机制,为企业打造安全的网络运营环境。
378 0
阿里云全站加速DCDN重磅发布!打造新一代加速引擎
|
数据采集 边缘计算 运维
7月27日,阿里云全站加速DCDN重磅升级发布!
网络作为数字经济发展的重要载体,企业信息安全与防护被提升到前所有未有的高度。阿里云CDN经过10多年的技术发展时间,已逐步构筑一个边缘+云的安全网络立体防护体系,包含了全链路安全传输、常见攻击类型的边缘防御、企业级资源部署、运维以及内容安全保障机制,为企业打造安全的网络运营环境。
216 0
7月27日,阿里云全站加速DCDN重磅升级发布!
|
缓存 边缘计算 UED
阿里云CDN加速和全站加速DCDN区别及如何选择?
阿里云有两种加速方式,CDN加速和全站加速DCDN。前者也叫静态加速,后者叫动态加速。我们建站要速度快除了带宽大之外,比较重要的就是使用 cdn了。本文详细讲解CDN加速和全站加速DCDN的区别及如何选择。
6662 0
阿里云CDN加速和全站加速DCDN区别及如何选择?
|
缓存 开发框架 前端开发
CDN - 阿里云CDN全站加速,说说动态加速那些事
CDN - 阿里云CDN全站加速,说说动态加速那些事
2039 0
CDN - 阿里云CDN全站加速,说说动态加速那些事
|
边缘计算 运维 监控
阿里云全站加速DCDN重磅升级
相比传统CDN加速,全站加速DCDN具有更广阔的应用场景。在当下企业全面数字化的进程中,为了更全面地满足广大企业客户的个性化加速需求,全站加速DCDN从简单开通到个性化定制、从内容分发到安全防护,对客户侧的使用体验进行了全局梳理和全链路优化,全站加速产品功能得到极大增强和完善。12月1日14:00,全站加速DCDN集中升级发布,四位产品专家在线解读了边缘程序、数据日志、边缘安全背后的技术与应用。
1094 0
阿里云全站加速DCDN重磅升级
|
弹性计算 运维 安全
阿里云新品发布会周刊第124期 丨 全站加速DCDN重磅升级+云采销
新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多新品发布会!
443 0
阿里云新品发布会周刊第124期 丨 全站加速DCDN重磅升级+云采销