这篇文章和上一篇文章类似,仍然是围绕着“如何实现 IPv6 网络到 IPv4 网络的可访问性“进行的,然而与上一篇文章的出发点不同,上一篇文章是从网站/应用作者的角度出发,描述应当怎样主动面向 IPv6-only 用户提供服务,而这篇文章将站在用户自己的角度,探讨作为一个用户应当怎样做才能实现 IPv6 主机到 IPv4-only 网络的可访问性。
在上一篇文章中我们讨论了:如果一个网站只面向 IPv4 网络提供服务,如何让 IPv6-only 的客户端能够访问它,具体来说我们介绍了两种方式:HTTP Message 转发 (layer 7) 和 Stream 转发 (layer 4).
然而,用这种手动的、一次只解决一件事的方式来解决 IPv6-only 网络到 IPv4-only 的可访问性问题是非常低效的。
因为,当你有多个网站,需要做这样的操作的时候,会非常麻烦,这时你有下列选择:
总的来说都很不方便,一定有更省事、更优雅解决方法。
DNS64 描述一个 DNS 服务器如何给一个从未设置过 AAAA 资源记录的域名解析出 IPv6 地址。
DNS64 默认使用一个特别约定好的 IPv6 前缀(也叫 Well Known Prefix,简称 WKP),64:ff9b::/96, 来凭空构造出一个本不存在的 IPv6 解析结果,具体来说,当一个启用了 DNS64 功能的 DNS 服务器在收到一个针对于域名 example.com 的 AAAA 类型的查询请求时:
举例来说,github.com 这个域名原本没有设置 AAAA 记录,换句话说默认情况下你无法查到此域名对应的 IPv6 地址,然后,若你向一个启用了 DNS64 的 DNS 服务器查询 github.com 的 AAAA 记录,你会得到:
0064:ff9b:0000:0000:0000:0000:c01e:ff70
^
IPv4.
这个结果。
因为 0xc0 0x1e 0xff 0x70(也就是 192.30.255.112)正是 github.com 的 A 记录查询结果(是它的 IPv4 网络上的服务器的 IP 地址)。
可以执行以下命令,并且观察标准输出内容,来验证: