IPv6技术精要:双栈和隧道技术详解
IPv6技术精要:双栈和隧道技术详解
IPv6的部署是一个渐进的过程,在这个过程中,IPv4和IPv6需要长期共存。双栈技术和隧道技术是实现这种共存的重要手段。本文将详细介绍这两种技术的基本概念、应用场景和配置方法。
17.1 双栈技术
17.1.1 基本概念
- 定义
双栈技术允许IPv4和IPv6共存于同一个网络。双栈设备可以是同时配置了IPv4协议栈和IPv6协议栈的主机、服务器或路由器。
一台设备上,同时运行IPv4和IPv6。IPv4包括IPv4地址、ARP、IPv4 ICMP和IPv4路由协议。对于IPv6来说,支持的含义不仅仅是拥有更长地址的网络报头,还包括IPv6全局单播地址、链路本地地址以及ICMPv6操作(包括SLAAC、DAD),IPv6 EIGRP和OSPFv3路由协议等。
双栈设备与IPv4设备进行通信时,其行为特性就像纯IPv4设备。与IPv6设备进行通信时,其行为特性又像纯IPv6设备。
- 应用
虽然应用同时支持IPv4和IPv6,但是设备并不会随机选择将要使用的协议。大多数情况下,应用程序默认选择的是IPv6,不过具体选择取决于操作系统。然后,设备就利用选定的IP协议栈连接源端。
- 以URL语法表示的IPv6地址格式
在某些场合下(如调试或通过浏览器接口配置设备),需要在浏览器内输入IP地址,如可以输入http://192.168.1.1来连接并配置家用路由器。
如何使用IPv6地址来完成上述工作呢?IPv6地址中包含了冒号(:),不能与URL相兼容,浏览器会将冒号解析为端口号。例如http://192.168.1.1:5000
将IPv6地址放置在括号中
17.1.2 配置双栈网络
路由器配置IPv4地址和OSPFv2,IPv6地址和OSPFv3
17.2 隧道技术
17.2.1 基本概念
另一种IPv4到IPv6的过渡机制是隧道技术。与其他过渡技术相似,隧道技术是全面部署纯IPv6之前的一种临时解决方案。隧道技术的本质就是将IP包封装到其他包中,将IPv6包封装到IPv4包中,并通过IPv4网络进行传输。
- 两类协议
利用隧道技术,孤立的IPv6网络之间可以通过IPv4网络发送IPv6包。隧道包含两类协议:传输协议和乘客协议。
- 传输协议:IPv4是传输协议,隧道是在IPv4中创建的。IPv4报头中的协议字段值41表示所封装的数据部分是一个IPv6包。
- 乘客协议:IPv6是乘客协议,IPv6被封装在隧道中并通过隧道进行传送。
- 三个组件
隧道包含两类设备,分别是隧道端点和管理隧道的管理协议,隧道的这三个组件
- 隧道入口点:隧道入口点是将IPv6包(乘客协议)封装到IPv4包(传输协议)的位置。必须是双栈设备,负责接收IPv6包并将其封装到IPv4包中,并通过IPv4网络进行传输。
- 隧道出口点:隧道出口点是另一台双栈设备,接收IPv4包并将解封装出来的IPv6通过IPv6网络传输。
- 隧道管理:隧道管理是由隧道入口点和隧道出口点完成的,负责处理隧道封装/解封装、编址、MTU、分段和差错处理。
- 三种应用场景
隧道可能存在三种应用场景:
- 主机到主机(Host to host):孤立的双栈主机被纯IPv4网络所隔离,主机充当隧道端点负责创建在两台主机之间传输IPv6包的隧道。
- 主机到路由器(Host to router):隧道端点是由纯IPv4网络互连的主机和路由器。一端是双栈主机,另一端是双栈路由器。路由器通过IPv6网络发送和接收纯IPv6包,将IPv6包封装到IPv4包中并通过隧道进行传输,主机则接收并处理IPv6包。
- 路由器到路由器(Router to router):隧道端点都是双栈路由器,之间可以创建隧道来互连IPv6主机孤岛。
- IPv6两种隧道类型
- 手工隧道:手工隧道等同于点到点链路,主要用于需要在两台边界路由器或一个端系统和一台边界路由器之间构建常规安全通信能力的稳定连接,或者用于连接远程IPv6网络。
- 6to4隧道:6to4隧道或自动6to4隧道的关键区别就在于这类隧道是点到多点隧道,而不是点到点隧道。隧道的目的IPv4地址决定于数据包的目的IPv6地址。6to4隧道需要IPv6前缀或网络地址与IPv4隧道地址之间的关系,IPv6地址是从IPv4隧道地址以反向工程方式得到的,地址格式为2002:tunnel:IPv4 address::/48
17.2.2 手工隧道
手工隧道是双向点到点隧道,并且其IPv4端点地址由配置文件来决定,通常这是一种最简单的隧道实现方式。手工隧道的优点在于配置很直观,缺点在于扩展性较差。
手工隧道是点到点隧道,如果应用环境需要在多台路由器之间建立多条隧道,那么就需要在每两台端点路由器之间都建立一条独立的隧道,即所需的隧道数量为(端点数-1)*端点数/2
虽然在路由器数量有限的情况下,手工隧道能够很好地满足隧道互连的需求,但是随着连接数的增加,隧道数量将快速增加。
17.2.3 6to4隧道
6to4隧道属于点到多点连接,单个6to4隧道可以连接任意数量的IPv6网络,也就是说单个6to4隧道可以有任意数量的隧道目的端(如图10-8所示)。路由器R1可以配置一个能够到达路由器R2到R6所在IPv6网络的6to4隧道。
6to4隧道或称为自动6to4隧道与手工隧道的区别主要是,手工隧道必须静态配置隧道对端(隧道IPv4目的地址),而对于6to4隧道来说,隧道IPv4目的地址是从数据包的IPv6地址自动衍生而来的。也就是这两类地址之间必然存在某种联系,即IPv6地址是可达的IPv4地址加上一个被保留用作该隧道的特殊前缀。IANA将前缀2002::/16永久分配为使用6to4隧道自动访问IPv6网络。
与手工隧道比较,有两点区别:
- 一个是命令tunnel mode ipv6ip 6to4
- 另一个是没有命令tunnel destination。
命令tunnel mode ipv6ip 6to4的作用是告诉路由器使用IPv6目的地址来确定隧道目的IPv4地址。由于隧道目的地址是自动从IPv6包得到的,因而不需要通过tunnel destination配置一个预设的目的地址。由于隧道目的端是由IPv6包的目的地址自动确定的,因而只要IPv6网络的地址格式是2002:ipv4 address::/48,那么就可以通过6to4隧道可达。
IPv6实验5:IPv4到IPv6的过渡
- 双栈实验;
- 手工隧道实验;
- 6to4隧道实验