内容目录

IPv4过渡到IPv6就像是打破一个旧世界,开创一个新未来,注定要经历一个长期的过程,但终究会实现。主要对双栈技术、多种隧道技术和协议转换技术进行介绍。

IPv6网络过渡技术简介

IPv6过渡的障碍

目前互联网上还是以IPv4设备为主,不可能迅速过渡到IPv6,这主要受制于以下几个方面:

  • 网络中仍有些设备尚不支持IPv6,短时间内无法全部更换;
  • 网络的升级换代会中断现有的业务;
  • 有些传统的应用基于IPv4开发,不支持IPv6
  • 缺乏技术人才,很多技术人员缺乏足够的IPv6知识;
  • IPv6安全相关的规范、等保测评等成熟度不够;
  • 主观惰性,得过且过的思想。

针对上述存在问题:

  • 目前的操作系统基本支持IPv6,近几年的三层及三层以上的网络设备(比如三层交换机、路由器、防火墙等)基本支持IPv6。网络中使用最多的是二层交换机,当前的新旧二层交换机都支持IPv6。这样看来,设备对IPv6的制约有限。

  • 合理的网络规划,比如采用双栈同时支持IPv4IPv6访问,或者使用NAT64临时转换等,这样业务中断的时间完全可控。

  • 针对应用不支持IPv6的情况(这一点是最难解决的),可以采用多种方案:修改应用程序代码或重新开发,使之支持IPv6(尽管费时费力,但一劳永逸);采用NAT-PT(Network Address Translation-Protocol Translation,网络地址转换—协议转换)技术,通过硬件或软件实现IPv4IPv6地址之间的转换(应用不需做任何调整,但本质上仍是基于IPv4,将来终将被淘汰)。

  • 安全设备厂家也在加紧IPv6相关产品的研制和开发,相关的安全产品和安全规范也正在被不断完善。

  • 加强学习,做好知识储备。

IPv6过渡技术概述

IPv6过渡技术大体上可以分为三类:

  • 双栈技术;
  • 隧道技术;
  • 协议转换技术。
  1. 双栈技术
    双栈技术(dual-stack)是使网络中的节点同时支持IPv4IPv6协议栈的技术,其中源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。
    连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。
    双栈技术是IPv6过渡技术中应用最广泛的一种,隧道技术和协议转换技术的实现也需要双栈技术的支持。

  2. 隧道技术
    隧道技术(tunnel)是一种封装技术。
    它利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在自身的报文中,然后在网络中传输。
    隧道是一个虚拟的点对点连接。
    一个隧道提供了一条使封装的数据报文能够传输的通路,并且在一个隧道的两端可以分别对数据报文进行封装及解封装。
    隧道技术就是指包括数据封装、传输和解封装在内的全过程。
    隧道技术是IPv4IPv6过渡的一个重要手段。

  3. 协议转换技术
    协议转换技术也称为地址转换技术,在以往的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网络的相互通信。

双栈技术

双栈技术是IPv4IPv6过渡时使用的一种常见技术。
网络中的节点可同时支持IPv4IPv6协议栈,源节点根据目的节点的不同选用不同的协议栈,而网络设备根据报文的协议类型选择不同的协议栈进行处理和转发。
双栈可以在一个单一的设备上实现,也可以存在一个双栈骨干网。
对于双栈骨干网,其中的所有设备必须同时支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址。

隧道技术

隧道技术是一种封装技术,可以使用隧道技术把分隔的IPv6IPv4孤岛连通起来。多种隧道技术:

  • 通用路由封装(Generic Routing Encapsulation,GRE)隧道;

  • IPv6 in IPv4手动隧道;

  • IPv4兼容IPv6自动隧道;

  • 6to4隧道;

  • ISATAP隧道;

  • 6PE

  • 6over4

