飞行手册

双栈网络偶尔首开慢?分开测试 IPv4、IPv6 与自动回退

双栈网络偶尔首开慢?分开测试 IPv4、IPv6 与自动回退

同一域名同时有 IPv4 和 IPv6 地址时,客户端可能并行或错开尝试两条路径。某条 IPv6 路径不完全可用,就会出现“偶尔第一次慢、刷新后正常”。这不等于 DNS 一定错误,也不能只凭一次 IPv4 更快就永久关闭 IPv6。应先分开测试,再观察自动选择。

先确认 curl 支持 IPv6

执行 curl.exe -V,查看功能列表是否包含 IPv6。随后对同一个 HTTPS 地址分别运行:

curl.exe -4 -o NUL -sS -w "v4 remote=%{remote_ip} connect=%{time_connect} total=%{time_total}\n" "https://example.com/"
curl.exe -6 -o NUL -sS -w "v6 remote=%{remote_ip} connect=%{time_connect} total=%{time_total}\n" "https://example.com/"
curl.exe    -o NUL -sS -w "auto remote=%{remote_ip} connect=%{time_connect} total=%{time_total}\n" "https://example.com/"

macOS 或 Linux 把 NUL 换成 /dev/null。-4 只请求 IPv4 地址,-6 只请求 IPv6 地址;自动组保留正常双栈行为。每组至少做 5 次,并记录失败,不能只保留最快值。

Happy Eyeballs 在做什么

curl 官方手册说明,双栈主机上会让 IPv6 先获得一个很短的起步时间;若未及时连上,再并行尝试 IPv4,先成功的连接被使用。这类机制用于减少单条地址族故障带来的等待,并不保证每次都选同一个远端 IP。

因此,自动组的 remote_ip 可能在 IPv4 和 IPv6 之间变化。若强制 IPv6 总失败,而自动组只多出一小段固定等待后走 IPv4,现象更接近 IPv6 路径不通;若两组都稳定,首开慢要继续查 DNS、TLS 或目标响应。

机场客户端还会增加一层变量

系统解析到的地址族、客户端的 DNS 策略、节点出口是否支持 IPv6,以及规则是否把两类流量送到同一路径,都可能影响结果。先在直连状态做三组,再启用机场重复;不要在测试中同时换节点、换 DNS 和换网络。

若只有代理状态下的 -6 失败,查看客户端是否明确支持 IPv6 接管和远端解析。若直连 -6 也失败,应先检查本地路由器与运营商,而不是把问题归给机场。

不要急着永久禁用 IPv6

-4 和 -6 是诊断开关,不是全局修复。永久关闭一个地址族可能掩盖根因,也会让只能通过该地址族访问的服务失效。更好的做法是保留测试表,确认失败范围,再调整对应客户端或网络配置。

验收方法

你应能说明:强制 IPv4、强制 IPv6 各自成功几次;自动组最终用了哪个地址;直连和代理的差异发生在哪里。若自动组连续成功且耗时稳定,即使单独 IPv6 不通,也说明自动回退在发挥作用;若自动组仍长时间卡住,再继续检查 DNS 返回和客户端日志。

参考资料

评论

推荐登机口

搜索文章

正在加载搜索…