• 沒有找到結果。

IPv6 第 12 章

12.4 IPv6 和 IPv4 共存

在目前以 IPv4 为基础的网络技术如此成熟的情况下,不可能马上抛开原有的 IPv4 网络来创建 IPv6 网络,只能通过分步实施的方法来逐步过渡。因此,在今后相当长的一段时间内,IPv6 网络 将和 IPv4 网络共存。如何以合理的代价逐步地将 IPv4 网络过渡到 IPv6、解决好 IPv4 与 IPv6 互相 共存将是我们需要迫切考虑的。针对以上问题,目前提出了三种主要的过渡技术:双协议栈

(DualStack)、隧道技术(Tunnel)、地址协议转换(NAT-PT)。当然,这些过渡技术都不是普遍适 用的,每一种技术都只适用于某种或几种特定的网络情况,在实际应用时需要综合考虑各方面的现 实情况,然后选择合适的转换机制进行设计和实施。本节以图 12-10 为例介绍各种情况下 IPv4 到 IPv6 的过渡方案。

▲图 12-10 IPv4 到 IPv6 的过渡方案

12.4.1 双协议栈技术

双协议栈是指在单个节点同时支持 IPv4 和 IPv6 两种协议。由于 IPv6 和 IPv4 是功能相近的网 络层协议,两者都基于相同的物理平台,而且加载于其上的传输层协议 TCP 和 UDP 也没有区别,

所以可以在一台主机上同时支持 IPv4 协议和 IPv6 协议。

双协议栈技术的工作原理是一台主机同时支持 IPv6 和 IPv4 两种协议,该主机既能与支持 IPv4 协议的主机通信,又能与支持 IPv6 协议的主机通信。双协议栈是其他 IPv4 或 IPv6 互通技术的基 础,当 IPv6 可用时,双协议栈节点将优先使用 IPv6,双协议栈主机的协议结构如表 12-1 所示。

▲表 12-1 双协议栈主机的协议结构 应用程序

TCP/UDP 协议

IPv6 协议 IPv4 协议

接入网络

12Chapter

同样,双栈主机相应的网关也支持双栈协议,如图 12-11 所示。

▲图 12-11 双栈路由器

双协议栈主机在通信时首先通过支持双协议的 DNS 服务器查询与目的主机名对应的 IP 地址,

然后根据指定的 IPv6 或 IPv4 地址开始通信,双协议栈通信方式如图 12-12 所示。

▲图 12-12 双协议栈通信示意图

将 IPv4 应用程序过渡到 IPv6 的经验表明,对于大多数应用程序,只需要对源代码内的某些局 部地方做极少量的修改,该应用程序可以逐步升级到 IPv6。Windows Server 2008 默认是双协议栈,

它的 DNS 服务器支持 IPv4 和 IPv6 的名称解析。

参照拓扑如图 12-10 所示,我们可以将路由器 R1 的 Fas0/1 和服务器 Server10 的 E0 口设置为 双栈模式,配置和验证过程如下:

R1(config)#ipv6 unicast-routing R1(config)#interface fastEthernet 0/1

R1(config-if)#ip address 10.10.2.1 255.255.255.0 R1(config-if)#ipv6 address fec0:10:2::/64 eui-64 R1(config-if)#end

12 Chapter

R1#show running-config interface fastEthernet 0/1 Building configuration...

Current configuration : 130 bytes

!

interface FastEthernet0/1 ip address 10.10.2.1 255.255.255.0 ipv6 address FEC0:10:2::/64 eui-64 end

R1#

R1#show ipv6 interface brief FastEthernet0/1 [up/up]

FE80::C801:16FF:FE6C:6 FEC0:10:2:0:C801:16FF:FE6C:6

Ser_10> ip 10.10.2.10/24 10.10.2.1 ---设置节点的 IPv4 地址和网关--- Checking for duplicate address...

PC1 : 10.10.2.10 255.255.255.0 gateway 10.10.2.1

Ser_10> ip auto ---设置节点通过自动的方式获得 IPv6 地址--- GLOBAL SCOPE : fec0:10:2:0:2050:79ff:fe66:6803/64

ROUTER LINK-LAYER : ca:01:16:6c:00:06

Ser_10> show ---验证节点的 IPv4 和 IPv6 地址信息---

84 bytes from 10.10.2.1 icmp_seq=1 ttl=255 time=19.001 ms 84 bytes from 10.10.2.1 icmp_seq=2 ttl=255 time=5.001 ms 84 bytes from 10.10.2.1 icmp_seq=3 ttl=255 time=9.000 ms 84 bytes from 10.10.2.1 icmp_seq=4 ttl=255 time=9.000 ms 84 bytes from 10.10.2.1 icmp_seq=5 ttl=255 time=9.001 ms Ser_10> ping FEC0:10:2:0:C801:16FF:FE6C:6

