一、问题概述
在访问阿里云 ECS 上部署的服务(域名:sm.com)时,发现 HTTPS 请求存在 间歇性连接重置(curl: (35) OpenSSL SSL_connect: Connection reset by peer)现象。
该问题仅在 跨云或外部网络(如腾讯云、移动云、企业出口)访问时发生,而 阿里云同地域或 ECS 内部访问完全正常。
二、现象与复现
-
测试命令:
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 -
表现结果:
- 在阿里云 ECS 内部执行:连续 20 次均返回 HTTP 200;
- 在腾讯云 / 移动云 / 公司出口(101.68.79.42)执行:约 70% 出现 “connection reset by peer”;
- HTTP 明文访问无异常,仅 HTTPS 受影响。
-
Nginx 与系统日志无错误输出:
- 未出现
SSL_accept()、handshake failed、bad record mac等异常; - Nginx access log 无对应请求条目;
→ 说明连接在到达 Nginx 之前已被重置。
- 未出现
三、抓包分析结果
3.1 抓包环境
- 抓包位置:阿里云 ECS(172.21.180.34)
- 抓包工具:Wireshark / tcpdump
- 抓包对象:
tcp.port == 443 and host sm.com
3.2 抓包特征摘要
| 包序号 | 源地址 | 目标地址 | 协议 | 说明 |
|---|---|---|---|---|
| 1 | 101.68.79.42 | 172.21.180.34 | TCP SYN | 发起连接 |
| 2 | 172.21.180.34 | 101.68.79.42 | SYN/ACK | 响应正常 |
| 3 | 101.68.79.42 | 172.21.180.34 | ACK | 三次握手完成 |
| 4 | 101.68.79.42 | 172.21.180.34 | TLSv1.2 ClientHello | 正常 TLS 握手开始 |
| 5 | 101.68.79.42 → 172.21.180.34 | TCP [RST] | 异常断开 |
3.3 TTL 分析结果
| 包类型 | 抓包 TTL | 典型初始 TTL | 推算跳数 | 备注 |
|---|---|---|---|---|
| 正常 TCP 包 | 53 | 64 | ≈11 跳 | 来自客户端真实路径 |
| 异常 RST 包 | 56 | 64 | ≈8 跳 | TTL 反而更大,说明该包由中间设备伪造产生 |
结论:
TCP RST 包的 TTL 值高于正常握手包,不符合网络转发规律。
表明 RST 并非由客户端(101.68.79.42)返回,而是在 靠近阿里云 ECS 机房入口处的中间设备 伪造后直接注入连接,从而导致“Connection reset by peer”。
四、原因推断
综合以下证据:
- 不同云来源均出现 RST;
- 阿里云内访问正常;
- RST TTL 值大于正常握手包;
- 阿里云官方反馈:“未备案或未接入备案域名的 HTTPS 请求会被安全系统自动拦截”;
- 抓包 TTL 对应阿里机房接入层位置。
可确认问题根源为:
阿里云机房安全系统在检测到未备案接入的域名(
sm.com)时,自动拦截跨云 HTTPS 流量并注入 RST 包,导致连接被提前终止。
该机制属于阿里云大陆区的“未备案域名 HTTPS 拦截策略”,为合规要求。
五、验证方式
| 测试路径 | 结果 | 说明 |
|---|---|---|
| 阿里云 ECS 内部访问 | 正常 | 内部信任路径,无拦截 |
| 腾讯云访问 | RST | 公网访问,触发备案检测 |
| 移动云访问 | RST | 同上 |
| HTTP 明文访问 | 返回阿里云默认拦截页 | 确认域名未接入备案 |
| IP 直连(不走域名) | 正常 | 不触发备案系统 |
六、解决方案与建议
| 方案 | 操作 | 效果 |
|---|---|---|
| 备案接入阿里云(推荐) | 登录 阿里云备案系统,选择“已有备案 → 接入阿里云”,填写 sm.com 并提交审核。 | 正常放行 HTTPS 流量 |
| 临时替代方案 | 使用阿里云香港/国际区节点、SLB/CDN 中转或公网 IP 直连。 | 可用于临时调试,但不满足合规要求。 |
七、结论
- 抓包确认 RST 包非由客户端发出,而是由阿里云机房边界安全设备生成。
- TTL 异常(由 53 → 56)证明该包被中间设备注入。
- 官方确认原因:域名
sm.com未备案接入阿里云,HTTPS 流量被自动拦截。 - 备案接入完成后,该问题即可完全消失。