IPv6 经常被认为是难以理解和实施的,但事实并非如此。它只是与 IPv4 不同。一个常见的问题是,尽管有 A 和 AAAA 记录,但 Web 服务器只能通过 IPv4 访问。这可以通过使用 curl 命令进行测试。例如,测试 GitHub 的 IPv4 和 IPv6 连接性可以发现,尽管有 AAAA 记录,但 IPv6 连接失败。这种情况下,浏览器的 Happy Eyeballs 特性会自动切换到 IPv4 连接,因为它通常更快。
Happy Eyeballs 的工作原理
Happy Eyeballs 是一种浏览器特性,它尝试同时建立 IPv4 和 IPv6 连接,并使用更快的连接。这种特性可以导致一些意想不到的结果。例如,在一个项目中,连接到开发 Web 服务器的请求有时会成功,有时会失败,返回 403 Forbidden 页面。问题的解决方法是,客户使用了分隧道 VPN,IPv4 流量通过 VPN 隧道,而 IPv6 流量通过正常的互联网连接。有时,IPv4 连接更快,有时 IPv6 连接更快。Happy Eyeballs 只关心 TCP 连接的速度,而不关心 HTTP 响应代码。
Happy Eyeballs 的局限性
Happy Eyeballs 的工作原理是尝试同时建立 IPv4 和 IPv6 连接,并使用更快的连接。但是,它不考虑 HTTP 响应代码。这意味着,即使 IPv6 连接成功建立,但如果 Web 服务器返回 403 Forbidden 页面,Happy Eyeballs 也不会切换到 IPv4 连接。另一个问题是,Happy Eyeballs 可能会导致 Path MTU Discovery 问题。如果 ICMPv6 被阻止,PMTUD 将无法工作,导致大包被丢弃。为了解决这个问题,可以配置 radvd 来宣告一个较小的 MTU 值。
实际意义
对于运维和网络工程师来说,理解 IPv6 和 Happy Eyeballs 的工作原理是非常重要的。它可以帮助他们诊断和解决 IPv6 连接问题,并确保网络服务的可用性和性能。通过配置合适的 MTU 值和允许 ICMPv6 流量,可以避免 Path MTU Discovery 问题,并确保 IPv6 连接的可靠性。同时,了解 Happy Eyeballs 的局限性也可以帮助工程师设计和实施更好的网络服务。
原文: APNIC Blog(2025-03-11)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog