从IPv4
过渡到IPv6
就像是打破一个旧世界,开创一个新未来,注定要经历一个长期的过程,但终究会实现。主要对双栈技术、多种隧道技术和协议转换技术进行介绍。
IPv6网络过渡技术简介
IPv6过渡的障碍
目前互联网上还是以IPv4
设备为主,不可能迅速过渡到IPv6
,这主要受制于以下几个方面:
- 网络中仍有些设备尚不支持
IPv6
,短时间内无法全部更换; - 网络的升级换代会中断现有的业务;
- 有些传统的应用基于
IPv4
开发,不支持IPv6
; - 缺乏技术人才,很多技术人员缺乏足够的
IPv6
知识; IPv6
安全相关的规范、等保测评等成熟度不够;- 主观惰性,得过且过的思想。
针对上述存在问题:
-
目前的操作系统基本支持
IPv6
,近几年的三层及三层以上的网络设备(比如三层交换机、路由器、防火墙等)基本支持IPv6
。网络中使用最多的是二层交换机,当前的新旧二层交换机都支持IPv6
。这样看来,设备对IPv6
的制约有限。 -
合理的网络规划,比如采用双栈同时支持
IPv4
和IPv6
访问,或者使用NAT64
临时转换等,这样业务中断的时间完全可控。 -
针对应用不支持
IPv6
的情况(这一点是最难解决的),可以采用多种方案:修改应用程序代码或重新开发,使之支持IPv6
(尽管费时费力,但一劳永逸);采用NAT-PT(Network Address Translation-Protocol Translation
,网络地址转换—协议转换)技术,通过硬件或软件实现IPv4
和IPv6
地址之间的转换(应用不需做任何调整,但本质上仍是基于IPv4
,将来终将被淘汰)。 -
安全设备厂家也在加紧
IPv6
相关产品的研制和开发,相关的安全产品和安全规范也正在被不断完善。 -
加强学习,做好知识储备。
IPv6过渡技术概述
IPv6
过渡技术大体上可以分为三类:
- 双栈技术;
- 隧道技术;
- 协议转换技术。
-
双栈技术
双栈技术(dual-stack
)是使网络中的节点同时支持IPv4
和IPv6
协议栈的技术,其中源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。
连接双栈网络的接口必须同时配置IPv4
地址和IPv6
地址。
双栈技术是IPv6
过渡技术中应用最广泛的一种,隧道技术和协议转换技术的实现也需要双栈技术的支持。 -
隧道技术
隧道技术(tunnel
)是一种封装技术。
它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在自身的报文中,然后在网络中传输。
隧道是一个虚拟的点对点连接。
一个隧道提供了一条使封装的数据报文能够传输的通路,并且在一个隧道的两端可以分别对数据报文进行封装及解封装。
隧道技术就是指包括数据封装、传输和解封装在内的全过程。
隧道技术是IPv4
向IPv6
过渡的一个重要手段。 -
协议转换技术
协议转换技术也称为地址转换技术,在以往的IPv4
网络中,可通过NAT
技术把内网中的私有IPv4
地址转换成公网IPv4
地址。
正是因为NAT
使用得太成功,导致IPv4
地址短缺显得没那么迫切,由此延缓了IPv6
的实现步伐。
网络地址转换-协议转换(Network Address Translation-Protocol Translation,NAT-PT
),这是一种可以让纯IPv6
网络和纯IPv4
网络相互通信的过渡机制。
NAT-PT
主要是利用NAT
进行IPv4
地址和IPv6
地址的相互转换。
通过使用NAT-PT
,用户无须对现有的IPv4
网络进行任何改变,就能实现IPv6
网络和IPv4
网络的相互通信。
双栈技术
双栈技术是IPv4
向IPv6
过渡时使用的一种常见技术。
网络中的节点可同时支持IPv4
和IPv6
协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。
双栈可以在一个单一的设备上实现,也可以存在一个双栈骨干网。
对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6
协议栈,连接双栈网络的接口必须同时配置IPv4
地址和IPv6
地址。
隧道技术
隧道技术是一种封装技术,可以使用隧道技术把分隔的IPv6
或IPv4
孤岛连通起来。多种隧道技术:
-
通用路由封装(
Generic Routing Encapsulation,GRE
)隧道; -
IPv6 in IPv4
手动隧道; -
IPv4
兼容IPv6
自动隧道; -
6to4
隧道; -
ISATAP
隧道; -
6PE
; -
6over4
。
GRE隧道
-
GRE over IPv4
在IPv6
发展的初期阶段,存在被IPv4
互联网分隔的IPv6
孤岛。可以借助于GRE
隧道来连通IPv6
孤岛,如下图所示: -
GRE
隧道互连IPv6
孤岛
在下图中,R1
和R2
之间是纯IPv6
网络,R2、R3
和R4
之间是纯IPv4
网络,R4
和R5
之间是纯IPv6
网络。
R1
和R5
是纯IPv6
路由器,R3
是纯IPv4
路由器,R2
和R4
是双栈路由器。
在R2
和R4
之间建立一条GRE
隧道,R1
和R5
之间的纯IPv6
流量被封装在IPv4
协议中,数据包流经路由器R3
时,R3
只查看最外层的IPv4
报头,并转发数据包到下一跳路由器,由此实现了IPv6
流量跨IPv4
网络的传输。GRE
隧道工作原理编号1是帧的基本信息描述,比如帧的字节数。
编号2是TCP/IP
参考模型的第一层,即网络访问层。这里是Ethernet Ⅱ
(以太网类型Ⅱ)的帧,因为是以太网,所以会有数据帧的源和目标MAC
地址。
编号3是TCP/IP
参考模型的第二层,即网络层,这里的源和目标IP
地址是隧道的两端IP地址。
编号4是GRE
协议。
编号5是IPv6
数据报头,源IPv6
地址是R1
的地址,目标IPv6
地址是R5
的地址。
编号6是ICMPv6
的报文。对路由器
R3
来说,把GRE
报头 +IPv6
报头 +IPv6
有效数据作为IPv4
的有效数据,只要根据IPv4
报头就可以实现正常的数据包转发了。路由器
R4
收到数据包后将其解封装,得到IPv6
报头+IPv6
有效数据。
由于R4
是双栈路由器,因此会根据IPv6
报头转发数据包。
R5
向R1
返回数据包的过程也是按照隧道起点封装-->IPv4
网络中的路由-->隧道终点解封装进行的。 -
GRE
隧道的特点
GRE
隧道通用性好,易于理解。但GRE
隧道是手动隧道,每个隧道都需要手动配置。试想一下,如果一个IPv6
孤岛要与很多IPv6
孤岛相连,就需要手动建立多条隧道。
如果多个IPv6
孤岛彼此间都要互连,那么管理员配置和维护GRE
隧道的难0度将陡增。 -
GRE OVER IPv6
在IPv6
发展的后期阶段,需要在IPv6
互联网上建立隧道来传输IPv4
的流量,以解决IPv4
孤岛问题,如下图所示: -
GRE
隧道互连IPv4
孤岛
R1
和R2
之间是纯IPv4
网络,R2、R3
和R4
之间是纯IPv6
网络,R4
和R5
之间是纯IPv4网络。
R1
和R5
是纯IPv4
路由器,R3
是纯IPv6
路由器,R2
和R4
是双栈路由器。
在R2
和R4之
间建立一条GRE
隧道,R1
和R5
之间的纯IPv4
流量被封装在IPv6
协议中,数据包流经路由器R3
时,R3
只查看最外层的IPv6
报头,并转发数据包到下一跳路由器,由此实现了IPv4
流量跨IPv6
网络的传输。对路由器
R3
来说,把GRE
报头 +IPv4
报头 +IPv4
有效数据作为IPv6
的有效数据,只要根据IPv6
报头就可以实现正常的数据包转发了,如下图所示:
IPv4客户端使用L2TP VPN访问IPv6网络
-
windows
配置l2tp
拨号客户端 -
华三
F1000 L2TP
服务端配置interface Virtual-Template1 ppp authentication-mode chap ipv6 dhcp select server ipv6 address xxxx::1/64 ipv6 nd autoconfig other-flag //设置了该标志位,则主机可通过有状态自动配置(dhcpv6)获得除了ipv6地址外的其他配置信息如dns undo ipv6 nd ra halt //清除抑制,则主机通过无状态自动配置(路由器ra报文)获得ipv6地址 ipv6 dhcp pool 1 network xxxx::/64 dns-server 240E:9:0:100:202:103:224:68 dns-server 240E:9:2000:100:202:103:225:68 gateway-list 240E:650:6200:600::1 local-user l2tp class network password simple xxx service-type ppp authorization-attribute user-role network-operator l2tp-group 1 mode lns allow l2tp virtual-template 1 undo tunnel authentication l2tp enable
最后记得放
ipv6
的安全策略
协议转换技术
前面介绍的隧道技术归根结底是双栈技术,主要用于实现分离的IPv6
或IPv4
网络之间的互通。
协议转换技术用来实现不同网络间的访问,比如在无须配置另外一种协议的情况下,让客户端使用IPv4
来访问IPv6
网络,反之亦然。
采用协议转换实现IPv4
到IPv6
过渡的优点是不需要进行IPv4、IPv6
节点的升级改造,缺点是用来实现IPv4
节点和IPv6
节点相互访问的方法比较复杂,网络设备进行协议转换、地址转换所需的开销较大,一般在其他互通方式无法使用的情况下使用。
NAT-PT转换技术
NAT-PT
由SIIT
(Stateless IP/ICMP Translation
,无状态IP/ICMP
转换)技术和动态地址转换(NAT
)技术结合和演进而来,SIIT
提供IPv4
和IPv6
之间的一对一的映射转换,NAT-PT
支持在SIIT
基础上实现多对一或多对多的地址转换。
NAT-PT
分为静态和动态两种。
-
静态
NAT-PT
静态NAT-PT
提供IPv6
地址和IPv4
地址之间的一对一的映射,一般用于需要提供稳定服务的场合。
IPv6
单协议网络内的节点要访问IPv4
单协议网络内的每一个IPv4
地址,都必须先在NAT-PT
设备中配置。在
NAT-PT
设备中,把要与IPv6
网络通信的IPv4
地址映射成IPv6
地址;把要与IPv4
网络通信的IPv6
地址映射成IPv4
地址。
比如,当IPv4
设备访问IPv6
网络时,它访问的是IPv6
映射后的IPv4
地址。
IPv4
数据包发往NAT-PT
设备后,NAT-PT
设备根据映射表的配置,把源IPv4
和目的IPv4
地址转换成对应的IPv6
地址,然后将数据包发往目的IPv6
设备。
IPv6
设备根据源IPv6
地址进行回应,IPv6
数据包被发往NAT-PT
设备,NAT-PT
设备再把源和目的IPv6
地址转换成相应的IPv4
地址,返回到IPv4
设备。NAT-PT
并不是转换所有IPv6
数据包的地址,而是只转换满足特定前缀的IPv6
地址,转换方法是使用命令ipv6 nat prefix
,后面跟上要转换的IPv6
前缀和固定长度96,比如ipv6 nat prefix 2001:2::/96
。 -
动态
NAT-PT
在动态NAT-PT
中,IPv6
到IPv4
的地址映射是动态生成的、可变的。
NAT-PT
网关定义了IPv4
地址池,它从地址池中取出一个地址来替换IPv6
报文的源地址,从而完成从IPv6
地址到IPv4
地址的转换。
动态NAT-PT
支持将多个IPv6
地址映射为一个IPv4
地址,节省了IPv4
地址空间。 -
动态
NAT-PT
优缺点
NAT-PT
不必修改现有网络即可实现IPv4
与IPv6
网络之间的互通。
在NAPT-PT
中,仅使用一个IPv4
地址,即可实现多个IPv6
主机与IPv4
网络的通信,从而解决IPv4
地址没有IPv6
地址多的问题。
NAT-PT
原理与IPv4
中的NAT
原理类似,是一种非常好的IPv4
向IPv6
过渡技术。
NAT-PT
的缺点是:属于同一会话的请求和响应都必须通过同一NAT-PT
设备才能进行转换,不适合多出口设备的环境;
不能转换IPv4
报头的可选项部分;由于地址在传输过程中发生了变化,端到端的安全性很难实现。
NAT64/DNS64转换技术
NAT-PT
通过IPv6
与IPv4
的网络地址与协议转换,实现了IPv6
网络与IPv4
网络的互联互通。
但NAT-PT
在实际的网络应用中面临各种缺陷。
为了解决NAT-PT
中的各种缺陷,同时实现IPv6
与IPv4
之间的网络地址与协议转换技术,IETF
重新设计了新的解决方案:NAT64
与DNS64
技术。
NAT64
是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6
网络侧发起连接来访问IPv4
网络侧的资源。
NAT64
也支持手动配置静态映射关系,让IPv4
网络主动发起去往IPv6
网络的连接。
NAT64
可实现TCP、UDP、ICMP
协议下的IPv6
与IPv4
网络地址与协议转换。
当IPv6
客户端进行DNS
查询时,如果没有得到IPv6 DNS
服务器的响应,可使用DNS64
向IPv4 DNS
服务器发起DNS
请求,并将从IPv4 DNS
中返回的A
记录(IPv4
地址)合成到AAAA
记录(IPv6
地址)中,然后将合成的AAAA
记录返回到IPv6
客户端。
NAT64
执行IPv4
与IPv6
有状态的地址与协议转换,DNS64
用来解析域名地址,两者协同工作,不需要在IPv6
客户端或IPv4
服务器端进行任何修改。
NAT64
和DNS64
工作流程如下:
-
IPv6
主机(这里以Win10-2
为例)发起到DNS
服务器(IPv6
地址是2001:1::1
,也就是DNS
代理设备)的IPv6
域名解析请求,解析域名为www.test.com
-
DNS
代理设备触发到DNS
服务器(218.1.1.2)的IPv6
地址查询。若能查询到则返回域名对应的IPv6
地址;若查询不到,则返回空。这里的DNS
服务器(218.1.1.2)上只有A
记录,没有AAAA
记录,所以返回空。 -
DNS
代理再次触发到DNS
服务器(218.1.1.2)的IPv4
地址查询。DNS
服务器返回的IPv4
地址是218.1.1.3,这个IPv4
的值会返回给Win10-2
-
DNS
代理设备又配置了DNS64
功能,用配置的前缀2001:2::/96
再加32位的IPv4
地址(218.1.1.3,转化成十六进制是da01:103
)组合成IPv6
地址,即2001:2::da01:103
,DNS
代理设备把这个IPv6
地址也返回给Win10-2
主机 -
Win10-2
主机实际上得到了IPv4
地址218.1.1.3
和IPv6
地址2001:2::da01:103
,由于没有配置IPv4
地址,ping
显示出来的是IPv6
地址(即使配置了IPv4
地址,因默认的IPv6
优先,ping
显示的仍然是IPv6
地址,可以使用nslookup
命令验证,实际上返回了IPv4
和IPv6
的地址。如果DNS
代理设备中没有配置name-server 218.1.1.2
,则不会返回IPv4
的地址)。Win10-2
发起目的地址为2001:2::da01:103
的IPv6
数据包,这个数据包被转发给NAT64
设备 -
NAT64
执行地址转换和协议转换,目的地址转换为218.1.1.3
,源地址转换为218.1.1.1
。该数据包在IPv4
网络内被路由到目的地(218.1.1.3
) -
IPv4
数据包返回,目的地址为218.1.1.1。该数据包返回到NAT64
设备 -
NAT64
设备根据已有的转换记录表进行转换,目的地址转换为Win10-2
的IPv6
地址,源地址为加了IPv6
前缀的IPv4
地址2001:2::da01:103
-
Win10-2
收到www.test.com
返回的数据包,至此数据往返通信成功。
过渡技术选择
每种过渡技术都有各自的优缺点,因此需结合实际需求在不同的场景下选择不同的过渡技术:
-
对于新建业务系统的场景,推荐采用双栈技术,它同时支持
IPv4
和IPv6
; -
对于多个孤立
IPv6
网络互通的场景,如多个IPv6
数据中心的互联,可以采用隧道技术,让IPv6
数据封装到IPv4
网络上传输,以减少部署的成本和压力; -
对于已经上线的业务系统,若不方便改造成双栈,可以采用地址协议转换技术。
留言