2.2.6 DNS 考虑
在网络应用中,客户端一般使用域名来访问服务器端。在测试 IPv6 的环境中,必须使用 IPv6 的地址来访问,这就需要一个支持 IPv6 的 DNS 域名服务器,对于一定的域名返回其 IPv6 的地址。目前可以使用在 Linux 平台的 BIND 9 来搭建这样的 DNS 服务器。但是其配置相对比较复杂,还可以使用一种相对简便的方法。即利用 Linux 和 Windows 平台均支持的 hosts 文件来配对域名与其相应的 IPv6 地址。这需要在客户端的相应 hosts 文件中加入一些 IPv6 地址的配置信息。
在 Linux 平台上,hosts 文件一般位于 /etc/hosts,在此文件中加入如下一行:
2002:9ba:b4e:6::3 www.someipv6site.com |
这样就指定了 www.someipv6site.com 的 IPv6 地址为 2002:9ba:b4e:6::3。而在 Windows 平台上 hosts 文件位于 %WINDIR%\System32\drivers\etc\hosts,其格式与 Linux 平台上相同。
2.3 IPv6 和 IPv4 混合环境兼容性测试
从 IPv4 到 IPv6 的过渡是一个漫长而复杂的过程,不可能在短期内实现完全转换,所以在产品的开发及测试过程中除了考虑 IPv6 网络内的通讯还需要充分考虑现实网络环境中很可能出现的 IPv6 网络和 IPv4 网络的混合环境,这就需要测试应用程序在此环境下的兼容性。 本节将介绍一些需要模拟的情况。
模拟以下3种网络情况首先都需要在现有的 IPv4 局域网环境中选择一台机器作为路由服务器,并按照2.2.3节的描述进行相关配置。这样与该路由连接于同一个 Switch 上的计算机都将会被自动分配一个 IPv6 的地址。如果仍然没有获得 IPv6 的地址,请关闭计算机和路由服务器上的防火墙。然后按照 2.2.4 节中的描述选择一台计算机设置为 ProxyPass。
2.3.1客户端和服务器端均运行于 IPv6 的网络环境
这种情况的验证相对比较简单,只需要在客户端将服务器的地址设为前面配置的 ProxyPass 的 IPv6 的地址便能实现客户端和服务器端 IPv6 到 IPv6 的交互。这就是2.2节介绍的情况。
图 4. 客户端和服务器端均运行于 IPv6 的网络环境
2.3.2 客户端运行于 IPv6 网络,服务端运行于 IPv4 网络
对于客户端和服务器端分别处于 IPv6 和 IPv4 环境的情况,需要在局域网环境中增加代理 (proxy) 作为两者之间的桥梁,该代理与上述路由服务器位于同一个网络之中,因而也拥有 IPv6 的地址和 IPv4 的地址。客户端所设置的目的服务器端地址为 IPv4 的地址,设置的代理地址为该代理的 IPv6 的地址,这样客户通过 IPv6 协议与代理直接进行通讯,而代理接受到客户端所设置的 IPv4 格式的服务器地址后则通过 IPv4 协议与服务端交互,这样便模拟实现了客户端位于 IPv6 网络而服务器端位于 IPv4 网络的情况。
图 5. 客户端运行于 IPv6 网络,服务端运行于 IPv4 网络
2.3.3 客户端运行于 IPv4 网络,服务端运行于 IPv6 网络
模拟位于 IPv4 网络中的客户端与位于 IPv6 网络中的服务器端进行交互需要使用 Proxy 和 ProxyPass 来进行环境搭建。客户端将 ProxyPass 所在的 IPv6 的地址设置为服务器端的地址,将 Proxy 所在的 IPv4 的地址设置为代理的地址,这样客户端与代理之间通过 IPv4 协议进行通讯。代理在获取到客户端所配置的 IPv6 协议的 ProxyPass 地址后将通过 IPv6 协议与 ProxyPass 进行交互。ProxyPass 收到客户端发送的请求后将通过 IPv4 的协议发送给真正的位于 IPv4 网络中的服务器进行处理。这样在客户端就模拟实现了 IPv4 网络到 IPv6 网络的通讯。
图 6. 利用代理将客户端映射到与服务器端同一局域网内
三、总结
在本文中,我们通过使用现有的 IPv4 网络配合 Linux 平台上的 Apache 服务器,达到了模拟 IPv6 的 HTTP/HTTPS 网络环境的目的,从而可以在有限的硬件资源之下开发和测试网络应用软件对 IPv6 的支持。这项技术还可以应用到其他的网络协议之上,只需使用具备类似于 Apache 服务器转发技术的代理服务器。因此这项技术具有一定的通用性。