GRE隧道

  1. GRE over IPv4
    IPv6发展的初期阶段,存在被IPv4互联网分隔的IPv6孤岛。可以借助于GRE隧道来连通IPv6孤岛,如下图所示:

    file

  2. GRE隧道互连IPv6孤岛
    在下图中,R1R2之间是纯IPv6网络,R2、R3R4之间是纯IPv4网络,R4R5之间是纯IPv6网络。
    R1R5是纯IPv6路由器,R3是纯IPv4路由器,R2R4是双栈路由器。
    R2R4之间建立一条GRE隧道,R1R5之间的纯IPv6流量被封装在IPv4协议中,数据包流经路由器R3时,R3只查看最外层的IPv4报头,并转发数据包到下一跳路由器,由此实现了IPv6流量跨IPv4网络的传输。

    file

    GRE隧道工作原理

    file

    编号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报头就可以实现正常的数据包转发了。

    file

    路由器R4收到数据包后将其解封装,得到IPv6报头+IPv6有效数据。
    由于R4是双栈路由器,因此会根据IPv6报头转发数据包。
    R5R1返回数据包的过程也是按照隧道起点封装-->IPv4网络中的路由-->隧道终点解封装进行的。

  3. GRE隧道的特点
    GRE隧道通用性好,易于理解。但GRE隧道是手动隧道,每个隧道都需要手动配置。试想一下,如果一个IPv6孤岛要与很多IPv6孤岛相连,就需要手动建立多条隧道。
    如果多个IPv6孤岛彼此间都要互连,那么管理员配置和维护GRE隧道的难0度将陡增。

  4. GRE OVER IPv6
    IPv6发展的后期阶段,需要在IPv6互联网上建立隧道来传输IPv4的流量,以解决IPv4孤岛问题,如下图所示:

    file

  5. GRE隧道互连IPv4孤岛
    R1R2之间是纯IPv4网络,R2、R3R4之间是纯IPv6网络,R4R5之间是纯IPv4网络。
    R1R5是纯IPv4路由器,R3是纯IPv6路由器,R2R4是双栈路由器。
    R2R4之间建立一条GRE隧道,R1R5之间的纯IPv4流量被封装在IPv6协议中,数据包流经路由器R3时,R3只查看最外层的IPv6报头,并转发数据包到下一跳路由器,由此实现了IPv4流量跨IPv6网络的传输。

    file

    对路由器R3来说,把GRE报头 + IPv4报头 + IPv4有效数据作为IPv6的有效数据,只要根据IPv6报头就可以实现正常的数据包转发了,如下图所示:

    file

IPv4客户端使用L2TP VPN访问IPv6网络

  1. windows配置l2tp拨号客户端

    file

    file

    file

    file

  2. 华三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的安全策略

协议转换技术

前面介绍的隧道技术归根结底是双栈技术,主要用于实现分离的IPv6IPv4网络之间的互通。
协议转换技术用来实现不同网络间的访问,比如在无须配置另外一种协议的情况下,让客户端使用IPv4来访问IPv6网络,反之亦然。
采用协议转换实现IPv4IPv6过渡的优点是不需要进行IPv4、IPv6节点的升级改造,缺点是用来实现IPv4节点和IPv6节点相互访问的方法比较复杂,网络设备进行协议转换、地址转换所需的开销较大,一般在其他互通方式无法使用的情况下使用。

NAT-PT转换技术

