Happy Eyeballs 双栈竞速:网站等十几秒才开、IPv6 黑洞怎么查
很多系统在同时拿到 A 和 AAAA 记录时,会按 Happy Eyeballs 先尝试 IPv6,大约二百五十毫秒后再并行尝试 IPv4,谁先连上用谁。规范目的是避免坏掉的 IPv6 把用户卡住。真正的麻烦出在「IPv6 不是立刻拒绝,而是丢包」:握手一直等到超时,浏览器才退回 IPv4,页面就变成等十几秒甚至更久。
接上线路之后,这种现象会换一张脸。有的客户端只把 IPv4 送进隧道,IPv6 仍从本地网卡出去,于是出现泄漏或另一条黑洞。也有的是隧道里 IPv6 前缀不可达,浏览器却仍优先用它。下面用系统自带的命令把两条协议分开看,不靠反复刷新网页。协议细节以所在系统的实现为准。
慢、失败和泄漏分别长什么样
Happy Eyeballs 本身不是故障,它是为了快点选出能用的那一侧。故障是其中一侧看起来「还在尝试」,所以竞速等不赢。只给域名配了 AAAA、服务器却没听 IPv6,也会让所有双栈客户端集体变慢。
| 现象 | 更像什么 | IPv4 | IPv6 |
|---|---|---|---|
| 等十几秒后突然打开 | IPv6 黑洞,回退太晚 | 其实是通的 | 丢包直到超时 |
| curl -4 通、curl -6 不通 | IPv6 路径坏了 | 正常 | 失败 |
| 只有部分网站慢 | 这些域名有 AAAA | 无 AAAA 的站不受影响 | 有 AAAA 的站中招 |
| 关了线路反而正常 | 隧道里的 IPv6 不可达 | 本地直连可用 | 隧道前缀是黑洞 |
| 检测站说 IPv6 泄漏 | IPv6 没进隧道 | 走了线路 | 仍从宽带出去 |
| 两个协议都失败 | 不是双栈竞速 | 另查 DNS 或重置 | 同左 |
先分清是哪一侧在拖:分步操作
- 第一步:先把线路准备好,连上刺猬VPN,记下你要对比的是「已连接」和「断开」两种状态。自定义用户名和密码即可匿名注册,不需要邮箱和手机号。免费节点永久免费、不限流量、不限速。全程 HTTPS+AES 加密传输。
- 第二步:在命令行对同一域名各做一次强制协议。Windows 可用 curl.exe -4 -I 与 curl.exe -6 -I。只有 -6 挂起,就说明慢来自 IPv6,而不是网页脚本。
- 第三步:看这个域名有没有 AAAA。nslookup 先查默认,再指定只看某一类型。没有 AAAA 的站如果也慢,就不要用双栈来解释。
- 第四步:对比连接线路前后。断开时 -6 是通的、连上后 -6 挂起,问题在隧道里的 IPv6,而不是家里宽带。反过来,连上后 -4 变快、-6 仍走本地,则是 IPv6 没进隧道。
- 第五步:Windows 上用 netsh interface ipv6 show prefixpolicies 看前缀策略,用 route print -6 看有没有默认路由指向一个并不通的网关。不要先去改策略表,先确认现象。
- 第六步:macOS 上用 scutil --dns 看解析顺序,再用 curl 的 -4 和 -6 重复第二步。网络里的「限制 IP 地址跟踪」不会单独修好黑洞。
- 第七步:若确认是本机一条坏掉的 IPv6 默认路由,而你的线路只稳定承载 IPv4,可在该网卡上暂时关闭 IPv6,让浏览器只走已经验证能通的 IPv4。这是缩小故障面,不是把地址伪装成另一国。
- 第八步:解析结果奇怪、同一域名时而只有 A 时而有 AAAA,再查加密 DNS 是否和系统 DNS 各答各的。那部分见下文的内链,不要在 Happy Eyeballs 上反复调超时数值。
- 第九步:改完后用原来那个「等十几秒」的网站复测,并再跑一次 -4 与 -6。两边都在两秒内给出响应头,才算这一侧修好了。
按命令结果决定下一步
不要同时改 DNS、关 IPv6、换节点。一次只动一个变量,否则不知道是哪一步生效。
- -4 与 -6 都很快,只有浏览器慢:浏览器扩展或代理设置在作怪。用无痕窗口,并检查是否又填了一条手动代理。
- -6 超过十秒无输出、-4 立即返回:IPv6 黑洞。优先停用这条坏路由或暂时关闭该网卡的 IPv6,再观察浏览器。
- 只有带 AAAA 的大站慢,小站正常:和上一条同一类,只是小站没有 AAAA,根本没参加竞速。
- 连上线路后检测站仍看到宽带商的 IPv6:隧道没盖住 IPv6。先看 IPv6 和 VPN 里的客户端行为,再决定是关本机 IPv6 还是换一种连接方式。
- 两个协议都报 Could not resolve host:这是解析失败,不是竞速。转到 DNS 加密那一篇,而不是去关 IPv6。
- curl 很快、某个 App 仍慢:那个 App 可能写死了自己的连接栈,不走系统的 Happy Eyeballs。更新 App,或在它的网络设置里看有没有强制 IPv6。
- 时好时坏:前缀偶尔通。用几次 -6 看是稳定失败还是偶发。偶发更像丢包,稳定失败才像黑洞。
线路模式和双栈的关系
刺猬VPN没有按某个程序单独勾选的代理列表。命令行若必须经过线路,使用能覆盖该终端的连接方式,而不是找一个不存在的「把 curl 加进名单」。免费节点永久免费、不限流量、不限速,足够做这些探测。时长套餐期间同样不限流量、不限速。实际可用性取决于当前网络环境。
| 对比项 | 全局模式 | 只处理 IPv4 的状态 | 系统代理 |
|---|---|---|---|
| 浏览器网页 | 视客户端是否覆盖 IPv6 | IPv6 可能仍直连 | 多数只影响代理感知的程序 |
| curl -4 | 应走隧道 | 应走隧道 | 不一定,看是否认代理 |
| curl -6 | 可能走隧道或失败 | 常走本地网卡 | 经常不经过代理 |
| 泄漏检测 | IPv4 与 IPv6 都应核对 | IPv6 容易露本地 | 检测站本身也要分协议看 |
| 流量 | 时长套餐期间不限流量、不限速 | 同左 | 同左 |
| 适合排查 | 先在这里对比 -4 和 -6 | 用来确认是不是没进隧道 | 不要用来判断 IPv6 |
和 IPv6、加密 DNS 文章怎么分工
地址会不会绕过隧道、客户端打开后 IPv6 还在不在,集中在 IPv6 和 VPN。解析被改写、加密 DNS 和系统 DNS 答案不一致,集中在 DoH 与 DoT。本文只处理「两个地址都解析出来了,但其中一侧迟迟不失败,于是整页变慢」。
排查顺序建议固定:先 -4 和 -6,再看连上线路之后哪一侧变了,最后才改网卡的 IPv6 开关。不要一上来就清空 DNS 缓存,那会把双栈问题伪装成解析问题。
常见报错速查表
| 现象 | 原因 | 解决办法 |
|---|---|---|
| 网页等十几秒才开 | IPv6 超时后才回退 | 用 -4 与 -6 确认,再停用坏的 IPv6 |
| curl -6 一直挂起 | IPv6 路径丢包 | 暂时关闭该网卡 IPv6 后复测 |
| 只有带 AAAA 的站慢 | 无 AAAA 的站不参与竞速 | 按黑洞处理,不要换 DNS 碰运气 |
| 检测站看到本地 IPv6 | IPv6 未进隧道 | 对照 IPv6 专文检查客户端 |
| Could not resolve host | 解析失败 | 改查加密 DNS,不是竞速 |
| 关线路后恢复正常 | 隧道内 IPv6 不可达 | 修隧道一侧或先只用 IPv4 |
| curl 快、某个 App 慢 | App 自带连接栈 | 更新 App,不要只改浏览器 |
电脑正常之后把手机和路由器也测一次
电脑上强制走 IPv4 已经很快、手机仍要等很久,先看手机是不是连着另一条无线,或者开着蜂窝数据。蜂窝的 IPv6 和家里的宽带不是同一条路径,不能用电脑的结论代替手机。用手机浏览器打开同一个站,再关掉无线只用流量对比一次,哪一种模式变快,问题就在那一条接入上。
路由器如果打开了 IPv6 透传,所有设备会拿到同一条前缀。这时要看路由器广域网一侧是否真有可用的 IPv6 地址,而不是只在一台电脑上关闭协议。电脑关掉之后手机仍慢,说明上游还在丢包,关一台电脑不够。
公司或校园网禁止 IPv6 时,域名仍会解析出 AAAA,连接却被丢掉,表现和家里的黑洞一样。这种环境在出问题的网卡上关闭 IPv6 即可,不必更换 DNS,也不必改前缀策略。改完后仍用原来的域名各跑一次两种协议,都在短时间返回响应头,再回到浏览器复测那个慢页面。
每次排查都留下还能看懂的记录。一次只改一个地方,记下时间、当时有没有连着线路、强制走的是哪一种地址、结果是马上返回、一直挂起,还是立刻被拒绝。同一个域名测三次再下结论。偶发的挂起更像丢包,三次都挂起才像一侧完全不通。电脑修好之后,用手机连接同一条无线,打开原来那个慢网站,确认不是只有电脑上的扩展在作怪。如果只有公司网络慢、家里一切正常,就在公司那台电脑的网卡上处理,不要回去改家里的路由器。浏览器里装了很多会改写请求的扩展时,先用无痕窗口排除。无痕窗口仍然慢,再回到协议这一侧。最后把有效的做法记在备忘录里,写清关掉的是哪一块网卡上的哪一个协议,避免下次把家里所有设备的协议都关掉。路由器重启后,有的光猫会重新发来一条实际上不通的地址前缀,现象会隔几天再出现。家里再次变慢时,先重复那两条强制协议的命令,不要直接更换域名解析。客人和你的电脑走同一条无线时,只改你自己的网卡即可,不必把整间屋子的协议都关掉,免得别人的设备突然失去连接。笔记本接网线时还有一块有线网卡,别只关了无线那一块,有线一侧仍可能带着坏前缀。客服或同事远程看你屏幕时,让他们看那两条命令的结果,比口头说很慢更容易对齐。修好之后过一天再测一次,确认光猫重启没有把坏前缀发回来。手机系统更新之后再测一次,更新有时会把协议开关恢复成默认打开。
高频问答
- 问:Happy Eyeballs 要不要关掉?答:一般不用。它是回退机制。该处理的是永不失败的那一侧,而不是竞速本身。
- 问:二百五十毫秒是不是可以改小?答:系统和应用各有实现,改超时不能修好一条黑洞。黑洞仍会拖到自己的失败时间。
- 问:关 IPv6 会不会上不了网?答:在你已经用 -4 证明 IPv4 可用时,暂时关闭坏掉的 IPv6 通常能恢复浏览。宽带若只提供 IPv6,就不能关,要先确认 -4 是通的。
- 问:这和 DNS 污染是一回事吗?答:不是。污染是解析结果错了。这里是解析对了,连接一侧不回话。
- 问:手机也会这样吗?答:会。手机上同样先用能强制协议的工具或看网页是否只有双栈站点变慢。系统菜单名称和电脑不同。
- 问:需要改路由器吗?答:先在出问题的那台设备上复现。只有所有设备都慢,才去看路由器的 IPv6 前缀。
复测时只留一个变化
每次改动后重复同一条 curl -4 和 curl -6,目标域名不要换。记录是「挂起」「立刻拒绝」还是「正常响应头」。三张状态对上了,再打开浏览器看那个原来要等十几秒的站。同时清缓存、换节点、关 IPv6,最后即使好了也不知道原因,下次还会回来。
网站双栈打开很慢,优先怀疑 Happy Eyeballs 等不赢一条 IPv6 黑洞,而不是把带宽或节点全盘否定。刺猬VPN 采用 HTTPS+AES 加密传输,支持匿名注册,免费节点永久免费、不限流量、不限速,适合做协议对比;时长套餐期间不限流量、不限速。客户端提供断线保护和按域名与 IP 的智能分流。实际可用性取决于当前网络环境。
开始使用刺猬VPN:免费节点即刻体验,全球会员线路
刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。