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

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

11-隧道配置

本章节下载 11-隧道配置  (584.43 KB)

docurl=/cn/Service/Document_Software/Document_Center/Routers/Catalog/CR/CR19000/Configure/Operation_Manual/H3C_CR19000_CG-R1218-5W100/05/201905/1182380_30005_0.htm

11-隧道配置

  录

1 隧道

1.1 隧道简介

1.2 支持的隧道技术

1.3 隧道配置限制和指导

1.4 配置Tunnel接口

1.4.1 功能简介

1.4.2 Tunnel接口配置任务简介

1.4.3 创建Tunnel接口

1.4.4 配置封装后隧道报文的属性

1.4.5 恢复当前Tunnel接口的缺省配置

1.5 隧道接口显示和维护

1.6 隧道常见故障处理

1.6.1 Tunnel接口未处于up状态

2 IPv6 over IPv4隧道

2.1 IPv6 over IPv4 隧道简介

2.1.1 IPv6 over IPv4隧道原理

2.1.2 IPv6 over IPv4隧道模式分类

2.1.3 IPv6 over IPv4手动隧道

2.1.4 IPv4兼容IPv6自动隧道

2.1.5 6to4隧道

2.1.6 ISATAP隧道

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

2.3 配置IPv6 over IPv4手动隧道

2.3.1 配置限制和指导

2.3.2 配置步骤

2.3.3 IPv6 over IPv4手动隧道典型配置举例

2.4 配置IPv4兼容IPv6自动隧道

2.4.1 配置限制和指导

2.4.2 配置步骤

2.4.3 IPv4兼容IPv6自动隧道典型配置举例

2.5 配置6to4隧道

2.5.1 配置限制和指导

2.5.2 配置步骤

2.5.3 6to4隧道典型配置举例

2.5.4 6to4中继典型配置举例

2.6 配置ISATAP隧道

2.6.1 配置限制和指导

2.6.2 配置步骤

2.6.3 ISATAP隧道典型配置举例

3 IPv4 over IPv4隧道

3.1 IPv4 over IPv4 隧道简介

3.2 IPv4 over IPv4隧道配置限制和指导

3.3 配置IPv4 over IPv4隧道

3.4 IPv4 over IPv4隧道典型配置举例

4 GRE

4.1 GRE简介

4.1.1 GRE封装后的报文格式

4.1.2 GRE隧道原理

4.1.3 GRE应用场景

4.1.4 协议规范

4.2 GRE配置限制和指导

4.3 配置GRE over IPv4隧道

4.4 GRE显示和维护

4.5 GRE典型配置举例

4.5.1 GRE over IPv4隧道典型配置举例

4.6 GRE常见故障处理

4.6.1 GRE隧道两端连接的主机之间无法ping通

 


1 隧道

说明

本章仅介绍隧道接口的配置,有关隧道模式的介绍请参见后续章节。

 

1.1  隧道简介

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

1.2  支持的隧道技术

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

·     GRE(Generic Routing Encapsulation,通用路由封装)隧道。

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

·     VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)隧道、VXLAN-DCI(VXLAN Data Center Interconnect,VXLAN数据中心互联)隧道,有关VXLAN、VXLAN-DCI的相关介绍和配置请参见“VXLAN配置指导”中的“VXLAN”。

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

1.3  隧道配置限制和指导

主备倒换或备板拔出时,建立在主控板或备板上的隧道接口不会被删除,若再配置相同的隧道接口,系统会提示隧道接口已经存在。如果需要删除隧道接口,请使用undo interface tunnel命令。

1.4  配置Tunnel接口

1.4.1  功能简介

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

1.4.2  Tunnel接口配置任务简介

Tunnel接口配置任务如下:

(1)     创建Tunnel接口

(2)     (可选)配置封装后隧道报文的属性

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

1.4.3  创建Tunnel接口

(1)     进入系统视图。

system-view

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

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

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

(3)     设置隧道的源端地址或源接口。

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

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

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

(4)     设置隧道的目的端地址。

destination ipv4-address

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

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

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

description text

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