NAT-PTSIITStateless IP/ICMP Translation,无状态IP/ICMP转换)技术和动态地址转换(NAT)技术结合和演进而来,SIIT提供IPv4IPv6之间的一对一的映射转换,NAT-PT支持在SIIT基础上实现多对一或多对多的地址转换。
NAT-PT分为静态和动态两种。

  1. 静态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

  2. 动态NAT-PT
    在动态NAT-PT中,IPv6IPv4的地址映射是动态生成的、可变的。
    NAT-PT网关定义了IPv4地址池,它从地址池中取出一个地址来替换IPv6报文的源地址,从而完成从IPv6地址到IPv4地址的转换。
    动态NAT-PT支持将多个IPv6地址映射为一个IPv4地址,节省了IPv4地址空间。

  3. 动态NAT-PT优缺点
    NAT-PT不必修改现有网络即可实现IPv4IPv6网络之间的互通。
    NAPT-PT中,仅使用一个IPv4地址,即可实现多个IPv6主机与IPv4网络的通信,从而解决IPv4地址没有IPv6地址多的问题。
    NAT-PT原理与IPv4中的NAT原理类似,是一种非常好的IPv4IPv6过渡技术。
    NAT-PT的缺点是:属于同一会话的请求和响应都必须通过同一NAT-PT设备才能进行转换,不适合多出口设备的环境;
    不能转换IPv4报头的可选项部分;由于地址在传输过程中发生了变化,端到端的安全性很难实现。

NAT64/DNS64转换技术

NAT-PT通过IPv6IPv4的网络地址与协议转换,实现了IPv6网络与IPv4网络的互联互通。
NAT-PT在实际的网络应用中面临各种缺陷。
为了解决NAT-PT中的各种缺陷,同时实现IPv6IPv4之间的网络地址与协议转换技术,IETF重新设计了新的解决方案:NAT64DNS64技术。

NAT64是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧发起连接来访问IPv4网络侧的资源。
NAT64也支持手动配置静态映射关系,让IPv4网络主动发起去往IPv6网络的连接。
NAT64可实现TCP、UDP、ICMP协议下的IPv6IPv4网络地址与协议转换。

IPv6客户端进行DNS查询时,如果没有得到IPv6 DNS服务器的响应,可使用DNS64IPv4 DNS服务器发起DNS请求,并将从IPv4 DNS中返回的A记录(IPv4地址)合成到AAAA记录(IPv6地址)中,然后将合成的AAAA记录返回到IPv6客户端。

NAT64执行IPv4IPv6有状态的地址与协议转换,DNS64用来解析域名地址,两者协同工作,不需要在IPv6客户端或IPv4服务器端进行任何修改。

NAT64DNS64工作流程如下:

  • 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:103DNS代理设备把这个IPv6地址也返回给Win10-2主机

  • Win10-2主机实际上得到了IPv4地址218.1.1.3IPv6地址2001:2::da01:103,由于没有配置IPv4地址,ping显示出来的是IPv6地址(即使配置了IPv4地址,因默认的IPv6优先,ping显示的仍然是IPv6地址,可以使用nslookup命令验证,实际上返回了IPv4IPv6的地址。如果DNS代理设备中没有配置name-server 218.1.1.2,则不会返回IPv4的地址)。Win10-2发起目的地址为2001:2::da01:103IPv6数据包,这个数据包被转发给NAT64设备

  • NAT64执行地址转换和协议转换,目的地址转换为218.1.1.3,源地址转换为218.1.1.1。该数据包在IPv4网络内被路由到目的地(218.1.1.3

  • IPv4数据包返回,目的地址为218.1.1.1。该数据包返回到NAT64设备

  • NAT64设备根据已有的转换记录表进行转换,目的地址转换为Win10-2IPv6地址,源地址为加了IPv6前缀的IPv4地址2001:2::da01:103

  • Win10-2收到www.test.com返回的数据包,至此数据往返通信成功。

过渡技术选择

每种过渡技术都有各自的优缺点,因此需结合实际需求在不同的场景下选择不同的过渡技术:

  • 对于新建业务系统的场景,推荐采用双栈技术,它同时支持IPv4IPv6

  • 对于多个孤立IPv6网络互通的场景,如多个IPv6数据中心的互联,可以采用隧道技术,让IPv6数据封装到IPv4网络上传输,以减少部署的成本和压力;

  • 对于已经上线的业务系统,若不方便改造成双栈,可以采用地址协议转换技术。

最后修改日期: 2024年7月21日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。