FEC0:10:2:0:C801:16FF:FE6C:6 icmp6_seq=1 ttl=64 time=21.001 ms FEC0:10:2:0:C801:16FF:FE6C:6 icmp6_seq=2 ttl=64 time=9.000 ms FEC0:10:2:0:C801:16FF:FE6C:6 icmp6_seq=3 ttl=64 time=9.001 ms FEC0:10:2:0:C801:16FF:FE6C:6 icmp6_seq=4 ttl=64 time=9.000 ms FEC0:10:2:0:C801:16FF:FE6C:6 icmp6_seq=5 ttl=64 time=9.000 ms Ser_10>

12Chapter

包的源地址和目的地址分别是隧道入口和出口的 IPv4 地址。在隧道的出口处再将 IPv6 数据包取出 转发给目的站点。隧道技术只要求隧道两端的节点(路由器)都支持 IPv4 或 IPv6 两种协议,而无 需将中间网络转换成 IPv6。当使用 IPv4 封装 IPv6 数据包时,IPv4 的协议类型为 41,其通信方式 如图 12-13 所示。

▲图 12-13 IPv6 over IPv4 手工隧道

参照拓扑如图 12-10 所示,我们可以在路由器 R1 和 R2 之间做 IPv6 over IPv4 手工隧道,前提 需要保证 R1 的 Serial1/1(IP:172.16.1.1)和 R2 的 Serial1/2(IP:172.16.12.2)接口之间可以相互通 信。R1、R2、ISP 串口地址的配置不再详细介绍,隧道的配置和验证过程如下:

R1(config)#ip route 0.0.0.0 0.0.0.0 serial 1/1 R1(config)#ipv6 unicast-routing

R1(config)#interface tunnel 12 ---配置隧道接口--- R1(config-if)#ipv6 address fec0:12:12::1/64 ---隧道的 IPv6 地址--- R1(config-if)#tunnel source 172.16.1.1 ---隧道的源--- R1(config-if)#tunnel destination 172.16.2.2 ---隧道的目的地--- R1(config-if)#tunnel mode ipv6ip ---隧道的模式--- R1(config-if)#end

R1#show ipv6 interface brief ---省略部分输出---

Tunnel12 [up/up]

FE80::AC10:101 FEC0:12:12::1 R1#

R2(config)#ip route 0.0.0.0 0.0.0.0 serial 1/2 R2(config)#ipv6 unicast-routing

R2(config)#interface tunnel 12

R2(config-if)#ipv6 address fec0:12:12::2/64 R2(config-if)#tunnel source 172.16.2.2 R2(config-if)#tunnel destination 172.16.1.1 R2(config-if)#tunnel mode ipv6ip R2(config-if)#end

R2#show ipv6 interface brief ---省略部分输出---

Tunnel12 [up/up]

FE80::AC10:202 FEC0:12:12::2 R2#

12 Chapter

在 R1 上通过 ping 命令测试隧道是否成功建立,操作过程如下:

R1#ping fec0:12:12::2 Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to FEC0:1:1::2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/26/32 ms R1#

如需 PC10 和 PC20 这两个 IPv6 主机直接通过建立的隧道通信,在网络中部署路由即可。

12.4.3 6to4 隧道

手工隧道虽然简单,但它需要为每对路由器都配置一条独立的隧道,如果企业路由器的数量比 较多,手工配置的管理成本将会非常大,因此这种方式难以满足大量隧道扩展性的需求。IETF 定 义了一种称为 6to4 的隧道机制,这是一种自动构造隧道的方式,它的好处在于只需要一个全球唯 一的 IPv4 地址便可以使得整个站点获得 IPv6 的连接。

6to4 隧道不是点到点的,而是点到多点的。国际地址分配机构 IANA 专门为 6to4 隧道分配了一个 永久性的 IPv6 的地址范围,对应的网络前缀是 2002::/16,称为 6to4 地址,其结构如图 12-14 所示。

▲图 12-14 6to4 地址结构

6to4 地址的网络前缀有 64 位,前 48 位(2002:a.b.c.d)由分配给路由器上的 IPv4 地址决定,

用户不能改变;后 16 位 SLA ID 是子网标识,由用户自己定义,PortID 是接口标识。利用 6to4 地 址,隧道的 IPv4 地址可以从相应的 IPv6 地址的 48 比特前缀中自动提取出来,假设隧道的 IPv4 地 址为 136.214.1.10,转换成十六进制 84d6:010a,则 6to4 地址前缀为 2002: 84d6:010a::/48,其隧道 的数据交互如图 12-15 所示。

