IPv6隧道及NAT-PT技术讲解

时间:2010-11-11 20:02来源:未知 作者:admin 点击:456次
39.1 IPv6隧道简介 IPv6 技术相比 IPv4 技术而言具有许多优势。然而,人们一致认为,IPv6 部署的任何成功策略均需其 在一定持续时期内与IPv4共存。为了管理这种从IPv4 到IPv6的长期复杂过渡,人们已制订出许多策略。 以下部分将对若干此类策略予以阐述。 双栈骨干网 在双栈骨干网部署中,网络中的所有路由器均同时保持IPv4 与IPv6协议堆栈。应用程序在 使用 IPv4 或 IPv6 之间进行选择,并由应用程序按照 IP 业务负载的类型与通信的特定需要

 39.1 IPv6隧道简介 

IPv6 技术相比 IPv4 技术而言具有许多优势。然而,人们一致认为,IPv6 部署的任何成功策略均需其
在一定持续时期内与IPv4共存。为了管理这种从IPv4 到IPv6的长期复杂过渡,人们已制订出许多策略。
以下部分将对若干此类策略予以阐述。 
双栈骨干网 
     在双栈骨干网部署中,网络中的所有路由器均同时保持IPv4 与IPv6协议堆栈。应用程序在
使用 IPv4 或 IPv6 之间进行选择,并由应用程序按照 IP 业务负载的类型与通信的特定需要选择
正确的地址。 
     如今,双栈路由选择是具有需要两种协议的IPv4 与IPv6组合应用程序网络基础架构的首选
部署策略。然而,该策略却有若干限制:网络中的所有路由器必须升级到 IPv6;路由器还需要
双寻址方案、 IPv4与IPv6选路协议的双重管理以及IPv4与IPv6两个选路表所需的足够存储空间。 
通过IPv4实现IPv6的隧道传输 
通过IPv4实现IPv6的隧道传输方法是在IPv4 数据包内封装IPv6业务负载,通过IPv4骨干
网进行发送(如图所示)。这使“孤岛状”IPv6 终端系统和路由器能够通过现有IPv4基础架构进行
通信。


如同RFC2893所定义的那样,隧道的两个端点需要使用适当的IPv6和IPv4地址进行配置。
坐落于端点的边缘路由器,通常为双栈路由器,将按照配置转发通过隧道的业务负载。 
通用路由封装(GenericRoutingEncapsulation,简称GRE)隧道 
按照通过 IPv4 网络传输数据的定义,GRE 通过将需要传输的数据包封装在 GRE 数据包内,
从而使一个网络协议能够通过另一个网络协议进行传输。GRE 是通过隧道传输 IPv6 业务负载的
一个理想机制。 
兼容IPv4的隧道或6over4隧道 
如同在 RFC2893 中定义的那样,这些隧道机制在兼容 IPv4 的 IPv6 地址上自动建立隧道。
兼容 IPv4 的 IPv6 地址将最左侧的 96 位定义为零,后面跟随着一个嵌在最后 32 位中的 IPv4 地
址。例如,0:0:0:0:0:0.64.23.45.21是一个兼容 IPv4的地址。

6to4隧道 
如同 RFC3056 所定义的那样,6to4 隧道使用嵌在 IPv6 地址中的一个 IPv4 地址来确认隧道
的端点,并自动建立隧道(如图所示)。


站内自动隧道寻址协议(Intra-SiteAutomaticTunnelAddressingProtocol,简称ISATAP)隧道 
如同在draft-ietf-ngtrans-isatap-16中定义的那样,ISATAP隧道传输非常类似于6to4隧道传
输,但它是为在本地站点或校园网中使用而设计的。ISATAP 地址包含 64 位网络前缀 0000:5EFE
以及一个确认隧道端点地址的IPv4地址(如图所示)。


多协议标记交换(Multi-ProtocolLabelSwitching,简称MPLS)隧道 
使用 MPLS 技术,孤立的 IPv6 域能够通过一个 MPLSIPv4 核心网络在彼此间进行通信。因
为 MPLS 转发是基于标记的基础之上,而非基于 IP 包头本身,所以这种实施需要的骨干网基础
设施升级大大减少,核心路由器的重新配置也有所下降,从而为部署IPv6提供了一个非常经济
合算的方法。此外, MPLS固有的×××与业务负载技术维护服务使IPv6网络能够通过支持IPv4×××
与MPLS-TE的基础架构并入×××或外部网络。

