GRE协议培训教材模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VPN GRE培训教材
GRE协议培训教材
姓名:李奉武
工号: 16983
目录
前言------------------------------------------------------------------------------------ 3
第一章背景知识-VPN介绍
1 VPN概述-----------------------------------------------------------------------4
1.1 VPN的概念-----------------------------------------------------------4
1.2 VPN的实现技术-----------------------------------------------------4
1.3 VPN的类型与应用方式---------------------------------------------5
1.4 VPN的优点-------------------------------------------------------------5
1.5 VRP支持的VPN协议------------------------------------------------6
第二章 GRE协议介绍
1 概述-----------------------------------------------------------------------------7
2 GRE报文格式----------------------------------------------------------------7
3 GRE工作过程----------------------------------------------------------------9
4 GRE提供的服务-------------------------------------------------------------9
第三章 GRE配置命令
1 命令列表-----------------------------------------------------------------------11
2 详细命令说明-----------------------------------------------------------------11
2.1 tunnel source ip-address---------------------------------------------11
2.2 tunnel destination ip-address----------------------------------------12
2.3 tunnel key key-number------------------------------------------------13
2.4 tunnel checksum-------------------------------------------------------14
2.5 tunnel sequence-datagrams-------------------------------------------14
2.6 tunnel mode gre ip -----------------------------------------------------15
第四章配置案例
1 GRE配置举例------------------------------------------------------------------18
1.1 组网需求-----------------------------------------------------------------18
1.2 组网图--------------------------------------------------------------------18
1.3 配置-----------------------------------------------------------------------18
第五章排错
1 排错举例-------------------------------------------------------------------------21
前言
本文从应用的角度介绍了GRE—基本路由封装、tunnel—隧道的概念与原理,其中也涉及到VPN 的一些基本概念和原理。
另外还详尽的介绍了tunnel接口的配置命令以及典型配置。
第一章背景知识—VPN介绍
1VPN概述
1.1 VPN的概念
虚拟私有网(Virtual Private Network ),是近年来随着Internet的发展而迅速发展起来的一种技术。
随着Internet的发展,现代企业也越来越多地倾向于利用Internet资源来进行促销、销售、售后服务,乃至培训、合作等活动,来替代它们私有数据网络。
这种利用Internet来传输私有信息而形成的逻辑网络就称为虚拟私有网。
虚拟私有网实际上就是将Internet看作一种公有数据网(Public Data Network),这种公有网和PSTN 网在数据传输上没有本质的区别。
因为从用户观点来看,数据都被正确传送到了目的地。
相对地,企业在这种公共数据网上建立的用以传输企业内部信息的网络被称为为私有网。
目前共有三种类型的VPN,它们分别是远程访问虚拟专网(Access VPN)、企业内部虚拟专网(Intranet VPN)和扩展的企业内部虚拟专网(ExtranetVPN),这三种类型的VPN分别与传统的远程访问网络、企业内部的Intranet以及企业网和相关合作伙伴的企业网所构成的Extranet相对应。
这里只谈谈Intranet 和Extranet VPN。
Intranet 和Extranet VPNs通过公用网络在公司企业总部和远程办公室、供应商、合作伙伴和用户之间建立了虚拟私有网络,这种应用示意图如图一所示。
这种应用实质上是通过公用网在各个路由器之间建立VPN连接来传输用户的私有网络数据,用于构建这种VPN连接的技术有IP隧道技术如IPSec、GRE,和基于A TM或帧中继的虚电路技术等。
图一:VPN应用示例
1.2 VPN的实现技术
虚拟私有网的实现实际上是依赖于一种称之为隧道(tunnel)的技术。
隧道是一个虚拟的点对点的连接。
它提供了一条虚拟通路使封装的数据报能够在这个通路上传输(当然这个传输依赖于实际路由的实现),并且在隧道的两端分别对数据报进行封装及解封装。
隧道分为两种:二层隧道和三层隧道。
二层隧道的典型应用有L2F、L2TP等,而IPSEC则是三层隧道的典型应用。
一个在三层隧道中传输的报文具有图二所示的格式:
图二:三层隧道的报文格式
GRE实际上是第三层隧道的一种运载协议(Carrier Protocol)。
1.3 VPN的类型与应用方式
共有三种类型的VPN,它们分别是远程访问虚拟专网(Access VPN)、企业内部虚拟专网(Intranet VPN)和扩展的企业内部虚拟专网(ExtranetVPN),这三种类型的VPN分别与传统的远程访问网络、企业内部的Intranet以及企业网和相关合作伙伴的企业网所构成的Extranet相对应。
1.4 VPN的优点
利用公用网络构建虚拟私有网络是个新型的网络概念,它给服务提供商(ISP)和VPN用户都将带来不少的益处。
对于服务提供商来说,在通过向企业提供VPN这种增值服务,ISP可以与企业建立更加紧密的长期合作关系,同时充分利用现有网络资源,提高业务量。
事实上,VPN用户的数据流量较普通用户要大得多,而且时间上也是相互错开的。
VPN用户通常是上班时间形成流量的高峰,而普通用户的流量峰期则在工作时间之外。
ISP对外提供两种服务,资源利用率和业务量都会大大增加,将给ISP带来新的商业机会。
而对于VPN用户而言,利用Internet组建私有网,将大笔的专线费用缩减为少量的市话费用和Internet 费用,无疑是非常有吸引力的;而且,企业甚至可以不必建立自己的广域网维护系统,而将这一繁重的任务交由专业的ISP来完成;VPN用户的网络地址可以由企业内部进行统一分配、VPN组网的灵活、方便性等特性将给企业的网络管理带来很大的方便;另外,在VPN应用中,通过远端用户验证以及隧道数据加密等技术使得通过公用网络传输的私有数据的安全性得到了很好的保证。
正由于其强大的吸引力,VPN在全球发展得异常红火,在北美和欧洲,VPN已经是一项相当普遍的业务;在亚太地区,该项服务也迅速开展起来。
著名的网络提供商Global One在香港地区的VPN服务已经大规模开通。
而在中国大陆,网络服务提供商也开始设立VPN服务。
1.5 VRP支持的VPN协议
目前,Quidway系列路由器支持的VPN协议有二层隧道的L2TP,三层隧道的GRE以及IPSec。
第二章GRE协议介绍
1 概述
在CISCO的路由器中,三层隧道包括下面的几种封装协议:GRE,Cayman(一种为了在IP上传输AppleTal有优先级的协议),EON(一种在IP网上运载CLNP的标准协议),NOS,DVMRP。
封装协议虽然很多,但基本都实行了大致的功能即:通过封装使一种网络协议能够在另一种网络协议上传输。
目前VRP1.2只实现GRE封装形式。
GRE跟上述的其他封装形式很相似,但比他们更通用。
很多协议的细微差异都被忽略,这就导致了它不是建议用在某个特定的"X over Y"进行封装,所以是一种最基本的封装形式。
下面简要介绍GRE数据报的格式。
2 GRE报文格式
在最简单的情况下,系统接受到一个需要封装和路由的数据报,我们称之为有效报文(Payload)。
这个有效报文首先被GRE封装,然后被称之为GRE报文,这个报文接着被封装在IP报头中,然后完全由IP 层负责此报文的转发(Forwarded)。
(我们也称这个负责转发的IP 协议为传递(Delivery)协议或传输(Transport)协议)。
整个被封装的报文具有图三所示形式:
图三:完整报文格式
其中GRE报文头的格式如图四所示:
图四:GRE报头格式
下面详细说明各位的含义:
①.GRE报头的前32位(4个字节)是必须要有的,构成了GRE的基本报头。
其中前16位上是GRE的标记码,其详细说明如下:
第0位——校验有效位(Checksum Present):
如果置“1”,则校验信息区有效。
如果校验有效位或路由有效位被置“1”,则GRE报文中校验信息区和分片位移量区都有效。
缺省置“0”。
第1位——路由有效位(Routing Present):
如果置“1”,则表明分片位移量区和路由区有效,否则分片位移量区和严格源路由区无效(无严格源路由区)。
缺省置“0”。
第2位——密钥有效位(Key Present):
如果置“1”,表示在GRE报头中密钥信息区有效,否则密钥信息区无效(无密钥信息区)。
缺省置“0”。
第3位——顺序号有效位(Sequence Number Present):
如果置“1”表示顺序号信息区有效,否则无效(无顺序号信息区)。
缺省置“0”。
第4位——严格源路由有效位(Strict Source Route):
只有在保证所有路由信息采用严格源路由方式时,该位才置“1”。
缺省置“0”。
第5位——递归控制位(Recursion Control):
包括3位无符号整数,即被允许的附加的封装次数。
缺省设置都为“0”。
5~12位——被保留将来使用,目前必须都被被置为0。
13~15位——保留的版本信息位(Version Number):
版本号中必须包含0,目前被置为000。
②.GRE报头的后16位是Protocol Type(协议类型)字,明了有效数据报的协议类型。
最基本的是以IP 协议和太网协议IPX,分别对应的协议号为0x800、0x8137。
③.下面是可选的GRE报头区:(缺省都没有)
Checksum(校验信息区)16位:校验信息区包含GRE头和有效分组补充的IP校验。
如果路由有效位或校验有效位有效则此区域有效,而仅当校验位有效时此区域包含有效效信息。
Offset(位移量区)16位:位移量区表示从路由区开始到活动的被检测的源路由入口(Source Route Entry)的第一个字节的偏移量。
如果路由有效位或校验有效位有效则此区域有效,而仅当路由有效位有效时其中的信息有效。
Key(密钥区)32位:密钥区包含封装*作插入的32位二进制数,它可以被接受者用来证实分组的来源。
当密钥位有效时此区域有效。
Sequence Number(顺序号)32位:顺序号区包括由封装*作插入的32位无符号整数,它可以被接受方用来对那些做了封装*作再传输到接受者的报文建立正确的次序。
④.最后是长度不定的Routing(路由)区:
一个完整的GRE报文头即由上述的数据格式所构成。
3 GRE工作过程
因为GRE是Tunnel接口的一种封装协议,所以要进行GRE封装首先必须建立Tunnel。
一旦隧道建立起来,就可以进行GRE的加封装和解封装。
1.加封装过程:
由连接Novell group1的ethernet 0 接口收到的IPX数据报首先交由IPX模块处理,IPX模块检查IPX 包头中的目的地址域确定如何路由此包。
如果包的目的地址被发现要路由经过网号为1f的网络(为虚拟网号),则将此包发给网号为1f的端口即为tunnel端口。
tunnel 收到此包后交给GRE模块进行封装,GRE 模块封装完成后交由IP模块处理,IP模块做完相应处理后根据此包的目的地址及路由表交由相应的网络接
口处理。
2.解封装的过程:
解封装的过程则和上述加封装的过程相反。
从tunnel接口收到的报文交给IP模块,IP模块检查此包的目的地址,发现是此路由器后进行相应的处理(和普通的IP数据报相同)剥掉IP包头然后交给GRE模块,GRE模块进行相应处理后(如检验密钥等),去掉GRE包头然后交给IPX模块,IPX模块将此包按照普通的IPX数据报处理即可。
4 GRE提供的服务
GRE模块的实现提供了的以下几种服务:
1. 多协议的本地网通过单一协议的骨干网传输的服务,如图五所示:
图五:多协议通过单一协议传输
通过在RouterA和RouterB之间建立隧道,运行IPX协议的Group1和Group2可以进行通信,运行IP协议的Term1和Term2之间也可以进行通信,且两者之间互不影响。
2. 扩大了IPX网络的工作范围:
IPX包最多可以转发16次(既经过16个路由器),而在经过了一个隧道连接中由于IPX的报文被完整的封装起来,只在对端才解封装,所以在隧道两端看上去只经过一个路由器。
3. 将一些不能连续的子网连接起来,如图六所示:
图六:tunnel连接不连续子网
group1和group2是两个分别在北京和上海的novell子网,运行IPX协议。
现在想通过Internet连接起来,则可以通过建立隧道来实现。
上述Tunnel设置实现了通过WAN网建立了虚拟私人网(Virtual Private Network),group1和group2实现了网间通信。
第三章GRE配置命令
1.命令列表
GRE配置命令包括:
·tunnel source ip-address
·tunnel destination ip-address
·tunnel key key-number
·tunnel checksum
·tunnel sequence-datagrams
·tunnel mode gre ip
·ip address ip-address mask
·ipx network network-number
2.详细命令说明
2.1 tunnel source ip-address
用于指定tunnel的源端地址,必须是实际物理接口的IP地址或接口;
用no tunnel source命令删除此设置。
例:tunnel source 192.1.1.1
no tunnel source
【参数说明】
ip-address指定用于本端tunnel接口的实际物理端口的IP地址。
例:如果serial0 端口的IP地址为192.1.1.1,而tunnel接口的实际出口是serial0 ,则ip-address即为192.1.1.1。
【缺省情况】
无。
【命令模式】
tunnel接口模式。
【使用指南】
指定的隧道源地址是以IP地址的形式输入,一定要和实际的物理端口地址一致。
【举例】
图七:tunnel连接示例图
例:如图一所示:
在RouterA的Serial0端口和RouterB的Serial1端口之间建立了tunnel连接,则在RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-serial0)# ip address 192.100.1.0 255.255.255.0
RouterA(config-interface-tunnel0)# tunnel source 192.100.1.0
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-serial1)# ip address 193.101.1.0 255.255.255.0
RouterB(config-interface-tunnel0)# tunnel source 193.101.1.0
【相关命令】
无
2.2 tunnel destination ip-address
用于指定tunnel的对端地址,必须是对端实际物理接口的IP地址;
用no tunnel destination命令删除此设置。
例:tunnel destination 193.101.1.0
no tunnel destination
【参数说明】
ip-address指定用于对端tunnel接口的实际物理端口的IP地址。
例:如果对端serial1 端口的IP地址为193.101.1.0,则ip-address即为193.101.1.0。
【缺省情况】
无。
【命令模式】
tunnel接口模式。
【使用指南】
指定的隧道对端地址是以IP地址的形式输入,一定要和实际的物理端口地址一致。
【举例】
例:如图一所示:
在RouterA的Serial0端口和RouterB的Serial1端口之间建立了tunnel连接,则在RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# tunnel destination 193.101.1.0
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# tunnel destination 192.100.1.0
【相关命令】
无
2.3 tunnel key key-number
设置tunnel的识别关键字,取值范围为0~4294967295,主要用于非常弱的安全目的。
用no tunnel key 来删除此设置。
【缺省情况】
不设置tunnel的识别关键字。
【命令模式】
tunnel接口模式。
【使用指南】
在一个tunnel连接的两端必须指定相同的KEY(或都不设置)。
【举例】
要求设置tunnel的识别关键字。
如图一所示:
RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# tunnel key 123456789
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# tunnel key 123456789
【相关命令】
无
2.4 tunnel checksum
设置端到端的校验,主要用于验证报文的完整性。
用no tunnel checksum 来删除此设置。
【参数说明】
无参数。
【缺省情况】
不进行校验。
【命令模式】
tunnel接口模式。
【使用指南】
tunnel两端必须设置相同,即两端同时选择校验或不校验。
【举例】
要求设置允许校验。
如图一所示:
RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# tunnel checksum
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# tunnel checksum
【相关命令】
无
2.5 tunnel sequence-datagrams
设置GRE数据报检查序列号,主要用于防止数据的重传。
用no tunnel sequence-datagrams 来删除此设置。
【参数说明】
无参数。
【缺省情况】
不进行序列号检测。
【命令模式】
tunnel接口模式。
【使用指南】
tunnel两端必须设置相同,即两端同时选择检测或不检测。
【举例】
要求设置允许序列号检测。
如图一所示:
RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# tunnel sequence
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# tunnel sequence
【相关命令】
无
2.6 tunnel mode gre ip
设置tunnel接口的封装模式-GRE,运输协议-IP。
【参数说明】
无参数。
【缺省情况】
即为此设置。
【命令模式】
tunnel接口模式。
【使用指南】
tunnel两端必须设置相同,即选择相同的封装模式和运输协议。
【举例】
如图一所示:
RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# tunnel mode gre ip
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# tunnel tunnel mode gre ip
【相关命令】
无
2.7 ip address ip-address mask
ipx network network-number
设置tunnel接口的虚拟地址(网络号)。
【参数说明】
和物理接口的IP地址及IPX地址的设置方法完全一致。
如果乘客协议为IP即IP over IP则需在tunnel接口设置IP地址,如果乘客协议为IPX即IPX over IP则需在tunnel接口设置IPX的网络号。
【缺省情况】
无地址。
【命令模式】
tunnel接口模式。
【使用指南】
如果设置IP地址,tunnel两端必须设置在相同的网段,如果设置IPX地址,两端必须是相同的网络号(因为tunnel接口是虚拟的端到端的连接)。
【举例】
如图七所示:
若PCA和PCB之间采用IP协议,则
RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# ip address 10.1.1.1 255.255.255.0
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# ip address 10.1.1.2 255.255.255.0
若PCA和PCB之间采用IPX协议,则
RouterA路由器上对tunnel进行如下配置:
RouterA(config-interface-tunnel0)# ipx network 1f
RouterB路由器对tunnel进行如下配置:
RouterB(config-interface-tunnel0)# ipx network 1f
【相关命令】
无
第四章配置案例
1 GRE配置举例
1.1 组网需求
办事处需要与总部进行通讯,比如Lotus Notes;而总部网络的地址是采用私有的地址,如10.8.0.0网络,则办事处的用户将无法通过Internet直接访问内部的服务器。
办事处有几十名员工,不大可能使用与
单用户类似的方式,每人采用一个modem或其他设备分别与总部互联。
两个局域网之间通过GRE建立VPN,总部与办事处之间就可以相互访问了。
1.2 组网图
图八:办事处与总部互联示意图
1.3 配置
办事处的网内地址为10.100.0.0,掩码255.255.0.0;
办事处的路由器以太网地址为10.100.0.1;
总部的网内地址为10.8.0.0,掩码255.255.0.0;
总部的网内地址为10.8.0.1;
x 办事处需要与总部互联的机器上进行如下配置:
网关设置为10.100.0.1(Quidway1的以太网地址),或者缺省路由指向10.100.0.1;
x 在Quidway1路由器上,配置如下:
作为网关的路由器首先应该具有一个Internet上的合法地址假定为202.38.168.1,能与总部的路由器互通;可以通过DDN等方式连入Internet,具体的配置方法请参见相关章节。
GRE相关的配置如下:
!配置以太网接口地址
interface ethernet 0
!设置IP地址为10.100.0.1
ip address 10.100.0.1 255.255.0.0
!配置串口0接口地址(注意:此为和Quidway2连接的接口)
interface serial 0
! 配置IP地址为202.38.168.1
ip address 202.38.168.1 255.255.0.0
!创建一个Tunnel接口
interface tunnel 0
!该接口的IP地址为10.1.1.2(注意:这个地址与tunnel对端的地址,即Quidway2上所配置tunnel 地址是在同一个网段的)
ip addr 10.1.1.2 255.255.255.0
!配置tunnel的本端地址
tunnel source 202.38.168.1
!配置tunnel的对端地址
tunnel destination 202.38.167.1
! 配置tunnel的封装模式(注意:GRE为tunnel的缺省模式,可以不输入)
tunnel mode gre ip
!设置到总部10.8.0.0的路由都通过接口tunnel0发送(注意:这条路由非常重要,它指定了到总部,也就是tunnel对端的报文都通过tunnel0接口走;
ip route 10.8.0.0 16 10.1.1.2
x 在Quidway2路由器上,配置如下:
作为总部的路由器与办事处的类似,首先也应该具有一个Internet上的合法地址;这里假定为202.38.167.1。
可以通过DDN等方式连入Internet,具体的配置方法请参见相关章节。
GRE相关的配置如下:
!配置以太网接口地址
interface ethernet 0
!设置IP地址为10.8.0.1
ip address 10.8.0.1 255.255.0.0
!配置串口0接口地址(注意:此为和Quidway1连接的接口)
interface serial 0
! 配置IP地址为202.38.167.1
ip address 202.38.167.1 255.255.0.0
!创建一个Tunnel接口
interface tunnel 0
!该接口的IP地址为10.1.1.1(注意:这个地址与tunnel对端的地址,即Quidway1上所配置tunnel 地址是在同一个网段的)
ip addr 10.1.1.1 255.255.255.0
!配置tunnel的本端地址
tunnel source 202.38.167.1
!配置tunnel的对端地址
tunnel destination 202.38.168.1
! 配置tunnel的封装模式(注意:GRE为tunnel的缺省模式,可以不输入)
tunnel mode gre ip
第五章排错
1排错举例
由于GRE的配置相对比较简单,只要注意配置的一致性就不会有什么问题。
这里就一种相关的错误进行分析。
如图九所示:
故障情形:tunnel两端接口配置正确且tunnel两端可以ping通,但PCA和PCB之间却无法ping通。
这种情况主要检查是否有通过tunnel接口的路由,即在RouterA有到10.2.0.0/16的路由经过tunnel0接口;在RouterB有到10.1.0.0/16的路由经过tunnel0接口(可以通过添加静态路由来实现)。
图九。