• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 新华三人才研学中心
  • 关于我们

04-三层技术-IP业务配置指导

目录

14-隧道配置

本章节下载 14-隧道配置  (525.46 KB)

14-隧道配置


1 隧道

1.1  隧道简介

隧道技术是一种封装技术,即一种网络协议将其他网络协议的数据报文封装在自己的报文中,然后在网络中传输。封装后的数据报文在网络中传输的路径,称为隧道。隧道是一条虚拟的点对点连接,隧道的两端需要对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。

目前支持的隧道技术包括:

·            GRE(Generic Routing Encapsulation,通用路由封装)隧道,GRE的相关介绍和配置请参见“三层技术-IP业务配置指导”中的“GRE”。

·            MPLS TE(Multiprotocol Label Switching Traffic Engineering,多协议标记交换流量工程)隧道,MPLS TE的相关介绍和配置请参见“MPLS配置指导”中的“MPLS TE”。

·            IPv6 over IPv4隧道、IPv4 over IPv4隧道、IPv4 over IPv6隧道和IPv6 over IPv6隧道。

1.2  配置Tunnel接口

隧道两端的设备上,需要创建虚拟的三层接口,即Tunnel接口,以便隧道两端的设备利用Tunnel接口发送报文、识别并处理来自隧道的报文。

封装后的报文不能根据目的地址和路由表进行第二次三层转发,需要将封装后的报文发送给业务环回组,由业务环回组将报文回送给转发模块后,再进行三层转发。因此,在这些交换机产品上,需要创建tunnel类型的业务环回组,以实现隧道报文的接收和发送。关于业务环回组的创建和配置,请参见“二层技术-以太网交换配置指导”中的“业务环回组”。

表1-1 配置Tunnel接口

操作

命令

说明

进入系统视图

system-view

-

创建Tunnel接口,指定隧道模式,并进入Tunnel接口视图

interface tunnel number [ mode { gre [ ipv6 ] | ipv4-ipv4 | ipv6 | ipv6-ipv4 [ 6to4 | isatap ] | mpls-te } ]

缺省情况下,不存在Tunnel接口

创建Tunnel接口时,必须指定隧道的模式;进入已经创建的Tunnel接口视图时,可以不指定隧道模式

在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败

设置隧道的源端地址或源接口

