基础知识:IPv6与IPv4互通的技术

IPv6穿越IPv4技术是为了实现IPv6节点之间的互通,而IPv6/IPv4互通技术是为了实现不同协议之间的互通。也就是说,使IPv6主机可以访问IPv4主机,IPv4主机可以访问IPv6主机。相关的技术有SIIT(Stateless IP/ICMP Translation)和NAT-PT。

1.SIIT

SIIT(Stateless IP/ICMP Translation),即无状态IP/ICMP翻译,技术用于对IP和ICMP报文进行协议转换,这种转换不记录流的状态,只根据单个报文将一个IPv6报文头转换为IPv4报文头,或将IPv4报文头转换为IPv6报文头。SIIT不需要IPv6主机获取一个IPv4地址,但对于SIIT设备来说,每一个IPv6主机有一个虚拟的临时IPv4地址。

在SIIT中,有以下几种地址类型:

IPv4-mapped:地址的形式为"0::FFFF:a.b.c.d",表示不支持IPv6能力的节点,这种地址是IPv4节点在IPv6一侧的映射地址;

IPv4-translated:地址的形式为"0::FFFF:0:a.b.c.d",表示一个支持IPv6的节点。该地址在发送到IPv4侧时需要翻译为IPv4地址。

SIIT技术使用特定的地址空间来完成IPv4地址与IPv6地址的转换。因为SIIT无法进行地址复用,所以地址池的空间限制了IPv6节点的数量。在通信过程中,当SIIT中IPv4地址池中地址分配完时,如果有新的IPv6节点需要同IPv4节点通信,就会因为没有剩余的IPv4地址空间而导致 SIIT无法进行协议转换,造成通信失败。所以SIIT技术所能应用的网络规模不能很大。另外,由于无状态,所以,不能很好地支持应用层数据中内嵌地址的应用。

2.NAT-PT

NAT-PT(Network Address Translation-Protocol Translation),允许只支持IPv6协议的主机与只支持IPv4协议的主机进行互联,一个位于IPv4和IPv6网络边界的设备负责在IPv4 报文与IPv6报文之间进行翻译转换。NAT-PT把SIIT协议转换技术和IPv4网络中动态地址转换技术(NAT)结合在一起,它利用了SIIT技术的工作机制,同时又利用传统的IPv4下的NAT技术来动态地给访问IPv4节点的IPv6节点分配IPv4地址,很好地解决了SIIT技术中全局 IPv4地址池规模有限的问题。同时,通过传输层端口转换技术使多个IPv6主机共用一个IPv4地址。

NAT-PT设备上需要设置IPv4主机的转换规则、IPv6主机的转换规则、IPv6主机使用的IPv4地址。报文经过NAT-PT设备时,根据NAT-PT的转换规则对报文进行协议转换。转换规则可分为如下几种:

IPv4主机的静态规则:一个IPv4主机对应一个虚拟的IPv6地址;

IPv4主机的动态规则:一组IPv4主机的地址如何映射成IPv6地址。通常是指定一个96位的前缀添加在原IPv4地址前面组成一个IPv6地址;

IPv6主机的静态转换规则:一个IPv6主机对应一个虚拟IPv4地址;

IPv6主机的动态转换规则:一组IPv6主机与IPv4地址的对应关系,IPv4地址是多个IPv6主机共享的资源。

静态NAT-PT是由NAT-PT网关静态配置IPv6和IPv4地址绑定关系。当IPv4主机与IPv6主机之间互通时,其报文在经过NAT-PT网关时,由网关根据配置的绑定关系进行转换。不管是IPv6主机还是IPv4主机,如果配置了静态绑定关系,则另外一侧的主机可以主动向其发起连接。

静态配置对那些经常在线,或需要能提供稳定连接的主机比较适合。对于那些不经常使用的主机,可以采用动态配置的方法,这样可以配置简单。

动态NAT-PT的示意图如图7-11所示,IPv4侧主机采用了静态映射,而IPv6侧主机采用动态映射。当PC1向PC2发送报文时,其源地址为 1::3,目的地址为1234::9。此报文在到达NAT-PT网关时,目的地址符合IPv4静态规则,IPv4报文的目的地址为1.2.2.9。而 IPv6报文的源地址符合IPv6主机的动态规则,即从规则的地址池中选择一个未使用的地址,假设是1.4.2.8,作为IPv4报文的源地址。那么转换后的IPv4报文就是源1.4.2.8,目的地址为1.2.2.9。

在动态NAT-PT中,IPv4地址池中的地址可以复用,也就是若干个IPv6地址可以转换为一个IPv4地址,它利用了上层协议(UDP/TCP的端口)映射的方法。

动态NAT-PT改进了静态NAT-PT配置复杂,消耗大量IPv4地址的缺点。由于它采用了上层协议映射的方法,所以只用很少的IPv4地址就可以支持大量的IPv6到IPv4的转换。但是,由于IPv6侧的映射是动态的,如果IPv4侧向IPv6发起连接,由于不知道IPv6主机应用映射后的结果,所以无法直接向IPv6主机连接。这需要结合DNS ALG来实现。

 
(点击查看大图)图7-11  动态NAT-PT示意图

ALG(Application Level Gateway),是应用层网关的含义。有些应用,比如DNS、FTP等,在应用层载荷中包含IP地址、端口等信息,需要对报文中的某些IP地址进行转换。通过DNS ALG,可以做到IPv4与IPv6网络中任一方均可主动发起连接,只须配置一个DNS服务器的静态映射即可,NAT-PT DNS ALG的示意图如图7-12所示。

 
(点击查看大图)图7-12  NAT-PT DNS ALG示意图

IPv4主机要访问IPv6主机,首先向IPv6网络中的DNS发出名字解析请求,报文类型为"A"类查询报文。这个请求到达NAT-PT后,NAT- PT对报文头部按普通报文进行转换。同时,由于DNS报文需要进行ALG处理,把"A"类查询请求转换成"AAAA"或"A6"类型,然后将此报文转发给 IPv6网络内的DNS。

IPv6网络中的DNS服务器收到报文后,查询自己的记录表,解析出主机的IPv6地址是1::3,回应查询结果。此报文被NAT-PT对报文头进行转换后,同时,DNS ALG将其中的DNS应答部分也进行修改,把"AAAA"或"A6"类转成"A"类应答,并从IPv4地址池中分配一个地址1.4.2.6,替换应答中的 IPv6地址1::3,并记录两者之间的映射信息。

IPv4主机在收到此DNS应答之后,就知道了主机的IPv4地址是1.4.2.6。于是发起到主机的连接。由于在NAT-PT中已经记录了IPv4地址1.4.2.6与IPv6地址1::3之间的映射信息,因此可以对地址进行转换。

NAT-PT 不必修改已存在的IPv4网络就可实现内部网络IPv4主机对外部网络IPv6主机的访问,且通过上层协议映射使大量的IPv6主机使用同一个IPv4地址,节省了宝贵的IPv4地址,所以是一个很优秀的IPv4与IPv6网络之间的过渡技术。但NAT-PT也有它的缺点,属于同一会话的请求和响应都要通过同一个NAT-PT设备,对NAT-PT设备的性能要求很高。