(6)     (可选)配置Tunnel接口的MTU值。

mtu size

(7)     (可选)配置Tunnel接口的期望带宽。

bandwidth bandwidth-value

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

期望带宽供业务模块使用,不会对接口实际带宽造成影响。

(8)     (可选)开启Tunnel接口。

undo shutdown

1.4.4  配置封装后隧道报文的属性

(1)     进入系统视图。

system-view

(2)     进入Tunnel接口视图。

interface tunnel number

(3)     设置封装后隧道报文的ToS。

tunnel tos tos-value

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

(4)     设置封装后隧道报文的TTL值。

tunnel ttl ttl-value

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

1.4.5  恢复当前Tunnel接口的缺省配置

1. 配置限制和指导

注意

接口下的某些配置恢复到缺省情况后,会对设备上当前运行的业务产生影响。建议您在执行本配置前,完全了解其对网络产生的影响。

 

您可以在执行default命令后通过display this命令确认执行效果。对于未能成功恢复缺省的配置,建议您查阅相关功能的命令手册,手工执行恢复该配置缺省情况的命令。如果操作仍然不能成功,您可以通过设备的提示信息定位原因。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     进入Tunnel接口视图。

interface tunnel number

(3)     恢复当前接口的缺省配置。

default

1.5  隧道接口显示和维护

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

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

表1-1 隧道显示和维护

操作

命令

显示Tunnel接口的相关信息

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

显示Tunnel接口的IPv6相关信息

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

清除Tunnel接口的统计信息

reset counters interface [ tunnel [ number ] ]

 

1.6  隧道常见故障处理

1.6.1  Tunnel接口未处于up状态

1. 故障现象

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

2. 故障分析

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

3. 处理过程

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

使用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地址

自动隧道

IPv4兼容IPv6自动隧道

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

IPv4兼容IPv6地址,其格式为:

::IPv4-destination-address/96

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

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表示隧道的目的端地址

 

2.1.3  IPv6 over IPv4手动隧道

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

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

2.1.4  IPv4兼容IPv6自动隧道

IPv4兼容IPv6自动隧道是点到多点的链路。隧道两端采用特殊的IPv6地址:IPv4兼容IPv6地址,其格式为:0:0:0:0:0:0:a.b.c.d/96,其中a.b.c.d是IPv4地址。通过这个嵌入的IPv4地址可以自动确定隧道的目的端地址。

IPv4兼容IPv6自动隧道的建立非常方便。但是,由于它使用IPv4兼容IPv6地址,采用IPv4兼容IPv6自动隧道通信的主机和路由器必须具有全球唯一的IPv4地址,无法解决IPv4地址空间耗尽的问题,存在一定的局限性。

2.1.5  6to4隧道

1. 普通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自动隧道的局限性。

2. 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中继原理图

 

2.1.6  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隧道配置任务简介

IPv6 over IPv4隧道配置任务如下:

请选择以下一项任务进行配置:

·     配置IPv6 over IPv4手动隧道

·     配置IPv4兼容IPv6自动隧道

·     配置6to4隧道

·     配置ISATAP隧道

2.3  配置IPv6 over IPv4手动隧道

2.3.1  配置限制和指导

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

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

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

2.3.2  配置步骤

(1)     进入系统视图。

system-view

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

interface tunnel number [ mode ipv6-ipv4 ]

(3)     设置Tunnel接口的IPv6地址。

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

(4)     设置隧道的源端地址或源接口。

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

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

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

(5)     设置隧道的目的端地址。

destination ipv4-address

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

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

2.3.3  IPv6 over IPv4手动隧道典型配置举例

1. 组网需求

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

2. 组网图

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

3. 配置步骤

说明

在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。

 

(1)     配置Router A

# 配置接口GigabitEthernet1/2/0/2的地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/2/0/2

[RouterA-GigabitEthernet1/2/0/2] ip address 192.168.100.1 255.255.255.0

