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基础架构进行
通信。
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 地址来确认隧道
的端点,并自动建立隧道(如图所示)。
如同 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双栈隧道
我们来看如下拓扑:
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.
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)#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-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地址。
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
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地址。格式如下:
自动隧道的特点是能够完成点到多点的连接,手动隧道仅仅是点到点的连接。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 网络中的服务器上下载文件或者上传文件,反之亦然。
配置方式如下:
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类似。
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)#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
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
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