我很高兴我的新 Linode 托管服务器也提供 IPv4 和 IPv6 地址。
当使用 Linode 作为 NS 时,默认 DNS 记录会同时显示A
和AAAA
记录
example.com 86400 IN A 203.0.113.4
example.com 86400 IN AAAA 2001:db8::ff00:1111:2222:3333
这很好,v4 和 v6 都提供 Web 应用程序。
但是,我意识到许多 ISP(至少在我所在的地方)尚未提供 IPv6 连接。
因此,来自此类区域的浏览器通过 IPv6 进行的访问将成功执行 AAAA (v6) 请求。但是,使用该 v6 地址的 http(s) 连接将失败。
我是否有理由担心最近的浏览器会发生这种情况?
我是否应该从 DNS 区域中删除 IPv6 地址以确保仅 IPv4 访问?
--
注意:这个问题与这个重点关注 DNS 解析问题
答案1
您问到的问题是 2009-2010 年左右的主要问题。它可能将 IPv6 的采用推迟了几年。没有人愿意先采用,因为他们担心自己的网站可能会显得不稳定,用户会转向不支持 IPv6 的竞争网站。
许多公司努力解决这些问题。可以说,快乐眼球@HåkanLindqvist 链接的方法对解决问题做出了最重要的贡献。
2011 年,人们确信问题已经得到解决,各大网站进行了一次协调的 24 小时测试,称为世界 IPv6 日协调测试运行的目的是确保仍然遇到问题的用户不会错误地得出结论,认为问题出在某个特定站点而不是他们自己的连接上。
结果非常成功,一年后,各大网站都永久启用了 IPv6。全球 IPv6 发布。
我们已接近临界点,届时 NAT 造成的问题将比 IPv6 故障造成的问题更大。目前,两者的规模都还很小,因此很难衡量我们是否已经越过了临界点。
我的建议是,一旦您拥有可用的原生双栈连接,就立即配置双栈 DNS 记录。您越早开始,您就有越长的时间来解决它可能存在的任何问题。您希望它在真正成为关键任务时保持稳定。
不要在 6to4 或 Teredo 地址上部署服务器,如果这些是您在服务器上获取 IPv6 的唯一选择,我建议您切换到更好的提供商。
但是,如果您的服务器有公共 IPv4 地址,我建议您直接在自己的服务器上配置 6to4 和 Teredo 中继。部署这些中继将为使用 6to4 或 Teredo 的客户端提供更可靠的服务器连接。
偶尔仍会有客户端的 IPv6 连接中断。但在过去两年中,这些客户端在访问主要网站时会遇到问题,因此您可以期待它们以某种方式自行解决问题。他们不太可能只看到您的网站出现问题。
不过,您确实需要注意自己网站的 IPv6 连接。如果您的网站在 IPv6 连接上出现故障,可能会影响到一小部分拥有正常 IPv6 连接和浏览器的用户。这些人只会看到您的网站出现问题,但其他一切都会正常。
虽然 IPv6 目前的用户较少,但这并不意味着它可以在比 IPv4 更少监控的情况下安全部署。如果非要说有什么不同的话,我认为你需要对 IPv6 连接进行更多监控,因为你更有可能不会注意到任何问题。
答案2
对其他答案和评论添加一些内容:
我意识到许多 ISP(至少在我所在的地方)尚未提供 IPv6 连接。因此,从此类区域通过 IPv6 从浏览器访问将成功执行 AAAA (v6) 请求。但是使用该 v6 地址的 http(s) 连接将失败。
不,它(几乎)永远不会尝试建立 IPv6 连接。系统知道它没有 IPv6 连接。getaddrinfo()
不会向应用程序返回任何 IPv6 地址。(它AAAA
无论如何都会进行查询的原因是网站可以拥有AAAA
真正有效的记录,例如本地主机 IP 地址::1
。)
这只是极小部分系统的问题:那些错误地认为自己拥有 IPv6 连接,并且运行的是几年前的浏览器。如上所述,由于世界 IPv6 日和世界 IPv6 发布,大多数问题已经得到解决,因为 Facebook 和 Google 出现故障时,人们会流血不止,而且浏览器已经实现了 Happy Eyeballs,因此连接失败仅会耗费几百毫秒的时间。