DNSPod 公共 DNS 的 DoH 与 DoT (1.12.12.12
和 120.53.53.53
)对外宣告的 MSS 是 1452 bytes 、而实际上真正最大可接受的数据包体积是 1444 bytes 。怀疑是由于 DNSPod 使用的腾讯云全球应用加速 LB 对外宣告的 MSS 中包含了 8 bytes 的 TOA 导致的,参见腾讯云全球应用加速中关于 TOA 的文档)。
而在 Go 1.23 中,Go 为 crypto/tls
默认启用 了实验性的「后量子时代加密 Cipher 」X25519Kyber768Draft00
,参见 Go 1.23 的更新日志。X25519Kyber768Draft00
依赖 TLS key_share extension
进行,导致通过 Go 1.23 内置的 TLS 实现进行 TLS 握手时发送的 TLS Client Hello 体积从典型的 252 bytes 激增到 1476 bytes 、恰好触发分包,而 DNSPod 错误的 MSS 导致 TLS 握手失败。
通过 GODEBUG=tlskyber=0
禁用 Go 1.23 的 X25519Kyber768Draft00
后可以正常完成与 1.12.12.12
和 120.53.53.53
的 TLS 握手;通过 iptables 或类似手段修改 MSS 也可以正常完成 TLS 握手。
另,AWS 的防火墙(基于 Suricata)也会默认丢弃过长的 TLS Client Hello 、参见 Suricata 社区的用户反馈,因此使用 Go 1.23 编写的应用同样无法访问 AWS API 、参见 terraform-provider-aws 的 Issue hashicorp/terraform-provider-aws#39311。
1
yyzh 26 天前 via Android
|
2
johnjiang85 25 天前
@yyzh 已转发给相关同事排查
|
3
tencentcloud 24 天前 1
您好,经升级核实 DNSPod 的 MSS 问题是由于服务内部网络的转发链路存在缺陷,与问题中提到的 TOA 无关。这里我们尽快做修复,具体修复排期待我们明确后再进一步同步,感谢您的关注和反馈。
|
4
tencentcloud 21 天前 1
您好,关于您所反馈的问题,我们的技术团队正在全力推进修复工作,预计 12 月底前能够完成,若因其他原因延迟,我们会第一时间同步。在此期间,给您带来的不便,我们深表歉意,同时也感谢您的耐心等待与理解。
|