source { ipv4-address | ipv6-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址

设置隧道的目的端地址

destination { ipv4-address | ipv6-address }

缺省情况下,未设置隧道的目的端地址

隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址

(可选)配置接口描述信息

description text

缺省情况下,接口描述信息为“该接口的接口名 Interface”

(可选)配置在指定slot上处理当前接口的流量

service slot slot-number

缺省情况下,未指定处理当前接口流量的slot,业务处理在接收报文的slot上进行

配置Tunnel接口的MTU值

mtu size

缺省情况下,隧道接口的状态始终为Down时,隧道的MTU值为64000;隧道接口的状态当前为Up时,隧道的MTU值为根据隧道目的地址查找路由而得到的出接口的MTU值减隧道封装报文头长度

配置Tunnel接口的期望带宽

bandwidth bandwidth-value

缺省情况下,接口的期望带宽=接口的最大速率÷1000(kbit/s)

接口的期望带宽会影响链路开销值。具体介绍请参见“三层技术-IP路由配置指导”中的“OSPF”、“OSPFv3”和“IS-IS”

设置封装后隧道报文的ToS

tunnel tos tos-value

缺省情况下,封装后隧道报文的ToS值与封装前原始IP报文的ToS值相同

设置封装后隧道报文的TTL值

tunnel ttl ttl-value

缺省情况下,封装后隧道报文的TTL值为255

(可选)恢复当前接口的缺省配置

default

-

(可选)关闭Tunnel接口

shutdown

缺省情况下,Tunnel接口处于关闭状态

 

1.3  隧道显示和维护

在任意视图下执行display命令可以显示隧道配置后的运行情况,通过查看显示信息验证配置的效果。

在用户视图下执行reset命令可以清除Tunnel接口的统计信息。

表1-2 隧道显示和维护

操作

命令

显示Tunnel接口的相关信息

display interface [ tunnel [ number ] ] [ brief [ description | down ] ]

显示Tunnel接口的IPv6相关信息

display ipv6 interface [ tunnel [ number ] ] [ brief ]

清除Tunnel接口的统计信息

reset counters interface [ tunnel [ number ] ]

 

1.4  常见错误配置举例

1. 故障现象

在Tunnel接口上配置了相关的参数后(例如隧道的源端地址、目的端地址和隧道模式),Tunnel接口仍未处于up状态。

2. 故障分析

Tunnel接口未处于up状态的原因可能是隧道起点的物理接口没有处于up状态,或隧道的目的端地址不可达。

3. 处理过程

(1)       使用display interfacedisplay ipv6 interface命令查看隧道起点的物理接口状态为up还是down。如果物理接口状态是down的,请检查网络连接。

(2)       使用display ipv6 routing-tabledisplay ip routing-table命令查看是否目的端地址通过路由可达。如果路由表中没有保证隧道通讯的路由表项,请配置相关路由


2 IPv6 over IPv4隧道

2.1  IPv6 over IPv4 隧道简介

2.1.1  IPv6 over IPv4隧道原理

图2-1所示,IPv6 over IPv4隧道是在IPv6数据报文前封装上IPv4的报文头,通过隧道使IPv6报文穿越IPv4网络,实现隔离的IPv6网络互通。IPv6 over IPv4隧道两端的设备必须支持IPv4/IPv6双协议栈,即同时支持IPv4协议和IPv6协议。

图2-1 IPv6 over IPv4隧道原理图

 

IPv6 over IPv4隧道对报文的处理过程如下:

(1)       IPv6网络中的主机发送IPv6报文,该报文到达隧道的源端设备Device A。

(2)       Device A根据路由表判定该报文要通过隧道进行转发后,在IPv6报文前封装上IPv4的报文头,通过隧道的实际物理接口将报文转发出去。IPv4报文头中的源IP地址为隧道的源端地址,目的IP地址为隧道的目的端地址。

(3)       封装报文通过隧道到达隧道目的端设备(或称隧道终点)Device B,Device B判断该封装报文的目的地是本设备后,将对报文进行解封装。

(4)       Device B根据解封装后的IPv6报文的目的地址处理该IPv6报文。如果目的地就是本设备,则将IPv6报文转给上层协议处理;否则,查找路由表转发该IPv6报文。

2.1.2  IPv6 over IPv4隧道模式

根据隧道终点的IPv4地址的获取方式不同,隧道分为“配置隧道”和“自动隧道”。

·            如果IPv6 over IPv4隧道终点的IPv4地址不能从IPv6报文的目的地址中自动获取,需要进行手工配置,这样的隧道称为“配置隧道”。

·            如果IPv6报文的目的地址中嵌入了IPv4地址,则可以从IPv6报文的目的地址中自动获取隧道终点的IPv4地址,这样的隧道称为“自动隧道”。

表2-1所示,根据对IPv6报文的封装方式的不同,IPv6 over IPv4隧道分为以下几种模式。

表2-1 IPv6 over IPv4隧道模式

隧道类型

隧道模式

隧道源端/目的端地址

IPv6报文目的地址格式

配置隧道

IPv6 over IPv4手动隧道

源端/目的端地址为手工配置的IPv4地址

普通的IPv6地址

自动隧道

6to4隧道

源端地址为手工配置的IPv4地址,目的端地址不需配置

6to4地址,其格式为:

2002:IPv4-destination-address::/48

其中,IPv4-destination-address表示隧道的目的端地址

ISATAP(Intra-Site Automatic Tunnel Addressing Protocol,站点内自动隧道寻址协议)隧道

源端地址为手工配置的IPv4地址,目的端地址不需配置

ISATAP地址,其格式为:

Prefix:0:5EFE:IPv4-destination-address/64

其中,IPv4-destination-address表示隧道的目的端地址

 

1. IPv6 over IPv4手动隧道

IPv6 over IPv4手动隧道是点到点之间的链路。建立手动隧道需要在隧道两端手工指定隧道的源端和目的端地址。

手动隧道可以建立在连接IPv4网络和IPv6网络的两个边缘路由器之间,实现隔离的IPv6网络跨越IPv4网络通信;也可以建立在边缘路由器和IPv4/IPv6双栈主机之间,实现隔离的IPv6网络跨越IPv4网络与双栈主机通信。

2. 6to4隧道

·            普通6to4隧道

6to4隧道是点到多点的自动隧道,主要建立在边缘路由器之间,用于通过IPv4网络连接多个IPv6孤岛。

6to4隧道两端采用特殊的6to4地址,其格式为:2002:abcd:efgh:子网号::接口ID/48。其中:2002表示固定的IPv6地址前缀;abcd:efgh为用16进制表示的IPv4地址(如1.1.1.1可以表示为0101:0101),用来唯一标识一个6to4网络(如果IPv6孤岛中的主机都采用6to4地址,则该IPv6孤岛称为6to4网络),6to4网络的边缘路由器上连接IPv4网络的接口地址需要配置为此IPv4地址;子网号用来在6to4网络内划分子网;子网号和接口ID共同标识了一个主机在6to4网络内的位置。通过6to4地址中嵌入的IPv4地址可以自动确定隧道的终点,使隧道的建立非常方便。

6to4地址中采用一个全球唯一的IPv4地址标识了一个6to4网络,克服了IPv4兼容IPv6自动隧道的局限性。

·            6to4中继

6to4隧道只能用于前缀为2002::/16的6to4网络之间的通信,但在IPv6网络中也会使用像2001::/16这样的IPv6网络地址。为了实现6to4网络和其它IPv6网络的通信,必须有一台6to4路由器作为网关转发到IPv6网络的报文,这台路由器就叫做6to4中继(6to4 relay)路由器。

如下图所示,在6to4网络的边缘路由器Device A上配置一条到达IPv6网络(非6to4网络)的静态路由,下一跳地址指向6to4中继路由器Device C的6to4地址,这样,所有去往该IPv6网络的报文都会被转发到6to4中继路由器,之后再由6to4中继路由器转发到IPv6网络中,从而实现6to4网络与IPv6网络的互通。

图2-2 6to4隧道和6to4中继原理图

 

3. ISATAP隧道

ISATAP隧道是点到多点的自动隧道技术,为IPv6主机通过IPv4网络接入IPv6网络提供了一个较好的解决方案。

使用ISATAP隧道时,IPv6报文的目的地址要采用特殊的ISATAP地址。ISATAP地址格式为:Prefix:0:5EFE:abcd:efgh/64。其中,64位的Prefix为任何合法的IPv6单播地址前缀;abcd:efgh为用16进制表示的32位IPv4地址(如1.1.1.1可以表示为0101:0101),该IPv4地址不要求全球唯一。通过ISATAP地址中嵌入的IPv4地址可以自动确定隧道的终点,使隧道的建立非常方便。

ISATAP隧道主要用于跨越IPv4网络在IPv6主机与边缘路由器之间、两个边缘路由器之间建立连接。

图2-3 ISATAP隧道原理图

 

2.2  IPv6 over IPv4 隧道配置任务简介

表2-2 IPv6 over IPv4 隧道配置任务简介

配置任务

说明

详细配置

配置IPv6 over IPv4手动隧道

根据组网情况,选择其一

2.3 

配置6to4隧道

2.4 

配置ISATAP隧道

2.5 

 

2.3  配置IPv6 over IPv4手动隧道

2.3.1  配置步骤

配置IPv6 over IPv4手动隧道时,需要注意:

·            在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。

·            在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。

·            如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行此项配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或其他路由协议配置。

表2-3 配置IPv6 over IPv4手动隧道

操作

命令

说明

进入系统视图

system-view

-

进入模式为IPv6 over IPv4手动隧道的Tunnel接口视图

interface tunnel number [ mode ipv6-ipv4 ]

-

设置Tunnel接口的IPv6地址

详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”

缺省情况下,Tunnel接口上不存在IPv6地址

设置隧道的源端地址或源接口

source { ipv4-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址

设置隧道的目的端地址

destination ipv4-address

缺省情况下,未设置隧道的目的端地址

隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址

(可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志

tunnel dfbit enable

缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片

退回系统视图

quit

-

(可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文

tunnel discard ipv4-compatible-packet

缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文

 

2.3.2  配置举例

1. 组网需求

图2-4所示,两个IPv6网络分别通过Switch A和Switch B与IPv4网络连接,要求在Switch A和Switch B之间建立IPv6 over IPv4隧道,使两个IPv6网络可以互通。由于隧道终点的IPv4地址不能从IPv6报文的目的地址中自动获取,因此,需要配置IPv6 over IPv4手动隧道。

2. 组网图

图2-4 IPv6 over IPv4手动隧道组网图

3. 配置步骤

说明

在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv4报文路由可达。

 

(1)       配置Switch A

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN100。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port gigabitethernet 1/0/2

[SwitchA-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 192.168.100.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/1加入VLAN101。

[SwitchA] vlan 101

[SwitchA-vlan101] port gigabitethernet 1/0/1

[SwitchA-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 3002::1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchA] interface gigabitethernet 1/0/3

[SwitchA-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchA-GigabitEthernet1/0/3] quit

# 创建模式为IPv6 over IPv4手动隧道的接口Tunnel0。

[SwitchA] interface tunnel 0 mode ipv6-ipv4

# 配置Tunnel0接口的IPv6地址。

[SwitchA-Tunnel0] ipv6 address 3001::1/64

# 配置Tunnel0接口的源接口为Vlan-interface100。

[SwitchA-Tunnel0] source vlan-interface 100

# 配置Tunnel0接口的目的端地址(Switch B的Vlan-interface100的IP地址)。

[SwitchA-Tunnel0] destination 192.168.50.1

[SwitchA-Tunnel0] quit

# 配置从Switch A经过Tunnel0接口到IPv6 network 2的静态路由。

[SwitchA] ipv6 route-static 3003:: 64 tunnel 0

(2)       配置Switch B

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN100。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port gigabitethernet 1/0/2

[SwitchB-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 192.168.50.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/1加入VLAN101。

[SwitchB] vlan 101

[SwitchB-vlan101] port gigabitethernet 1/0/1

[SwitchB-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 3003::1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchB] interface gigabitethernet 1/0/3

[SwitchB-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchB-GigabitEthernet1/0/3] quit

# 创建模式为IPv6 over IPv4手动隧道的接口Tunnel0。

[SwitchB] interface tunnel 0 mode ipv6-ipv4

# 配置Tunnel0接口的IPv6地址。

[SwitchB-Tunnel0] ipv6 address 3001::2/64

# 配置Tunnel0接口的源接口为Vlan-interface100。

[SwitchB-Tunnel0] source vlan-interface 100

# 配置Tunnel0接口的目的端地址(Switch A的Vlan-interface100的IP地址)。

[SwitchB-Tunnel0] destination 192.168.100.1

[SwitchB-Tunnel0] quit

# 配置从Switch B经过Tunnel0接口到IPv6 network 1的静态路由。

[SwitchB] ipv6 route-static 3002:: 64 tunnel 0

4. 验证配置

# 完成上述配置后,在Switch A和Switch B上分别执行display ipv6 interface命令,可以看出Tunnel0接口处于up状态。(具体显示信息略)

# 从Switch A和Switch B上可以Ping通对端的Vlan-int101接口的IPv6地址。下面仅以Switch A为例。

[SwitchA] ping ipv6 3003::1

Ping6(56 data bytes) 3001::1 --> 3003::1, press CTRL_C to break

56 bytes from 3003::1, icmp_seq=0 hlim=64 time=45.000 ms

56 bytes from 3003::1, icmp_seq=1 hlim=64 time=10.000 ms

56 bytes from 3003::1, icmp_seq=2 hlim=64 time=4.000 ms

56 bytes from 3003::1, icmp_seq=3 hlim=64 time=10.000 ms

56 bytes from 3003::1, icmp_seq=4 hlim=64 time=11.000 ms

 

--- Ping6 statistics for 3003::1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 4.000/16.000/45.000/14.711 ms

2.4  配置6to4隧道

2.4.1  配置步骤

配置6to4隧道时,需要注意:

·            6to4隧道不需要配置隧道的目的端地址,因为隧道的目的端地址可以通过6to4 IPv6地址中嵌入的IPv4地址自动获得。

·            对于自动隧道,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址。

·            如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。对于自动隧道,用户只能配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址,不支持动态路由。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。

表2-4 配置6to4隧道

操作

命令

说明

进入系统视图

system-view

-

进入模式为6to4隧道的Tunnel接口视图

interface tunnel number [ mode ipv6-ipv4 6to4 ]

-

设置Tunnel接口的IPv6地址

详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”

缺省情况下,Tunnel接口上不存在IPv6地址

设置隧道的源端地址或源接口

source { ipv4-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址

(可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志

tunnel dfbit enable

缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片

退回系统视图

quit

-

(可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文

tunnel discard ipv4-compatible-packet

缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文

 

2.4.2  配置6to4隧道举例

1. 组网需求

图2-5所示,两个6to4网络通过网络边缘6to4 switch(Switch A和Switch B)与IPv4网络相连。在Switch A和Switch B之间建立6to4隧道,实现6to4网络中的主机Host A和Host B之间的互通。

2. 组网图

图2-5 6to4隧道组网图

3. 配置思路

为了实现6to4网络之间的互通,除了配置6to4隧道外,还需要为6to4网络内的主机及6to4 switch配置6to4地址。

·            Switch A上接口Vlan-interface100的IPv4地址为2.1.1.1/24,转换成6to4地址后的前缀为2002:0201:0101::/48,Host A的地址必须使用该前缀。

·            Switch B上接口Vlan-interface100的IPv4地址为5.1.1.1/24,转换成6to4地址后的前缀为2002:0501:0101::/48,Host B的地址必须使用该前缀。

4. 配置步骤

说明

在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv4报文路由可达。

 

(1)       配置Switch A

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN100。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port gigabitethernet 1/0/2

[SwitchA-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 2.1.1.1 24

[SwitchA-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/1加入VLAN101。

[SwitchA] vlan 101

[SwitchA-vlan101] port gigabitethernet 1/0/1

[SwitchA-vlan101] quit

# 配置接口Vlan-interface101的地址为6to4地址2002:0201:0101:1::1/64。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2002:0201:0101:1::1/64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchA] interface gigabitethernet 1/0/3

[SwitchA-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchA-GigabitEthernet1/0/3] quit

# 创建模式为6to4隧道的接口Tunnel0。

[SwitchA] interface tunnel 0 mode ipv6-ipv4 6to4

# 配置Tunnel0接口的IPv6地址。

[SwitchA-Tunnel0] ipv6 address 3001::1/64

# 配置Tunnel0接口的源接口为Vlan-interface100。

[SwitchA-Tunnel0] source vlan-interface 100

[SwitchA-Tunnel0] quit

# 配置到目的地址2002::/16,下一跳为Tunnel接口的静态路由。

[SwitchA] ipv6 route-static 2002:: 16 tunnel 0

(2)       配置Switch B

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN100。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port gigabitethernet 1/0/2

[SwitchB-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 5.1.1.1 24

[SwitchB-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/1加入VLAN101。

[SwitchB] vlan 101

[SwitchB-vlan101] port gigabitethernet 1/0/1

[SwitchB-vlan101] quit

# 配置接口Vlan-interface101的地址为6to4地址2002:0501:0101:1::1/64。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2002:0501:0101:1::1/64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchB] interface gigabitethernet 1/0/3

[SwitchB-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchB-GigabitEthernet1/0/3] quit

# 创建模式为6to4隧道的接口Tunnel0。

[SwitchB] interface tunnel 0 mode ipv6-ipv4 6to4

# 配置Tunnel0接口的IPv6地址。

[SwitchB-Tunnel0] ipv6 address 3002::1/64

# 配置Tunnel0接口的源接口为Vlan-interface100。

[SwitchB-Tunnel0] source vlan-interface 100

[SwitchB-Tunnel0] quit

# 配置到目的地址2002::/16,下一跳为Tunnel接口的静态路由。

[SwitchB] ipv6 route-static 2002:: 16 tunnel 0

5. 验证配置

完成以上配置之后,安装Linux系统的Host A与Host B可以互相Ping通。

D:\>ping6 -s 2002:201:101:1::2 2002:501:101:1::2

 

Pinging 2002:501:101:1::2

from 2002:201:101:1::2 with 32 bytes of data:

 

Reply from 2002:501:101:1::2: bytes=32 time=13ms

Reply from 2002:501:101:1::2: bytes=32 time=1ms

Reply from 2002:501:101:1::2: bytes=32 time=1ms

Reply from 2002:501:101:1::2: bytes=32 time<1ms

 

Ping statistics for 2002:501:101:1::2:

    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

    Minimum = 0ms, Maximum = 13ms, Average = 3ms

2.4.3  配置6to4中继举例

1. 组网需求

图2-6所示,Switch A为6to4交换机,其IPv6侧的网络使用6to4地址。Switch B作为6to4中继交换机,它和IPv6网络(2001::/16)相连。要求在Switch A和Switch B之间配置6to4隧道,使得6to4网络中的主机与IPv6网络中的主机互通。

2. 组网图

图2-6 6to4中继组网图

3. 配置思路

6to4中继交换机的配置与6to4交换机的配置相同,但为实现6to4网络与IPv6网络的互通,需要在6to4交换机上配置到IPv6网络的路由,下一跳指向6to4中继交换机的6to4地址。6to4中继交换机上接口Vlan-interface100的IPv4地址为6.1.1.1/24,转换成6to4地址后的前缀为2002:0601:0101::/48,6to4交换机上配置的到IPv6网络的路由下一跳可以是符合该前缀的任意一个地址。

4. 配置步骤

说明

在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv4报文路由可达。

 

(1)       配置Switch A

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN100。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port gigabitethernet 1/0/2

[SwitchA-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 2.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/1加入VLAN101。

[SwitchA] vlan 101

[SwitchA-vlan101] port gigabitethernet 1/0/1

[SwitchA-vlan101] quit

# 配置接口Vlan-interface101的地址为6to4地址2002:0201:0101:1::1/64。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2002:0201:0101:1::1/64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchA] interface gigabitethernet 1/0/3

[SwitchA-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchA-GigabitEthernet1/0/3] quit

# 创建模式为6to4隧道的接口Tunnel0。

[SwitchA] interface tunnel 0 mode ipv6-ipv4 6to4

# 配置Tunnel0接口的IPv6地址。

[SwitchA-Tunnel0] ipv6 address 2002::1/64

# 配置Tunnel0接口的源接口为Vlan-interface100。

[SwitchA-Tunnel0] source vlan-interface 100

[SwitchA-Tunnel0] quit

# 配置到6to4中继的静态路由。

[SwitchA] ipv6 route-static 2002:0601:0101:: 64 tunnel 0

# 配置到纯IPv6网络的缺省路由,指定路由的下一跳地址为6to4中继交换机的6to4地址。

[SwitchA] ipv6 route-static :: 0 2002:0601:0101::1

(2)       配置Switch B

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN100。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port gigabitethernet 1/0/2

[SwitchB-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 6.1.1.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/1加入VLAN101。

[SwitchB] vlan 101

[SwitchB-vlan101] port gigabitethernet 1/0/1

[SwitchB-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2001::1/16

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchB] interface gigabitethernet 1/0/3

[SwitchB-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchB-GigabitEthernet1/0/3] quit

# 创建模式为6to4隧道的接口Tunnel0。

[SwitchB] interface tunnel 0 mode ipv6-ipv4 6to4

# 配置Tunnel0接口的IPv6地址。

[SwitchB-Tunnel0] ipv6 address 2003::1/64

# 配置Tunnel0接口的源接口为Vlan-interface100。

[SwitchB-Tunnel0] source vlan-interface 100

[SwitchB-Tunnel0] quit

# 配置到目的地址2002::/16,下一跳为Tunnel接口的静态路由。

[SwitchB] ipv6 route-static 2002:: 16 tunnel 0

5. 验证配置

完成以上配置之后,安装Linux系统的Host A与Host B可以互相Ping通。

D:\>ping6 -s 2002:201:101:1::2 2001::2

 

Pinging 2001::2

from 2002:201:101:1::2 with 32 bytes of data:

 

Reply from 2001::2: bytes=32 time=13ms

Reply from 2001::2: bytes=32 time=1ms

Reply from 2001::2: bytes=32 time=1ms

Reply from 2001::2: bytes=32 time<1ms

 

Ping statistics for 2001::2:

    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

    Minimum = 0ms, Maximum = 13ms, Average = 3ms

2.5  配置ISATAP隧道

2.5.1  配置步骤

配置ISATAP隧道时,需要注意:

·            ISATAP隧道不需要配置隧道的目的端地址,因为隧道的目的端地址可以通过ISATAP地址中嵌入的IPv4地址自动获得。

·            对于自动隧道,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址。

·            如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。对于自动隧道,用户只能配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址,不支持动态路由。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”。

表2-5 配置ISATAP隧道

操作

命令

说明

进入系统视图

system-view

-

进入模式为ISATAP隧道的Tunnel接口视图

interface tunnel number [ mode ipv6-ipv4 isatap ]

-

设置Tunnel接口的IPv6地址

详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”

缺省情况下,Tunnel接口上不存在IPv6地址

设置隧道的源端地址或源接口

source { ipv4-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址

(可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志

tunnel dfbit enable

缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片

退回系统视图

quit

-

(可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文

tunnel discard ipv4-compatible-packet

缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文

 

2.5.2  配置举例

1. 组网需求

图2-7所示,IPv6网络和IPv4网络通过ISATAP交换机相连,在IPv4网络侧分布着一些IPv6主机。要求将IPv4网络中的IPv6主机通过ISATAP隧道接入到IPv6网络。

2. 组网图

图2-7 ISATAP隧道组网图

3. 配置步骤

(1)       配置Switch

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<Switch> system-view

[Switch] vlan 100

[Switch-vlan100] port gigabitethernet 1/0/1

[Switch-vlan100] quit

# 配置接口Vlan-interface100的IPv6地址。

[Switch] interface vlan-interface 100

[Switch-Vlan-interface100] ipv6 address 3001::1/64

[Switch-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[Switch] vlan 101

[Switch-vlan101] port gigabitethernet 1/0/2

[Switch-vlan101] quit

# 配置接口Vlan-interface101的IP地址。

[Switch] interface vlan-interface 101

[Switch-Vlan-interface101] ip address 1.1.1.1 255.0.0.0

[Switch-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[Switch] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[Switch] interface gigabitethernet 1/0/3

[Switch-GigabitEthernet1/0/3] port service-loopback group 1

[Switch-GigabitEthernet1/0/3] quit

# 创建模式为ISATAP隧道的接口Tunnel0。

[Switch] interface tunnel 0 mode ipv6-ipv4 isatap

# 配置Tunnel0接口采用EUI-64格式形成IPv6地址。

[Switch-Tunnel0] ipv6 address 2001:: 64 eui-64

# 配置Tunnel0接口的源接口为Vlan-interface101。

[Switch-Tunnel0] source vlan-interface 101

# 取消对RA消息发布的抑制,使主机可以通过交换机发布的RA消息获取地址前缀等信息。

[Switch-Tunnel0] undo ipv6 nd ra halt

[Switch-Tunnel0] quit

(2)       配置ISATAP主机

ISATAP主机上的具体配置与主机的操作系统有关,下面仅以Windows XP操作系统为例进行说明。

# 在主机上安装IPv6协议。

C:\>ipv6 install

# 在Windows XP上,ISATAP接口通常为接口2,查看这个ISATAP接口的信息:

C:\>ipv6 if 2

Interface 2: Automatic Tunneling Pseudo-Interface

  Guid {48FCE3FC-EC30-E50E-F1A7-71172AEEE3AE}

  does not use Neighbor Discovery

  does not use Router Discovery

  routing preference 1

  EUI-64 embedded IPv4 address: 0.0.0.0

  router link-layer address: 0.0.0.0

    preferred link-local fe80::5efe:1.1.1.2, life infinite

  link MTU 1280 (true link MTU 65515)

  current hop limit 128

  reachable time 42500ms (base 30000ms)

  retransmission interval 1000ms

  DAD transmits 0

  default site prefix length 48

# 配置ISATAP交换机的IPv4地址。

C:\>netsh interface ipv6 isatap set router 1.1.1.1

# 完成上述配置后,再来查看ISATAP接口的信息。

C:\>ipv6 if 2

Interface 2: Automatic Tunneling Pseudo-Interface

  Guid {48FCE3FC-EC30-E50E-F1A7-71172AEEE3AE}

  does not use Neighbor Discovery

  uses Router Discovery

  routing preference 1

  EUI-64 embedded IPv4 address: 1.1.1.2

  router link-layer address: 1.1.1.1

    preferred global 2001::5efe:1.1.1.2, life 29d23h59m46s/6d23h59m46s (public)

    preferred link-local fe80::5efe:1.1.1.2, life infinite

  link MTU 1500 (true link MTU 65515)

  current hop limit 255

  reachable time 42500ms (base 30000ms)

  retransmission interval 1000ms

  DAD transmits 0

  default site prefix length 48

对比前后的接口信息,我们可以看到主机获取了2001::/64的前缀,自动生成全球单播地址2001::5efe:1.1.1.2,同时还有一行信息“uses Router Discovery”表明主机启用了路由器发现。

# 查看主机上的IPv6路由信息。

C:\>ipv6 rt

2001::/64 -> 2 pref 1if+8=9 life 29d23h59m43s (autoconf)

::/0 -> 2/fe80::5efe:1.1.1.1 pref 1if+256=257 life 29m43s (autoconf)

(3)       配置IPv6主机

# 配置一条到ISATAP交换机隧道的路由。

C:\>netsh interface ipv6 set route 2001::/64 5 3001::1

4. 验证配置

# 在ISATAP主机上Ping IPv6主机的地址,可以Ping通,表明ISATAP隧道已经成功建立,ISATAP主机可访问IPv6网络中的主机。

C:\>ping 3001::2

 

Pinging 3001::2 with 32 bytes of data:

 

Reply from 3001::2: time=1ms

Reply from 3001::2: time=1ms

Reply from 3001::2: time=1ms

Reply from 3001::2: time=1ms

 

Ping statistics for 3001::2:

    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

    Minimum = 1ms, Maximum = 1ms, Average = 1ms


3 IPv4 over IPv4隧道

3.1  IPv4 over IPv4 隧道简介

IPv4 over IPv4隧道(RFC 1853)是对IPv4报文进行封装,使得一个IPv4网络的报文能够在另一个IPv4网络中传输。例如,运行IPv4协议的两个子网位于不同的区域,并且这两个子网都使用私网地址时,可以通过建立IPv4 over IPv4隧道,实现两个子网的互联。

图3-1 IPv4 over IPv4隧道原理图

 

报文在隧道中传输经过封装与解封装两个过程,以图3-1为例说明这两个过程:

·            封装过程

Device A连接IPv4主机所在子网的接口收到IPv4报文后,首先交由IPv4协议栈处理。IPv4协议栈根据IPv4报文头中的目的地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。

Tunnel接口收到此报文后,在IPv4报文外再封装一个IPv4报文头,封装的报文头中源IPv4地址为隧道的源端地址,目的IPv4地址为隧道的目的端地址。封装完成后将报文重新交给IPv4协议栈处理,IPv4协议栈根据添加的IPv4报文头查找路由表,转发报文。

·            解封装过程

解封装过程和封装过程相反。Device B从接口收到IPv4报文后,将其送到IPv4协议栈处理。IPv4协议栈检查接收到的IPv4报文头中的协议号。如果协议号为4(表示封装的报文为IPv4报文),则将此IPv4报文发送到隧道模块进行解封装处理。解封装之后的IPv4报文将重新被送到IPv4协议栈进行二次路由处理。

3.2  配置IPv4 over IPv4隧道

配置IPv4 over IPv4隧道时,需要注意:

·            在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。

·            在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。

·            本端隧道接口的IPv4地址与隧道的目的端地址不能在同一个网段内。

·            如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv4地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。

·            配置经过隧道接口的路由时,路由的目的地址不能与该隧道的目的端地址在同一个网段内。

表3-1 配置IPv4 over IPv4隧道

操作

命令

说明

进入系统视图

system-view

-

进入模式为IPv4 over IPv4隧道的Tunnel接口视图

interface tunnel number [ mode ipv4-ipv4 ]

-

设置Tunnel接口的IPv4地址

ip address ip-address { mask | mask-length } [ sub ]

缺省情况下,Tunnel接口上不存在IPv4地址

设置隧道的源端地址或源接口

source { ipv4-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址

设置隧道的目的端地址

destination ipv4-address

缺省情况下,未设置隧道的目的端地址

隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址

(可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志

tunnel dfbit enable

缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片

 

3.3  配置举例

1. 组网需求

运行IP协议的两个子网Group 1和Group 2位于不同的区域,这两个子网都使用私网地址。通过在交换机Switch A和交换机Switch B之间建立IPv4 over IPv4隧道,实现两个子网的互联。

2. 组网图

图3-2 IPv4 over IPv4隧道组网图

3. 配置步骤

说明

在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv4报文路由可达。

 

(1)       配置Switch A

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port gigabitethernet 1/0/1

[SwitchA-vlan100] quit

# 配置接口Vlan-interface100的地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 10.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[SwitchA] vlan 101

[SwitchA-vlan101] port gigabitethernet 1/0/2

[SwitchA-vlan101] quit

# 配置接口Vlan-interface101的IP地址。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ip address 2.1.1.1 255.255.255.0

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchA] interface gigabitethernet 1/0/3

[SwitchA-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchA-GigabitEthernet1/0/3] quit

# 创建模式为IPv4 over IPv4隧道的接口Tunnel1。

[SwitchA] interface tunnel 1 mode ipv4-ipv4

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel1接口的源端地址(Vlan-interface101的IP地址)。

[SwitchA-Tunnel1] source 2.1.1.1

# 配置Tunnel1接口的目的端地址(Switch B的Vlan-interface101的IP地址)。

[SwitchA-Tunnel1] destination 3.1.1.1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ip route-static 10.1.3.0 255.255.255.0 tunnel 1

(2)       配置Switch B

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port gigabitethernet 1/0/1

[SwitchB-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 10.1.3.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[SwitchB] vlan 101

[SwitchB-vlan101] port gigabitethernet 1/0/2

[SwitchB-vlan101] quit

# 配置接口Vlan-interface101的IP地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ip address 3.1.1.1 255.255.255.0

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchB] interface gigabitethernet 1/0/3

[SwitchB-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchB-GigabitEthernet1/0/3] quit

# 创建模式为IPv4 over IPv4隧道的接口Tunnel2。

[SwitchB] interface tunnel 2 mode ipv4-ipv4

# 配置Tunnel2接口的IP地址。

[SwitchB-Tunnel2] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel2接口的源端地址(Vlan-interface101的IP地址)。

[SwitchB-Tunnel2] source 3.1.1.1

# 配置Tunnel2接口的目的端地址(SwitchA的Vlan-interface101的IP地址)。

[SwitchB-Tunnel2] destination 2.1.1.1

[SwitchB-Tunnel2] quit

# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。

[SwitchB] ip route-static 10.1.1.0 255.255.255.0 tunnel 2

4. 验证配置

# 完成上述配置后,在Switch A和Switch B上分别执行display interface tunnel命令,可以看出Tunnel接口处于up状态。(具体显示信息略)

# 从Switch A和Switch B上可以Ping通对端的Vlan-interface100接口的IPv4地址。下面仅以Switch A为例。

[SwitchA] ping -a 10.1.1.1 10.1.3.1

Ping 10.1.3.1 (10.1.3.1) from 10.1.1.1: 56 data bytes, press CTRL_C to break

56 bytes from 10.1.3.1: icmp_seq=0 ttl=255 time=2.000 ms

56 bytes from 10.1.3.1: icmp_seq=1 ttl=255 time=1.000 ms

56 bytes from 10.1.3.1: icmp_seq=2 ttl=255 time=0.000 ms

56 bytes from 10.1.3.1: icmp_seq=3 ttl=255 time=1.000 ms

56 bytes from 10.1.3.1: icmp_seq=4 ttl=255 time=1.000 ms

 

--- Ping statistics for 10.1.3.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.000/1.000/2.000/0.632 m


4 IPv4 over IPv6隧道

4.1  IPv4 over IPv6隧道简介

随着IPv6网络的广泛部署,IPv6网络将逐渐取代IPv4网络,占据主导地位。尚未被IPv6网络取代的IPv4网络将形成孤岛,需要通过IPv6网络互通。IPv4 over IPv6隧道在IPv4报文上封装IPv6的报文头,通过隧道使IPv4报文穿越IPv6网络,从而实现通过IPv6网络连接隔离的IPv4网络孤岛。

图4-1 IPv4 over IPv6隧道原理图

 

IPv4报文在隧道中传输经过封装与解封装两个过程,以图4-1为例说明这两个过程:

·            封装过程

Device A连接IPv4网络的接口收到IPv4报文后,首先交由IPv4协议栈处理。IPv4协议栈根据IPv4报文头中的目的地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。

Tunnel接口收到此报文后添加IPv6报文头,IPv6报文头中源IPv6地址为隧道的源端地址,目的IPv6地址为隧道的目的端地址。封装完成后将报文交给IPv6模块处理。IPv6协议模块根据IPv6报文头的目的地址重新确定如何转发此报文。

·            解封装过程

解封装过程和封装过程相反。从连接IPv6网络的接口接收到IPv6报文后,将其送到IPv6协议模块。IPv6协议模块检查IPv6报文封装的协议类型。若封装的协议为IPv4,则报文进入隧道处理模块进行解封装处理。解封装之后的IPv4报文被送往IPv4协议模块进行二次路由处理。

4.2  配置IPv4 over IPv6隧道

4.2.1  配置步骤

配置IPv4 over IPv6隧道时,需要注意:

·            在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。

·            在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。

·            如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv4地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置。

表4-1 配置IPv4 over IPv6隧道

操作

命令

说明

进入系统视图

system-view

-

进入模式为IPv6隧道的Tunnel接口视图

interface tunnel number [ mode ipv6 ]

-

设置Tunnel接口的IPv4地址

ip address ip-address { mask | mask-length } [ sub ]

缺省情况下,Tunnel接口上不存在IPv4地址

设置隧道的源端地址或源接口

source { ipv6-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口下的最小地址将作为封装后隧道报文的源IPv6地址

设置隧道的目的端地址

destination ipv6-address

缺省情况下,未设置隧道的目的端地址

隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的IPv6地址

 

4.2.2  配置举例

1. 组网需求

两个IPv4网络分别通过Switch A和Switch B与IPv6网络连接。通过在Switch A和Switch B之间建立IPv4 over IPv6隧道,实现两个IPv4网络穿越IPv6网络互联。

2. 组网图

图4-2 IPv4 over IPv6隧道组网图

3. 配置步骤

说明

在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv6报文路由可达。

 

(1)       配置Switch A

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port gigabitethernet 1/0/1

[SwitchA-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ip address 30.1.1.1 255.255.255.0

[SwitchA-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[SwitchA] vlan 101

[SwitchA-vlan101] port gigabitethernet 1/0/2

[SwitchA-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2001::1:1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchA] interface gigabitethernet 1/0/3

[SwitchA-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchA-GigabitEthernet1/0/3] quit

# 创建模式为IPv6隧道的接口Tunnel1。

[SwitchA] interface tunnel 1 mode ipv6

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ip address 30.1.2.1 255.255.255.0

# 配置Tunnel1接口的源端地址(Vlan-interface101的IP地址)。

[SwitchA-Tunnel1] source 2001::1:1

# 配置Tunnel1接口的目的端地址(Switch B的Vlan-interface101的IP地址)。

[SwitchA-Tunnel1] destination 2002::2:1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到IPv4 network 2的静态路由。

[SwitchA] ip route-static 30.1.3.0 255.255.255.0 tunnel 1

(2)       配置Switch B

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port gigabitethernet 1/0/1

[SwitchB-vlan100] quit

# 配置接口Vlan-interface100的IP地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ip address 30.1.3.1 255.255.255.0

[SwitchB-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[SwitchB] vlan 101

[SwitchB-vlan101] port gigabitethernet 1/0/2

[SwitchB-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2002::2:1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchB] interface gigabitethernet 1/0/3

[SwitchB-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchB-GigabitEthernet1/0/3] quit

# 创建模式为IPv6隧道的接口Tunnel2。

[SwitchB] interface tunnel 2 mode ipv6

# 配置Tunnel2接口的IP地址。

[SwitchB-Tunnel2] ip address 30.1.2.2 255.255.255.0

# 配置Tunnel2接口的源端地址(Vlan-interface101的IP地址)。

[SwitchB-Tunnel2] source 2002::2:1

# 配置Tunnel2接口的目的端地址(Switch A的Vlan-interface101的IP地址)。

[SwitchB-Tunnel2] destination 2001::1:1

[SwitchB-Tunnel2] quit

# 配置从Switch B经过Tunnel2接口到IPv4 network 1的静态路由。

[SwitchB] ip route-static 30.1.1.0 255.255.255.0 tunnel 2

4. 验证配置

# 完成上述配置后,在Switch A和Switch B上分别执行display interface tunnel命令,可以看出Tunnel接口处于up状态。(具体显示信息略)

# 从Switch A和Switch B上可以Ping通对端的Vlan-interface100接口的IPv4地址。下面仅以Switch A为例。

[SwitchA] ping -a 30.1.1.1 30.1.3.1

Ping 30.1.3.1 (30.1.3.1) from 30.1.1.1: 56 data bytes, press CTRL_C to break

56 bytes from 30.1.3.1: icmp_seq=0 ttl=255 time=3.000 ms

56 bytes from 30.1.3.1: icmp_seq=1 ttl=255 time=1.000 ms

56 bytes from 30.1.3.1: icmp_seq=2 ttl=255 time=0.000 ms

56 bytes from 30.1.3.1: icmp_seq=3 ttl=255 time=1.000 ms

56 bytes from 30.1.3.1: icmp_seq=4 ttl=255 time=1.000 ms

 

--- Ping statistics for 30.1.3.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.000/1.200/3.000/0.980 ms


5 IPv6 over IPv6隧道

5.1  IPv6 over IPv6隧道简介

IPv6 over IPv6隧道(RFC 2473)是对IPv6报文进行封装,使这些被封装的报文能够在另一个IPv6网络中传输,封装后的报文即IPv6隧道报文。例如,如果运行IPv6协议的两个子网的网络地址不希望泄露到IPv6网络中,则可以通过建立IPv6 over IPv6隧道,实现在两个子网的网络地址不被泄露的情况下,使两个子网互通。

图5-1 IPv6 over IPv6隧道原理图

 

IPv6报文在隧道中传输经过封装与解封装两个过程,以图5-1为例说明这两个过程:

·            封装过程

Device A连接网络A的接口收到IPv6报文后,首先交由IPv6协议模块处理。IPv6协议模块根据报文的目的IPv6地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。

Tunnel接口收到此报文后,为IPv6报文再封装一个IPv6报文头,封装的IPv6报文头中源IPv6地址为隧道的源端地址,目的IPv6地址为隧道的目的端地址。封装完成后将报文交给IPv6模块处理。IPv6协议模块根据添加的IPv6报文头的目的地址重新确定如何转发此报文。

·            解封装过程

解封装过程和封装过程相反。从IPv6网络接口接收的报文被送到IPv6协议模块。IPv6协议模块检查IPv6报文封装的协议类型。若封装的协议为IPv6,则报文进入隧道处理模块进行解封装处理;解封装之后的报文被送往相应的协议模块进行二次路由处理。


 

5.2  配置IPv6 over IPv6隧道

配置IPv6 over IPv6隧道时,需要注意:

·            在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。

·            在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。

·            本端隧道接口的IPv6地址与隧道的目的端地址不能在同一个网段内。

·            如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置动态路由,在Tunnel接口使能动态路由协议。在隧道的两端都要进行转发路由的配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或其他路由协议配置。

·            配置经过隧道接口的路由时,路由的目的地址不能与该隧道的目的端地址在同一个网段内。

表5-1 配置IPv6 over IPv6隧道

操作

命令

说明

进入系统视图

system-view

-

进入模式为IPv6 over IPv6隧道的Tunnel接口视图

interface tunnel number [ mode ipv6 ]

-

设置Tunnel接口的IPv6地址

详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”

缺省情况下,Tunnel接口上不存在IPv6地址

设置隧道的源端地址或源接口

source { ipv6-address | interface-type interface-number }

缺省情况下,未设置隧道的源端地址和源接口

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口下的最小地址将作为封装后隧道报文的源IPv6地址

设置隧道的目的端地址

destination ipv6-address

缺省情况下,未设置隧道的目的端地址

隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的IPv6地址

退回系统视图

quit

-

(可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文

tunnel discard ipv4-compatible-packet

缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文

 

5.3  配置举例

1. 组网需求

运行IPv6协议的两个子网Group 1和Group 2的网络地址不希望泄露到IPv6网络中。网络管理员通过在交换机Switch A和交换机Switch B之间建立IPv6 over IPv6隧道,实现在Group 1和Group 2的网络地址不被泄露的情况下,确保Group 1和Group 2互通。

2. 组网图

图5-2 IPv6 over IPv6隧道组网图

3. 配置步骤

说明

在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv6报文路由可达。

 

(1)       配置Switch A

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<SwitchA> system-view

[SwitchA] vlan 100

[SwitchA-vlan100] port gigabitethernet 1/0/1

[SwitchA-vlan100] quit

# 配置接口Vlan-interface100的IPv6地址。

[SwitchA] interface vlan-interface 100

[SwitchA-Vlan-interface100] ipv6 address 2002:1::1 64

[SwitchA-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[SwitchA] vlan 101

[SwitchA-vlan101] port gigabitethernet 1/0/2

[SwitchA-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchA] interface vlan-interface 101

[SwitchA-Vlan-interface101] ipv6 address 2001::11:1 64

[SwitchA-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchA] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchA] interface gigabitethernet 1/0/3

[SwitchA-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchA-GigabitEthernet1/0/3] quit

# 创建模式为IPv6隧道的接口Tunnel1。

[SwitchA] interface tunnel 1 mode ipv6

# 配置Tunnel1接口的IP地址。

[SwitchA-Tunnel1] ipv6 address 3001::1:1 64

# 配置Tunnel1接口的源端地址(Vlan-interface101的IP地址)。

[SwitchA-Tunnel1] source 2001::11:1

# 配置Tunnel1接口的目的端地址(Switch B的Vlan-interface101的IP地址)。

[SwitchA-Tunnel1] destination 2002::22:1

[SwitchA-Tunnel1] quit

# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。

[SwitchA] ipv6 route-static 2002:3:: 64 tunnel 1

(2)       配置Switch B

# 配置接口GigabitEthernet1/0/1加入VLAN100。

<SwitchB> system-view

[SwitchB] vlan 100

[SwitchB-vlan100] port gigabitethernet 1/0/1

[SwitchB-vlan100] quit

# 配置接口Vlan-interface100的IPv6地址。

[SwitchB] interface vlan-interface 100

[SwitchB-Vlan-interface100] ipv6 address 2002:3::1 64

[SwitchB-Vlan-interface100] quit

# 配置接口GigabitEthernet1/0/2(隧道的实际物理接口)加入VLAN101。

[SwitchB] vlan 101

[SwitchB-vlan101] port gigabitethernet 1/0/2

[SwitchB-vlan101] quit

# 配置接口Vlan-interface101的IPv6地址。

[SwitchB] interface vlan-interface 101

[SwitchB-Vlan-interface101] ipv6 address 2002::22:1 64

[SwitchB-Vlan-interface101] quit

# 创建业务环回组1,并配置服务类型为tunnel。

[SwitchB] service-loopback group 1 type tunnel

# 将接口GigabitEthernet1/0/3加入业务环回组1。

[SwitchB] interface gigabitethernet 1/0/3

[SwitchB-GigabitEthernet1/0/3] port service-loopback group 1

[SwitchB-GigabitEthernet1/0/3] quit

# 创建模式为IPv6隧道的接口Tunnel2。

[SwitchB] interface tunnel 2 mode ipv6

# 配置Tunnel2接口的IP地址。

[SwitchB-Tunnel2] ipv6 address 3001::1:2 64

# 配置Tunnel2接口的源端地址(Vlan-interface101的IP地址)。

[SwitchB-Tunnel2] source 2002::22:1

# 配置Tunnel2接口的目的端地址(Switch A的Vlan-interface101的IP地址)。

[SwitchB-Tunnel2] destination 2001::11:1

[SwitchB-Tunnel2] quit

# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。

[SwitchB] ipv6 route-static 2002:1:: 64 tunnel 2

4. 验证配置

# 完成上述配置后,在Switch A和Switch B上分别执行display ipv6 interface命令,可以看出Tunnel接口处于up状态。(具体显示信息略)

# 从Switch A和Switch B上可以Ping通对端的Vlan-interface100接口的IPv6地址。下面仅以Switch A为例。

[SwitchA] ping ipv6 -a 2002:1::1 2002:3::1

Ping6(56 data bytes) 2002:1::1 --> 2002:3::1, press CTRL_C to break

56 bytes from 2002:3::1, icmp_seq=0 hlim=64 time=9.000 ms

56 bytes from 2002:3::1, icmp_seq=1 hlim=64 time=1.000 ms

56 bytes from 2002:3::1, icmp_seq=2 hlim=64 time=0.000 ms

56 bytes from 2002:3::1, icmp_seq=3 hlim=64 time=0.000 ms

56 bytes from 2002:3::1, icmp_seq=4 hlim=64 time=0.000 ms

 

--- Ping6 statistics for 2002:3::1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.000/2.000/9.000/3.521 ms

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们