技术分析报告:HTTPS 连接异常与 TTL 异常行为分析

0 阅读3分钟

一、问题概述

在访问阿里云 ECS 上部署的服务(域名:sm.com)时,发现 HTTPS 请求存在 间歇性连接重置curl: (35) OpenSSL SSL_connect: Connection reset by peer)现象。
该问题仅在 跨云或外部网络(如腾讯云、移动云、企业出口)访问时发生,而 阿里云同地域或 ECS 内部访问完全正常

二、现象与复现

  1. 测试命令:

    for i in {1..20}; do curl -sS -o /dev/null -w '%{http_code}\n' https://sm.com/api/minio/member/catering/store/page; done

  2. 表现结果:

    • 在阿里云 ECS 内部执行:连续 20 次均返回 HTTP 200;
    • 在腾讯云 / 移动云 / 公司出口(101.68.79.42)执行:约 70% 出现 “connection reset by peer”;
    • HTTP 明文访问无异常,仅 HTTPS 受影响。
  3. Nginx 与系统日志无错误输出:

    • 未出现 SSL_accept()handshake failedbad record mac 等异常;
    • Nginx access log 无对应请求条目;
      → 说明连接在到达 Nginx 之前已被重置。

三、抓包分析结果

3.1 抓包环境

  • 抓包位置:阿里云 ECS(172.21.180.34)
  • 抓包工具:Wireshark / tcpdump
  • 抓包对象:tcp.port == 443 and host sm.com

3.2 抓包特征摘要

包序号源地址目标地址协议说明
1101.68.79.42172.21.180.34TCP SYN发起连接
2172.21.180.34101.68.79.42SYN/ACK响应正常
3101.68.79.42172.21.180.34ACK三次握手完成
4101.68.79.42172.21.180.34TLSv1.2 ClientHello正常 TLS 握手开始
5101.68.79.42 → 172.21.180.34TCP [RST]异常断开

3.3 TTL 分析结果

包类型抓包 TTL典型初始 TTL推算跳数备注
正常 TCP 包5364≈11 跳来自客户端真实路径
异常 RST 包5664≈8 跳TTL 反而更大,说明该包由中间设备伪造产生

结论:

TCP RST 包的 TTL 值高于正常握手包,不符合网络转发规律。
表明 RST 并非由客户端(101.68.79.42)返回,而是在 靠近阿里云 ECS 机房入口处的中间设备 伪造后直接注入连接,从而导致“Connection reset by peer”。

四、原因推断

综合以下证据:

  1. 不同云来源均出现 RST;
  2. 阿里云内访问正常;
  3. RST TTL 值大于正常握手包;
  4. 阿里云官方反馈:“未备案或未接入备案域名的 HTTPS 请求会被安全系统自动拦截”;
  5. 抓包 TTL 对应阿里机房接入层位置。

可确认问题根源为:

阿里云机房安全系统在检测到未备案接入的域名(sm.com)时,自动拦截跨云 HTTPS 流量并注入 RST 包,导致连接被提前终止。

该机制属于阿里云大陆区的“未备案域名 HTTPS 拦截策略”,为合规要求。

五、验证方式

测试路径结果说明
阿里云 ECS 内部访问正常内部信任路径,无拦截
腾讯云访问RST公网访问,触发备案检测
移动云访问RST同上
HTTP 明文访问返回阿里云默认拦截页确认域名未接入备案
IP 直连(不走域名)正常不触发备案系统

六、解决方案与建议

方案操作效果
备案接入阿里云(推荐)登录 阿里云备案系统,选择“已有备案 → 接入阿里云”,填写 sm.com 并提交审核。正常放行 HTTPS 流量
临时替代方案使用阿里云香港/国际区节点、SLB/CDN 中转或公网 IP 直连。可用于临时调试,但不满足合规要求。

七、结论

  • 抓包确认 RST 包非由客户端发出,而是由阿里云机房边界安全设备生成。
  • TTL 异常(由 53 → 56)证明该包被中间设备注入。
  • 官方确认原因:域名 sm.com 未备案接入阿里云,HTTPS 流量被自动拦截。
  • 备案接入完成后,该问题即可完全消失。