39.2 IPv6隧道配置 
39.2.1双栈隧道 
我们来看如下拓扑:

在R1上的配置示例如下: 
r1(config)#interface    tunnel 0 
r1(config-if)#ipv6    address 3ffe:b00:fff:2::1/64 
r1(config-if)#tunnel source 132.214.1.1 
r1(config-if)#tunnel destination 132.214.1.2 
r1(config-if)#tunnel mode ipv6ip 
r1(config-if)#exit 
r1(config)#ipv6 route ::/0 tunnel 0 
r1(config)#do show ipv6 interface tunnel0 
Tunnel0 is up, line protocol is up 
   IPv6 is enabled, link-local address is FE80::84D6:101 [TEN] 
   No Virtual link-local address(es): 
   Global unicast address(es): 
     3FFE:B00:FFF:2::1, subnet is 3FFE:B00:FFF:2::/64 [TEN] 
   Joined group address(es): 
     FF02::1 
     FF02::2 
    FF02::1:FF00:1 
    FF02::1:FFA8:7 
   MTU is 1476 bytes 
   ICMP error messages limited to one every 100 milliseconds 
   ICMP redirects are enabled 
   ICMP unreachables are sent 
   ND DAD is enabled, number of DAD attempts: 1 
   ND reachable time is 30000 milliseconds 
   Hosts use stateless autoconfig for addresses.


39.2.2 6to4隧道 
6to4 Tunnel是一种通过对IPv6报文进行 2次封装使其在IPv4网络中传输的技术,

其配置方法如下: 
r1(config)#int loopback 0 
r1(config-if)#ip addr 13 
r1(config-if)#ip addr 132.214.1.10 255.255.255.0

r1(config-if)#int fa0/0 
r1(config-if)#ipv6 address 2002::1/64 
r1(config-if)#int tunnel1 
r1(config-if)#no ip address 
r1(config-if)#ipv6 unnumbered fastEthernet 0/0 
r1(config-if)#tunnel source loopback 0 
r1(config-if)#tunnel mode ipv6ip 6to4   
r1(config-if)# 
r1(config)#ipv6 route 2002::/16 tunnel1 

39.2.3 GRE ipv6隧道 
GRE方式封装IPv6报文如下:

配置方法如下: 
r1(config)#int tunnel 2 
r1(config-if)#ipv6 address 3ffe:b00:ffff:2::1/64 
r1(config-if)#tunnel source 206.123.31.200 
r1(config-if)#tunnel destination 132.214.1.10 
r1(config-if)#tunnel mode gre ipv6 

39.2.4 ISATAPipv6隧道 
站内自动隧道寻址协议(ISATAP: IntraSite Automatic Tunnel Addressing Protocol) 过渡技术就是采用了
双栈和隧道技术,并基于企业网和主机的一种过渡技术。   
ISATAP隧道不仅完成隧道功能,还可以通过IPv4网络承载IPv6网络的 ND协议,从而使跨IPv4网络
的设备仍然可以进行IPv6设备的自动配置。分散在IPv4网络中的各个IPv6孤岛主机通过ISATAP技术自
动获得地址并连接起来。 它使用特殊的地址格式: ::0:5efe:a.b.c.d 前64bit通过向ISATAP 发送请求获得,
后64比特中5efe为固定,a.b.c.d为接口的IPv4地址。

ISATAP在路由器上的配置如下: 
Router(config)#int fa0/0 
Router(config-if)#ip address 206.123.31.200 255.255.255.0 
Router(config)#int tunnel0 
Router(config-if)#tunnel source fastEthernet 0/0 
Router(config-if)#tunen 
Router(config-if)#tunn   
Router(config-if)#tunnel mode ipv6ip isatap 
Router(config-if)#no ipv6 nd suppress-ra 
Router(config-if)#ipv6 address 3ffe:b00:ffff:2::/64 eui-64

39.2.5自动IPv4兼容隧道 
自动隧道的特点是能够完成点到多点的连接,手动隧道仅仅是点到点的连接。IPv4 兼容IPv6技术能
够使隧道自动生成。IPv4 兼容 IPv6 隧道只需要告诉设备隧道的起点,终点由设备自动生成——隧道的
端口使用IPv4 兼容IPv6地址。格式如下:

000…000(96bit) IPv4 地址 