▲图 12-15 6to4 隧道数据通信过程

报头 报头 报头 报头

12Chapter

参照拓扑如图 12-10 所示,我们可以在路由器 R1 和 R2 之间做 6to4 隧道,前提需要保证 R1 的 Serial1/1 和 R2 的 Serial1/2 接口之间可以相互通信,配置过程如下:

R1(config)#ip route 0.0.0.0 0.0.0.0 serial 1/1 R1(config)#ipv6 unicast-routing

R1(config)#interface tunnel 12

R1(config-if)#ipv6 address 2002:ac10:101:12::/128

R1(config-if)#tunnel source 172.16.1.1 ---172.16.1.1 对应的十六进制值为 ac10:0101--- R1(config-if)#tunnel mode ipv6ip 6to4

R2(config)#ip route 0.0.0.0 0.0.0.0 serial 1/2 R2(config)#ipv6 unicast-routing

R2(config)#interface tunnel 12

R2(config-if)#ipv6 address 2002:ac10:202:12::/128 R2(config-if)#tunnel source 172.16.2.2

R2(config-if)#tunnel mode ipv6ip 6to4

由于隧道连接的每个节点地址都属于不同的子网,所以需要在每个路由器上设置到 6to4 网络 的路由和到远端 IPv6 网络的路由:

R1(config)#ipv6 route 2002::/16 tunnel 12 ---设置 6to4 网络的静态路由--- R1(config)#ipv6 route fec0:20:1::/64 2002:ac10:202:12:: ---下一跳为 R2 的 Tunnel 地址--- R2(config)#ipv6 route 2002::/16 tunnel 12 ---设置 6to4 网络的静态路由--- R2(config)#ipv6 route fec0:10:1::/64 2002:ac10:101:12:: ---下一跳为 R1 的 Tunnel 地址--- 验证 R1 的路由表并使用 ping 命令从 Host10 测试到 Host20 的连通性:

R1#show ipv6 route static IPv6 Routing Table - 9 entries

Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP

fec0:20:1:0:2050:79ff:fe66:6801 icmp6_seq=1 ttl=60 time=73.004 ms fec0:20:1:0:2050:79ff:fe66:6801 icmp6_seq=2 ttl=60 time=49.003 ms fec0:20:1:0:2050:79ff:fe66:6801 icmp6_seq=3 ttl=60 time=39.002 ms fec0:20:1:0:2050:79ff:fe66:6801 icmp6_seq=4 ttl=60 time=49.003 ms fec0:20:1:0:2050:79ff:fe66:6801 icmp6_seq=5 ttl=60 time=49.003 ms PC10>

12 Chapter

然后需要有一台支持 ISATAP 的路由器,该路由器可以在网络中的任何位置,只要终端 PC 能够通 过 IPv4 的网络与它通信即可。当使用 PC 访问 IPv6 资源时,可以与 ISATAP 路由器建立起 ISATAP 隧道,PC 根据 ISATAP 路由器下发的 IPv6 前缀构造自己的 IPv6 地址,并且将这台 ISATAP 路由器 设置为自己的 IPv6 默认网关,如此一来,后续的这台主机就能够通过这台 ISATAP 路由器去访问 IPv6 的资源,ISATAP 通信过程如图 12-16 所示。

▲图 12-16 ISATAP 隧道

ISATAP 在主机上启用后,会产生一个 ISATAP 虚拟网卡,该虚拟网卡会产生一个 64bits 的特 殊接口标识,有点类似 EUI-64,但是产生机制不同,它是由专为 ISATAP 保留的 32 位的 0200:5EFE 加上主机上配置的 IPv4 地址构成,如图 12-17 所示,其中假设 ISATAP 主机配置的 IPv4 地址为 1.1.1.1。

另一方面,在路由器上部署 ISATAP 后,路由器也会产生一个 tunnel 接口,用于响应 ISATAP 主机的隧道建立请求,这个 tunnel 接口同样会产生接口标识。地址的格式是 IANA 保留给 ISATAP 的 32bits 的 0000:5EFE 后追加 32bits 的 IPv4 地址,如图 12-18 所示,其中假设 ISATAP 路由器配置 的 IPv4 地址是 2.2.2.2。

▲图 12-17 ISATAP 主机接口标识 ▲图 12-18 ISATAP 路由器接口标识 ISATAP 路由器

PC0 到 PC1 使用 PC0 的 IPv4 地址作为源 IP 地址,ISATAP 路由器的 IPv4 地址 作为目标 IP 地址去掉 IPv4 的数据报头进入 IPv6 网络

从 IPv6 的数据包提取出 IPv4 的地址作为目标地址,Tunnel Source 地址作为 IPv4 的源地址将 IPv6 的数据包封装到 IPv4 的数据包中进入 IPv4 的网络