[RouterA-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的IPv6地址。

[RouterA] interface gigabitethernet 1/2/0/1

[RouterA-GigabitEthernet1/2/0/1] ipv6 address 3002::1 64

[RouterA-GigabitEthernet1/2/0/1] quit

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

[RouterA] interface tunnel 0 mode ipv6-ipv4

# 配置Tunnel0接口的IPv6地址。

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/2。

[RouterA-Tunnel0] source gigabitethernet 1/2/0/2

# 配置Tunnel0接口的目的端地址(Router B的GigabitEthernet1/2/0/2的IP地址)。

[RouterA-Tunnel0] destination 192.168.50.1

[RouterA-Tunnel0] quit

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

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

(2)     配置Router B

# 配置接口GigabitEthernet1/2/0/2的地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/2/0/2

[RouterB-GigabitEthernet1/2/0/2] ip address 192.168.50.1 255.255.255.0

[RouterB-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的IPv6地址。

[RouterB] interface gigabitethernet 1/2/0/1

[RouterB-GigabitEthernet1/2/0/1] ipv6 address 3003::1 64

[RouterB-GigabitEthernet1/2/0/1] quit

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

[RouterB] interface tunnel 0 mode ipv6-ipv4

# 配置Tunnel0接口的IPv6地址。

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/2。

[RouterB-Tunnel0] source gigabitethernet 1/2/0/2

# 配置Tunnel0接口的目的端地址(Router A的GigabitEthernet1/2/0/2的IP地址)。

[RouterB-Tunnel0] destination 192.168.100.1

[RouterB-Tunnel0] quit

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

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

4. 验证配置

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

# 从Router A和Router B上可以Ping通对端的GigabitEthernet1/2/0/1接口的IPv6地址。下面仅以Router A为例。

[RouterA] 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  配置IPv4兼容IPv6自动隧道

2.4.1  配置限制和指导

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

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

2.4.2  配置步骤

(1)     进入系统视图。

system-view

(2)     进入模式为IPv4兼容IPv6自动隧道的Tunnel接口视图。

interface tunnel number [ mode ipv6-ipv4 auto-tunnel ]

(3)     设置Tunnel接口的IPv6地址。

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

(4)     设置隧道的源端地址或源接口。

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

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

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

2.4.3  IPv4兼容IPv6自动隧道典型配置举例

1. 组网需求

图2-5所示,两台具有双协议栈的路由器Router A和Router B通过IPv4网络连接。网络管理员希望建立IPv4兼容IPv6自动隧道,使得这两台设备能够通过IPv6协议互通。

2. 组网图

图2-5 IPv4兼容IPv6自动隧道组网图

3. 配置步骤

说明

在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。

 

(1)     配置Router A

# 配置接口GigabitEthernet1/2/0/1的地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/2/0/1

[RouterA-GigabitEthernet1/2/0/1] ip address 192.168.100.1 255.255.255.0

[RouterA-GigabitEthernet1/2/0/1] quit

# 创建模式为IPv4兼容IPv6自动隧道的接口Tunnel0。

[RouterA] interface tunnel 0 mode ipv6-ipv4 auto-tunnel

# 配置Tunnel0接口的IPv6地址为IPv4兼容IPv6地址::192.168.100.1/96。

[RouterA-Tunnel0] ipv6 address ::192.168.100.1/96

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/1。

[RouterA-Tunnel0] source gigabitethernet 1/2/0/1

(2)     配置Router B

# 配置接口GigabitEthernet1/2/0/1的地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/2/0/1

[RouterB-GigabitEthernet1/2/0/1] ip address 192.168.50.1 255.255.255.0

[RouterB-GigabitEthernet1/2/0/1] quit

# 创建模式为IPv4兼容IPv6自动隧道的接口Tunnel0。

[RouterB] interface tunnel 0 mode ipv6-ipv4 auto-tunnel

# 配置Tunnel0接口的IPv6地址为IPv4兼容IPv6地址::192.168.50.1/96。

[RouterB-Tunnel0] ipv6 address ::192.168.50.1/96

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/1。

[RouterB-Tunnel0] source gigabitethernet 1/2/0/1

4. 验证配置

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

# 从Router A和Router B上可以Ping通对端的IPv4兼容IPv6地址。下面仅以Router A为例。

[RouterA-Tunnel0] ping ipv6 ::192.168.50.1

Ping6(56 data bytes) ::192.168.100.1 --> ::192.168.50.1, press CTRL_C to break

56 bytes from ::192.168.50.1, icmp_seq=0 hlim=64 time=17.000 ms

56 bytes from ::192.168.50.1, icmp_seq=1 hlim=64 time=9.000 ms

56 bytes from ::192.168.50.1, icmp_seq=2 hlim=64 time=11.000 ms

56 bytes from ::192.168.50.1, icmp_seq=3 hlim=64 time=9.000 ms

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

 

--- Ping6 statistics for ::192.168.50.1 ---

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

round-trip min/avg/max/std-dev = 9.000/11.400/17.000/2.939 ms

2.5  配置6to4隧道

2.5.1  配置限制和指导

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

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

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

2.5.2  配置步骤

(1)     进入系统视图。

system-view

(2)     进入模式为6to4隧道的Tunnel接口视图。

interface tunnel number [ mode ipv6-ipv4 6to4 ]

(3)     设置Tunnel接口的IPv6地址。

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

(4)     设置隧道的源端地址或源接口。

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

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

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

2.5.3  6to4隧道典型配置举例

1. 组网需求

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

2. 组网图

图2-6 6to4隧道组网图

3. 配置思路

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

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

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

4. 配置步骤

说明

在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。

 

(1)     配置Router A

# 配置接口GigabitEthernet1/2/0/2的地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/2/0/2

[RouterA-GigabitEthernet1/2/0/2] ip address 2.1.1.1 24

[RouterA-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的地址为6to4地址2002:0201:0101:1::1/64。

[RouterA] interface gigabitethernet 1/2/0/1

[RouterA-GigabitEthernet1/2/0/1] ipv6 address 2002:0201:0101:1::1/64

[RouterA-GigabitEthernet1/2/0/1] quit

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

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

# 配置Tunnel0接口的IPv6地址。

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/2。

[RouterA-Tunnel0] source gigabitethernet 1/2/0/2

[RouterA-Tunnel0] quit

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

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

(2)     配置Router B

# 配置接口GigabitEthernet1/2/0/2的地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/2/0/2

[RouterB-GigabitEthernet1/2/0/2] ip address 5.1.1.1 24

[RouterB-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的地址为6to4地址2002:0501:0101:1::1/64。

[RouterB] interface gigabitethernet 1/2/0/1

[RouterB-GigabitEthernet1/2/0/1] ipv6 address 2002:0501:0101:1::1/64

[RouterB-GigabitEthernet1/2/0/1] quit

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

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

# 配置Tunnel0接口的IPv6地址。

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/2。

[RouterB-Tunnel0] source gigabitethernet 1/2/0/2

[RouterB-Tunnel0] quit

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

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

5. 验证配置

完成以上配置之后,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.5.4  6to4中继典型配置举例

1. 组网需求

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

2. 组网图

图2-7 6to4中继组网图

3. 配置思路

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

4. 配置步骤

说明

在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。

 

(1)     配置Router A

# 配置接口GigabitEthernet1/2/0/2的地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/2/0/2

[RouterA-GigabitEthernet1/2/0/2] ip address 2.1.1.1 255.255.255.0

[RouterA-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的地址为6to4地址2002:0201:0101:1::1/64。

[RouterA] interface gigabitethernet 1/2/0/1

[RouterA-GigabitEthernet1/2/0/1] ipv6 address 2002:0201:0101:1::1/64

[RouterA-GigabitEthernet1/2/0/1] quit

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

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

# 配置Tunnel0接口的IPv6地址。

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/2。

[RouterA-Tunnel0] source gigabitethernet 1/2/0/2

[RouterA-Tunnel0] quit

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

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

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

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

(2)     配置Router B

# 配置接口GigabitEthernet1/2/0/2的地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/2/0/2

[RouterB-GigabitEthernet1/2/0/2] ip address 6.1.1.1 255.255.255.0

[RouterB-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的地址。

[RouterB] interface gigabitethernet 1/2/0/1

[RouterB-GigabitEthernet1/2/0/1] ipv6 address 2001::1/16

[RouterB-GigabitEthernet1/2/0/1] quit

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

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

# 配置Tunnel0接口的IPv6地址。

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/2。

[RouterB-Tunnel0] source gigabitethernet 1/2/0/2

[RouterB-Tunnel0] quit

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

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

5. 验证配置

完成以上配置之后,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.6  配置ISATAP隧道

2.6.1  配置限制和指导

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

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

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

2.6.2  配置步骤

(1)     进入系统视图。

system-view

(2)     进入模式为ISATAP隧道的Tunnel接口视图。

interface tunnel number [ mode ipv6-ipv4 isatap ]

(3)     设置Tunnel接口的IPv6地址。

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

(4)     设置隧道的源端地址或源接口。

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

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

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

2.6.3  ISATAP隧道典型配置举例

1. 组网需求

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

2. 组网图

图2-8 ISATAP隧道组网图

3. 配置步骤

(1)     配置Router

# 配置接口GigabitEthernet1/2/0/2的地址。

<Router> system-view

[Router] interface gigabitethernet 1/2/0/2

[Router-GigabitEthernet1/2/0/2] ipv6 address 3001::1/64

[Router-GigabitEthernet1/2/0/2] quit

# 配置接口GigabitEthernet1/2/0/1的地址。

[Router] interface gigabitethernet 1/2/0/1

[Router-GigabitEthernet1/2/0/1] ip address 1.1.1.1 255.0.0.0

[Router-GigabitEthernet1/2/0/1] quit

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

[Router] interface tunnel 0 mode ipv6-ipv4 isatap

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

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

# 配置Tunnel0接口的源接口为GigabitEthernet1/2/0/1。

[Router-Tunnel0] source gigabitethernet 1/2/0/1

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

[Router-Tunnel0] undo ipv6 nd ra halt

[Router-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主机

# 配置一条到边界路由器隧道的路由。

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隧道配置限制和指导

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

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

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

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

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

3.3  配置IPv4 over IPv4隧道

(1)     进入系统视图。

system-view

(2)     进入模式为IPv4 over IPv4隧道的Tunnel接口视图。

interface tunnel number [ mode ipv4-ipv4 ]

(3)     设置Tunnel接口的IPv4地址。

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

(4)     设置隧道的源端地址或源接口。

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

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

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

(5)     设置隧道的目的端地址。

destination ipv4-address

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

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

3.4  IPv4 over IPv4隧道典型配置举例

1. 组网需求

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

2. 组网图

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

3. 配置步骤

说明

在开始下面的配置之前,请确保Router A和Router B之间IPv4报文路由可达。

 

(1)     配置Router A

# 配置接口GigabitEthernet1/2/0/1的地址。

<RouterA> system-view

[RouterA] interface gigabitethernet 1/2/0/1

[RouterA-GigabitEthernet1/2/0/1] ip address 10.1.1.1 255.255.255.0

[RouterA-GigabitEthernet1/2/0/1] quit

# 配置接口GigabitEthernet1/2/0/2(隧道的实际物理接口)的地址。

[RouterA] interface gigabitethernet 1/2/0/2

[RouterA-GigabitEthernet1/2/0/2] ip address 2.1.1.1 255.255.255.0

[RouterA-GigabitEthernet1/2/0/2] quit

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

[RouterA] interface tunnel 1 mode ipv4-ipv4

# 配置Tunnel1接口的IP地址。

[RouterA-Tunnel1] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel1接口的源端地址(GigabitEthernet1/2/0/2的IP地址)。

[RouterA-Tunnel1] source 2.1.1.1

# 配置Tunnel1接口的目的端地址(RouterB的GigabitEthernet1/2/0/2的IP地址)。

[RouterA-Tunnel1] destination 3.1.1.1

[RouterA-Tunnel1] quit

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

[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 1

(2)     配置Router B

# 配置接口GigabitEthernet1/2/0/1的地址。

<RouterB> system-view

[RouterB] interface gigabitethernet 1/2/0/1

[RouterB-GigabitEthernet1/2/0/1] ip address 10.1.3.1 255.255.255.0

[RouterB-GigabitEthernet1/2/0/1] quit

# 配置接口GigabitEthernet1/2/0/2(隧道的实际物理接口)的地址。

[RouterB] interface gigabitethernet 1/2/0/2

[RouterB-GigabitEthernet1/2/0/2] ip address 3.1.1.1 255.255.255.0

[RouterB-GigabitEthernet1/2/0/2] quit

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

[RouterB] interface tunnel 2 mode ipv4-ipv4

# 配置Tunnel2接口的IP地址。

[RouterB-Tunnel2] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel2接口的源端地址(GigabitEthernet1/2/0/2的IP地址)。

[RouterB-Tunnel2] source 3.1.1.1

# 配置Tunnel2接口的目的端地址(Router A的GigabitEthernet1/2/0/2的IP地址)。

[RouterB-Tunnel2] destination 2.1.1.1

[RouterB-Tunnel2] quit

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

[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 2

4. 验证配置

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

# 从Router A和Router B上可以Ping通对端的GigabitEthernet1/2/0/1接口的IPv4地址。下面仅以Router A为例。

[RouterA] 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 ms


4 GRE

4.1  GRE简介

GRE(Generic Routing Encapsulation,通用路由封装)协议用来对某种协议(如IP、MPLS、以太网)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络(如IP)中传输。封装前后数据报文的网络层协议可以相同,也可以不同。封装后的数据报文在网络中传输的路径,称为GRE隧道。GRE隧道是一个虚拟的点到点的连接,其两端的设备分别对数据报文进行封装及解封装。

4.1.1  GRE封装后的报文格式

图4-1 GRE封装后的报文格式

 

图4-1所示,GRE封装后的报文包括如下几个部分:

·     净荷数据(Payload packet):需要封装和传输的数据报文。净荷数据的协议类型,称为乘客协议(Passenger Protocol)。乘客协议可以是任意的网络层协议。

·     GRE头(GRE header):采用GRE协议对净荷数据进行封装所添加的报文头,包括封装层数、版本、乘客协议类型、校验和信息、Key信息等内容。添加GRE头后的报文称为GRE报文。对净荷数据进行封装的GRE协议,称为封装协议(Encapsulation Protocol)。

·     传输协议的报文头(Delivery header):在GRE报文上添加的报文头,以便传输协议对GRE报文进行转发处理。传输协议(Delivery Protocol或者Transport Protocol)是指负责转发GRE报文的网络层协议。传输协议为IPv4时,GRE隧道称为GRE over IPv4隧道。

4.1.2  GRE隧道原理

图4-2 IPv6协议网络通过GRE隧道互连

 

下面以上图的网络为例说明IPv6协议的报文通过GRE隧道穿越IPv4网络进行传输的过程。

(2)     Device A从连接IPv6 network 1的接口收到IPv6报文后,查找路由表判定此报文需要通过GRE隧道模式的Tunnel接口(本例中为Tunnel0)转发,并将报文发给相应的Tunnel接口。

(3)     GRE隧道模式的Tunnel接口收到此IPv6报文后,先在报文前封装上GRE头,再封装上IPv4头。IPv4头中的源地址为隧道的源端地址(本例中为Device A的GigabitEthernet1/2/0/1接口的IP地址),目的地址为隧道的目的端地址(本例中为Device B的GigabitEthernet1/2/0/1接口的IP地址)。

(4)     Device A根据封装的IPv4头中的目的地址查找路由表,将封装后的IPv4报文通过GRE隧道的实际物理接口(GigabitEthernet1/2/0/1)转发出去。

(5)     封装后的IPv4报文通过GRE隧道到达隧道的目的端设备Device B后,由于报文的目的地是本设备,且IPv4头中的协议号为47(表示封装的报文为GRE报文),Device B将此报文交给GRE协议进行解封装处理。

(6)     GRE协议先剥离掉此报文的IPv4头,再对报文进行GRE Key验证、校验和验证、报文序列号检查等处理,处理通过后再剥离掉报文的GRE头,将报文交给IPv6协议进行后续的转发处理。

4.1.3  GRE应用场景

GRE主要有以下几种应用场景。

1. 通过单一协议的骨干网连接采用不同协议的网络

图4-3 通过单一协议的骨干网连接采用不同协议的网络

 

图4-3所示,IPv6 network 1和IPv6 network 2是运行IPv6协议的网络,IPv4 network 1和IPv4 network 2是运行IPv4协议的网络。在Device A和Device B之间建立GRE隧道,可以使IPv6 network 1和IPv6 network 2、IPv4 network 1和IPv4 network 2通过骨干网互不影响地进行通信,实现两地互通。

2. 扩大网络的工作范围

图4-4 扩大网络的工作范围

 

在IP网络中,报文的TTL值最大为255。如果两台设备之间的跳数超过255,它们将无法通信。通过在网络中使用GRE隧道可以隐藏一部分跳数,从而扩大网络的工作范围。如图4-4所示,使用了GRE隧道之后,Host A和Host B之间的跳数减少为3跳,GRE隧道经过的设备中只有隧道两端的设备(Device A和Device D)参与跳数计算。

3. 组建VPN

图4-5 组建VPN

 

图4-5所示,属于VPN 1的两个站点Site 1和Site 2分别位于不同的城市,通过使用GRE隧道可以实现跨越广域网连接VPN 1的两个站点。

4.1.4  协议规范

与GRE相关的协议规范有:

·     RFC 1701:Generic Routing Encapsulation (GRE)

·     RFC 1702:Generic Routing Encapsulation over IPv4 networks

·     RFC 2784:Generic Routing Encapsulation (GRE)

·     RFC 2890:Key and Sequence Number Extensions to GRE

4.2  GRE配置限制和指导

·     GRE收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE后设备的数据转发效率有一定程度的下降。

·     隧道两端必须都配置隧道的源端地址和目的端地址,且本端配置的源端地址(目的端地址)应该与对端配置的目的端地址(源端地址)相同。

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

·     如果封装前报文的目的地址与Tunnel接口的地址不在同一个网段,则必须配置通过Tunnel接口到达报文目的地址的路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达报文目的地址的路由出接口为本端Tunnel接口;也可以配置动态路由,在Tunnel接口、与私网相连的接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel接口转发的路由表项。

4.3  配置GRE over IPv4隧道

1. 配置步骤

(1)     进入系统视图。

system-view

(2)     创建模式为GRE over IPv4隧道的Tunnel接口,并进入该Tunnel接口视图。

interface tunnel interface-number mode gre

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

(3)     根据乘客协议,设置Tunnel接口的IPv4地址或IPv6地址。

¡     IPv4地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IP地址”。

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

缺省情况下,Tunnel接口上未设置IPv4地址和IPv6地址。

(4)     设置隧道的源端地址或源接口。

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

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

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

(5)     设置隧道的目的端地址。

destination ip-address

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

隧道的目的端地址是对端从GRE隧道上接收报文的实际物理接口的地址,该地址将作为封装后隧道报文的目的IPv4地址。该地址不能与Tunnel接口的地址在同一网段。

(6)     (可选)开启GRE的keepalive功能,并配置keepalive报文发送周期及最大发送次数。

keepalive [ interval [ times ] ]

缺省情况下,GRE的keepalive功能处于关闭状态。

4.4  GRE显示和维护

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

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

表4-1 GRE显示和维护

操作

命令

显示Tunnel接口的相关信息

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

显示Tunnel接口的IPv6相关信息

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

清除Tunnel接口的统计信息

reset counters interface [ tunnel [ number ] ]

 

4.5  GRE典型配置举例

4.5.1  GRE over IPv4隧道典型配置举例

1. 组网需求

Router A和Router B分别连接IPv4私有网络Group 1和Group 2。这两个私有网络都使用私网地址,且属于同一个VPN。通过在Router A和Router B之间建立GRE隧道,实现两个私有网络的互联。

2. 组网图

图4-6 GRE over IPv4隧道应用组网图

3. 配置步骤

说明

在开始下面的配置之前,假设设备各接口的地址都已配置完毕,并且Router A和Router B之间路由可达。

 

(1)     配置Router A

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。

<RouterA> system-view

[RouterA] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterA-Tunnel0] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel0接口的源端地址(Router A的GigabitEthernet1/2/0/2的IP地址)。

[RouterA-Tunnel0] source 1.1.1.1

# 配置Tunnel0接口的目的端地址(Router B的GigabitEthernet1/2/0/2的IP地址)。

[RouterA-Tunnel0] destination 2.2.2.2

[RouterA-Tunnel0] quit

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

[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 0

(2)     配置Router B

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。

<RouterB> system-view

[RouterB] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterB-Tunnel0] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel0接口的源端地址(Router B的GigabitEthernet1/2/0/2的IP地址)。

[RouterB-Tunnel0] source 2.2.2.2

# 配置Tunnel0接口的目的端地址(Router A的GigabitEthernet1/2/0/2的IP地址)。

[RouterB-Tunnel0] destination 1.1.1.1

[RouterB-Tunnel0] quit

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

[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 0

4. 验证配置

# 查看Router A的Tunnel接口状态。

[RouterA] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1476

Internet address: 10.1.2.1/24 (primary)

Tunnel source 1.1.1.1, destination 2.2.2.2

Tunnel keepalive disabled

Tunnel TTL 255

Tunnel protocol/transport GRE/IP

    GRE key disabled

    Checksumming of GRE packets disabled

Output queue - Urgent queuing: Size/Length/Discards 0/100/0

Output queue - Protocol queuing: Size/Length/Discards 0/500/0

Output queue - FIFO queuing: Size/Length/Discards 0/75/0

Last clearing of counters: Never

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 查看Router B的Tunnel接口状态。

[RouterB] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1476

Internet address: 10.1.2.2/24 (primary)

Tunnel source 2.2.2.2, destination 1.1.1.1

Tunnel keepalive disabled

Tunnel TTL 255

Tunnel protocol/transport GRE/IP

    GRE key disabled

    Checksumming of GRE packets disabled

Output queue - Urgent queuing: Size/Length/Discards 0/100/0

Output queue - Protocol queuing: Size/Length/Discards 0/500/0

Output queue - FIFO queuing: Size/Length/Discards 0/75/0

Last clearing of counters: Never

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 从Router B可以Ping通Router A上GigabitEthernet1/2/0/1接口的地址。

[RouterB] ping -a 10.1.3.1 10.1.1.1

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

56 bytes from 10.1.1.1: icmp_seq=0 ttl=255 time=11.000 ms

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

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

56 bytes from 10.1.1.1: icmp_seq=3 ttl=255 time=0.000 ms

56 bytes from 10.1.1.1: icmp_seq=4 ttl=255 time=0.000 ms

 

--- Ping statistics for 10.1.1.1 ---

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

round-trip min/avg/max/std-dev = 0.000/2.400/11.000/4.317 ms

4.6  GRE常见故障处理

4.6.1  GRE隧道两端连接的主机之间无法ping通

GRE的配置相对比较简单,但要注意配置的一致性,大部分的错误都可以使用调试命令debugging gredebugging tunnel定位。这里仅就一种错误进行分析。

1. 故障现象

图4-7所示,Tunnel两端接口配置正确且Tunnel两端可以ping通,但Host A和Host B之间却无法ping通。

图4-7 GRE排错示例

 

2. 故障分析

出现该故障的原因可能是Device A或Device C上没有到达对端网络的路由。

3. 故障排除

(1)     在Device A和Device C分别执行display ip routing-table命令,观察在Device A是否有经过Tunnel0接口到10.2.0.0/16的路由;在Device C是否有经过Tunnel0接口到10.1.0.0/16的路由。

(2)     如果不存在上述路由,则在系统视图下使用ip route-static命令添加静态路由。以Device A为例,配置如下:

[DeviceA] ip route-static 10.2.0.0 255.255.0.0 tunnel 0

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

新华三官网
联系我们