配置方式如下: 
Router(config)#interface tunnel 0 
Router(config-if)# tunnel source    fa 0/0 
Router(config-if)# tunnel mode ipv6ip auto-tunnel 

39.3 IPv6 NAT-PT 
NAT-PT 是一种纯 IPv6 节点和 IPv4 节点间的互通方式,所有包括地址、协议在内的转换工作都由网
络设备来完成。支持 NAT-PT 的网关路由器应具有 IPv4 地址池,在从 IPv6 向 IPv4 域中转发包时使用,地
址池中的地址是用来转换 IPv6 报文中的源地址的。此外网关路由器需要 DNS-ALG 和 FTP-ALG 这两种常
用的应用层网关的支持,在 IPv6 节点访问 IPv4 节点时发挥作用。如果没有 DNS-ALG 的支持,只能实现
由 IPv6 节点发起的与 IPv4 节点之间的通信,反之则不行。如果没有 FTP-ALG 的支持,IPv4 网络中的主
机将不能用FTP软件从IPv6 网络中的服务器上下载文件或者上传文件,反之亦然。

39.3.1 NAT-PT分类 
NAT-PT一共有 3种模式: 
1. 静态NAT-PT, 
它使用了一种静态的ipv6 和ipv4地址一一对应的处理方式。类似于IPv4 中的静态NAT 
2. 动态NAT-PT 
它使用一个IPv4地址池,然后再IPv6网络中动态的将预定义的NAT-PT前缀加到目前的IPv4地
址。这种模式需要一个IPv4 地址池来执行,类似于IPv4 的动态NAT 
3. NAPT-PT 
它使用多个有NAT-PT前缀的IPv6地址和一个源IPv4地址之间多对一的动态映射,   转换同时在
3层和UDP/TCP层上进行。它和IPv4中的PAT类似。

39.3.2 静态NAT-PT 
配置方式如下: 
Router(config)#int fa0/0 
Router(config-if)#ip address 1.1.1.1 255.255.255.0 
Router(config-if)#ipv6 nat 
Router(config-if)#int fa0/1 
Router(config-if)#ipv6 address 2001:aaaa::1/64 
Router(config-if)#ipv6 nat 
Router(config-if)#exit                         
Router(config)#ipv6 nat prefix 2001:aaaa:ffff::/96 
Router(config)#ipv6 nat v6v4 source 2001:aaaa::1 1.1.1.1 
Router(config)#ipv6 nat v4v6 source 1.1.1.1 2001:aaaa::1

Router(config)#do show ipv6 nat translation 
Prot    IPv4 source                            IPv6 source 
        IPv4 destination                  IPv6 destination 
------    ------------------------              ------------------------ 
          1.1.1.1                                2001:AAAA::1 
Tcp        1.1.1.1,80               2001:AAAA::1,80 
            1.1.1.1,22               2001:AAAA::1,22


39.3.3 动态NAT-PT 
Router(config)#int fa0/0 
Router(config-if)#ip address 1.1.1.1 255.255.255.0 
Router(config-if)#ipv6 nat 
Router(config-if)#int fa0/1 
Router(config-if)#ipv6 address 2001:aaaa::1/64 
Router(config-if)#ipv6 nat 
Router(config-if)#exit                         
Router(config)#ipv6 nat prefix 2001:aaaa:ffff::/96 
Router(config)#ipv6 access-list ipv6 permit 2001:aaaa::/48 any 
Router(config)#ipv6 nat v6v4 pool ipv4-pool 1.1.1.1 1.1.1.30 prefix-length 24 
Router(config)#ipv6 nat v6v4 source list ipv6 pool ipv4-pool

39.3.4    NAPT-PT 

Router(config)#int fa0/0 
Router(config-if)#ip address 1.1.1.1 255.255.255.0 
Router(config-if)#ipv6 nat 
Router(config-if)#int fa0/1 
Router(config-if)#ipv6 address 2001:aaaa::1/64 
Router(config-if)#ipv6 nat 
Router(config-if)#exit                         
Router(config)#ipv6 nat prefix 2001:aaaa:ffff::/96 
Router(config)#ipv6 access-list ipv6 permit 2001:aaaa::/48 any 
Router(config)#ipv6 nat v6v4 pool ipv4-pool 1.1.1.1 1.1.1.30 prefix-length 24 
Router(config)#ipv6 nat v6v4 source list ipv6 pool ipv4-pool overload