我真是困惑不已。
我是一名主要使用 Rust 编程的程序员。我第一次注意到这个问题是在我注意到 Cargo(Rust 的包管理器和构建系统)无法下载依赖项时,并出现连接重置错误。Curl 也出现了这个问题,尽管我的浏览器似乎没有受到影响。检查 curl -v 的输出后,我发现 DNS 解析成功,成功建立了与端口 443 的连接,然后 Curl 在发送第一个字节之前收到了 ECONNRESET。
经过更多测试后,我发现 Curl 可以毫无问题地访问 google.com、stackoverflow.com、python.org、ruby-lang.org、rust.facepunch.com(视频游戏网站)和 lib.rs(一个详细介绍 Rust 库的网站,本身与 Rust 项目无关),但在尝试连接 crates.io、rust-lang.org、rustup.rs 或 docs.rs 时被阻止。更奇怪的是,连接到这些被阻止的网站似乎有大约 17% 的时间会随机成功(通过一个连续尝试 1000 多次的批处理脚本测量),并且一旦连接成功,它就会无限期地保持打开状态。在进一步探索之后,我注意到 Firefox 和 MSEdge 的连接也会被重置,但仅限于访问网站的 http 版本,而不是 https(curl 和 cargo 在两者上都被阻止)。我网络上的其他机器丝毫没有受到影响。我对此没有任何解释。