12Chapter

参照拓扑如图 12-10 所示,我们在路由器 R1 的 Serial1/1 接口部署 ISATAP 隧道(IPv6 网络前 缀为 FEC0:13:13::/64),使 ISATAP 主机 Host30(Windows XP 系统)能通过 ISATAP 路由器 R1 与 Host10 或 Server10 通信,ISATAP 路由器的配置和验证过程如下:

R1(config)#ip route 0.0.0.0 0.0.0.0 serial 1/1 R1(config)#interface tunnel 13

R1#show ipv6 interface brief ---省略部分输出---

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . : IP Address. . . : 10.3.1.30 Subnet Mask . . . : 255.255.255.0 Default Gateway . . . : 10.3.1.3 C:\Documents and Settings\Administrator>ping 172.16.1.1 Pinging 172.16.1.1 with 32 bytes of data:

Reply from 172.16.1.1: bytes=32 time=44ms TTL=254 Reply from 172.16.1.1: bytes=32 time=18ms TTL=254 Reply from 172.16.1.1: bytes=32 time=22ms TTL=254 Reply from 172.16.1.1: bytes=32 time=13ms TTL=254 Ping statistics for 172.16.1.1:

Packets: Sent=4, Received=4, Lost=0 (0% loss), Approximate round trip times in milli-seconds:

Minimum=13ms, Maximum=44ms, Average=24ms C:\Documents and Settings\Administrator>

在 ISATAP 主机 Host30 上启用 IPv6 协议并设置 ISATAP 隧道,操作过程如下:

C:\Documents and Settings\Administrator>ipv6 install ---启用 IPv6 协议--- Installing...

Succeeded.

C:\Documents and Settings\Administrator>netsh interface ipv6 ISATAP set router 172.16.1.1 ---建立 ISATAP 隧道--- 验证获取的 IPv6 地址信息,操作过程如下:

C:\Documents and Settings\Administrator>ipconfig ---省略部分输出---

Tunnel adapter Automatic Tunneling Pseudo-Interface:

Connection-specific DNS Suffix . :

IP Address. . . : fec0:13:13::5efe:10.3.1.30%1 IP Address. . . : fe80::5efe:10.3.1.30%2 Default Gateway . . . : fe80::5efe:172.16.1.1%2

使用 ping 命令测试 Host30 到 Server10(fec0:10:2:0:2050:79ff:fe66:6803)的连通性:

C:\Documents and Settings\Administrator>ping fec0:10:2:0:2050:79ff:fe66:6803

12 Chapter

Pinging fec0:10:2:0:2050:79ff:fe66:6803 with 32 bytes of data:

Reply from fec0:10:2:0:2050:79ff:fe66:6803: time=46ms Reply from fec0:10:2:0:2050:79ff:fe66:6803: time=22ms Reply from fec0:10:2:0:2050:79ff:fe66:6803: time=22ms Reply from fec0:10:2:0:2050:79ff:fe66:6803: time=23ms Ping statistics for fec0:10:2:0:2050:79ff:fe66:6803:

Packets: Sent=4, Received=4, Lost=0 (0% loss), Approximate round trip times in milli-seconds:

Minimum=22ms, Maximum=46ms, Average=28ms C:\Documents and Settings\Administrator>

12.4.5 NAT64

在 IPv6 网络的发展过程中,面临的最大问题应该是 IPv6 与 IPv4 的不兼容性,因此无法实现 两种不兼容网络之间的互访。为了实现 IPv6 与 IPv4 的互访,IETF(互联网工程任务组)在早期 设计了 NAT-PT 的解决方案 RFC2766。NAT-PT 通过 IPv6 与 IPv4 的网络地址与协议转换,实现 了 IPv6 网络与 IPv4 网络的双向互访。但 NAT-PT 在实际网络应用中面临各种缺陷,IETF 建议不 再使用,因此已被 RFC4966 废除。为了解决 NAT-PT 中的各种问题,同时实现 IPv6 与 IPv4 之间 的网络地址与协议转换技术,IETF(互联网工程任务组)重新设计了一项新的解决方案:NAT64 与 DNS64 技术。

NAT64 是一种有状态的网络地址与协议转换技术,一般用于 IPv6 网络侧用户发起连接访问 IPv4 侧网络资源,但也支持手工配置静态映射关系,实现 IPv4 网络主动发起连接访问 IPv6 网络。

NAT64 是一种有状态的网络地址与协议转换技术,一般用于 IPv6 网络侧用户发起连接访问 IPv4 侧网络资源,但也支持手工配置静态映射关系,实现 IPv4 网络主动发起连接访问 IPv6 网络。

相關文件