本博文将详细为您介绍NAT64如何与DNS64搭配完成状态地址转换,以及使用时需要注意的一些事项。
在IPv6演进过程中,网络侧的IPv6 Ready程度较高,但是业务侧IPv6化还不乐观,因此解决IPv6网络与IPv4网络的互访,已经成为目前网络建设者关注的重点,特别是IPv6用户访问IPv4服务器的场景。
前面介绍的NAT444和DS-lite技术都是为实现IPv4用户访问IPv4业务、IPv6用户访问IPv6业务服务的,不解决IPv4与IPv6互访需求。NAT64则是专为IPv4与IPv6互访而产生,可以与NAT444或者DS-lite结合使用来满足多种业务应用。
NAT64+DNS64是有状态地址转换协议(有状态和无状态的地址转换协议,在后期来单独介绍),支持IPv6网络侧用户发起访问IPv4网络侧服务器资源,同时,NAT64也支持通过手工配置静态映射关系,实现IPv4网络侧用户发起访问IPv6网络资源。其中NAT64执行IPv4-IPv6的有状态地址转换和协议转化,DNS64实现域名地址解析。
NAT64+DNS64的典型应用场景有三种。
应用一:IPv4 IDC/ISP站点为IPv6用户提供业务。
应用二:运营网络内IPv6用户与IPv4用户互访业务。
应用三:IPv6-only IDC/ISP站点为IPv4用户提供业务。
其中应用一是NAT64最主要的业务场景,应用三则是比较超前的业务场景。
对于IPv6用户访问IPv4 IDC/ISP的应用场景,具体的业务流程如下:
1.IPv6主机发起example.com的AAAA域名解析到DNS64(主机配置的DNS地址是DNS64)
2.DNS64触发AAAA到DNS AAAA中查询;
3.DNS AAAA返回NULL的信息到DNS64;
4.DNS64然后触发A的申请到DNS A中查询;
5.DNS A返回example.com的A记录(192.0.2.1);
6.DNS64合成IPv6地址(2001:db8:cdfe::192.0.2.1),返回AAAA response给IPv6主机;
7.IPv6主机发起目的地址为2001:db8:cdfe::192.0.2.1的IPv6数据包;由于NAT64在IPv6域内通告配置的IPv6 Prefix,因此这个数据包转发到NAT64设备上;
8.NAT64执行地址转换和协议转换,目的地址转换为192.0.2.1,源地址根据地址状态转换(2001:db8::1,1500)->(203.0.113.1,2000);在IPv4域内路由到IPv4 server;
9.数据包返回,目的地址和端口为203.0.113.1,2000;
10.NAT64根据已有记录进行转换,目的地址转换为2001:db8::1,源地址为加了IPv6前缀的IPv4 server地址2001:db8:cdfe::192.0.2.1,发送到IPv6主机;
根据业务流程可以清楚的了解到,DNS64是将IPv4服务器的IPv4地址嵌入到IPv6地址,这个过程就叫做合成。(RFC6052给出了IPv4-embedded IPv6address的格式)。NAT64在翻译IPv6地址到IPv4地址时,对于目的地址(IPv4服务器的地址,是内嵌IPv4的IPv6地址)按照规则直接转换为IPv4地址,这个过程是无状态的地址转换,对于源地址(IPv6用户地址)通过NAT64转换为公网IPv4地址(通常是从配置的IPv4地址池中随机选择一个可用的IPv4地址和端口号),这个过程是有状态的地址转换。NAT64设备同时记录这个状态信息,用于数据流返回时的地址转换。
在NAT64+DNS64部署的时候需要特别注意,DNS64地址合成所使用的IPv6-prefix要和NAT64配置的IPv6-prefix一致。如果网络中存在多台NAT64设备时,每台NAT64配置的IPv6-prefix是不同的,DNS64可以通过不同的IPv6-prefix合成IPv6地址来控制NAT64间的业务负载(前提是能够保障NAT64可以实现IPv4服务器的互通)。
另外,NAT64设备需要同时向IPv4网络和IPv6网络发布路由。NAT64与IPv6网络连接的端口配置IPv6地址,向IPv6网络发布配置的IPv6-prefix路由;如果NAT64配置了多个IPv6-prefix,需要选择合适的汇总方式发布IPv6路由;NAT64与IPv4网络连接的端口配置IPv4地址,向IPv4网络发布配置的IPv4地址池路由。
NAT64设备通常部署在网络边界,比如IPv6城域网与IPv4城域网的互联互通层次以及IPv4 IDC中心的出口路由器层次。