1、Question:1、GRE是什么?2、GRE用在什么地方?3、GRE隧道如何实现?4、GRE的优点和不足?5、GRE隧道如何做到更安全?,GRE 详解,简介,GRE (Generic Routing Encapsulation) 在任意一种网络协议上传送任意一种其它网络协议的封装方法 GRE协议是对某些网络层协议(如IP 和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。GRE采用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协议。 GRE 提供了将一种协议的报文封装在另一种协议报文中的机制,使报文
2、能够在异种网络中传输,异种报文传输的通道称为tunnel RFC 1701和RFC 2784定义了标准GRE封装。,GRE协议特点,机制简单,对隧道两端设备的CPU负担小 不提供数据的加密 不对数据源进行验证 不保证报文正确到达目的地 不提供流量控制和QoS特性 多协议的本地网可以通过单一协议的骨干网实现传输 将一些不能连续的子网连接起来,用于组建VPN 不能分隔地址空间,封装格式,协议B,GRE,协议A,链路层协议,载荷协议,封装协议,承载协议,协议B载荷,GRE封装包格式,载荷协议,承载协议,GRE头,协议B头,协议A头,载荷数据,链路层头,IP Over IP,载荷,链路层头,GRE头,
3、IP头,载荷协议0x0800,IP头,IP协议号47,IP用协议号47标识GRE GRE使用以太类型0x0800标识载荷协议为IP,IP over IP包格式,GRE头部,GRE头部格式: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |C|R|K|S|s|Recur| Flags | Ver | Protocol Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+
4、-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum (optional) | Offset (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Key (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
5、-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Routing (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 参照RFC 1701中GRE封装格式 1、前4个字节必须出现; 2、第5-20字节根据第1个字节相关标志位可选出现; 3、GRE头部长度将影响tunnel和mtu值。 详细字段解释参照RFC1701.,GRE头部字段验证-1,Tunnel0,Tunnel0,172.16.0.1/16,172.16.0.2/16,12.12.12.0/24,23.23.23.
6、0/24,3.3.3.3/24,1.1.1.1/24,R1,R2,R3,interface Tunnel0ip address 172.16.0.1 255.255.0.0keepalive 10 3tunnel source 12.12.12.1tunnel destination 23.23.23.3,interface Tunnel0ip address 172.16.0.2 255.255.0.0keepalive 10 3tunnel source 23.23.23.3tunnel destination 12.12.12.1,GRE头部字段验证-2,Tunnel0,Tunnel0,
7、172.16.0.1/16,172.16.0.2/16,12.12.12.0/24,23.23.23.0/24,R1,R2,R3,1.1.1.1/24,3.3.3.3/24,interface Tunnel0ip address 172.16.0.1 255.255.0.0keepalive 10 3tunnel source 12.12.12.1tunnel destination 23.23.23.3tunnel key 1tunnel sequence-datagramstunnel checksum,interface Tunnel0ip address 172.16.0.2 255.
8、255.0.0keepalive 10 3tunnel source 23.23.23.3tunnel destination 12.12.12.1tunnel key 1tunnel sequence-datagramstunnel checksum,GRE VPN,GRE VPN 直接使用GRE封装建立GRE隧道,在一种协议的网络上传送其它协议 虚拟的隧道(Tunnel)接口,Original Data Packet,Transfer Protocol Header,GRE Header,Internet,Tunnel,企业总部,分支机构,GRE隧道处理流程,隧道起点路由查找 加封装 承载
9、协议路由转发 中途转发 解封装 隧道终点路由查找,隧道起点路由查找,R1,R2,站点A,站点B,S0/0,S0/0,E0/0,E0/0,Tunnel0,Tunnel0,10.1.1.1/24,10.1.2.1/24,10.1.2.2/24,10.1.3.1/24,203.1.1.2/24,202.1.1.1/24,IP公网,IP私网,IP私网,13,加封装,R1,R2,站点A,站点B,S0/0,S0/0,E0/0,E0/0,Tunnel0,Tunnel0,10.1.1.1/24,10.1.2.1/24,10.1.2.2/24,10.1.3.1/24,203.1.1.2/24,202.1.1.1
10、/24,IP公网,IP私网,IP私网,RTA Tunnel0接口参数:GRE封装源接口S0/0,地址202.1.1.1目标地址203.1.1.2,S,D,私网IP包,GRE头,公网IP头,目的地址: 203.1.1.2,源地址: 202.1.1.1,14,承载协议路由转发,R1,R2,站点A,站点B,S0/0,S0/0,E0/0,E0/0,Tunnel0,Tunnel0,10.1.1.1/24,10.1.2.1/24,10.1.2.2/24,10.1.3.1/24,203.1.1.2/24,202.1.1.1/24,IP公网,IP私网,IP私网,15,中途转发,R2,站点B,S0/0,E0/0
11、,10.1.3.1/24,203.1.1.2/24,IP私网,IP公网,R1,站点A,S0/0,E0/0,10.1.1.1/24,202.1.1.1/24,IP私网,解封装,R1,R2,站点A,站点B,S0/0,S0/0,E0/0,E0/0,Tunnel0,Tunnel0,10.1.1.1/24,10.1.2.1/24,10.1.2.2/24,10.1.3.1/24,203.1.1.2/24,202.1.1.1/24,IP公网,IP私网,IP私网,RTB Tunnel0接口参数:GRE封装源接口S0/0,地址203.1.1.2目标地址202.1.1.1,S,D,私网IP包,GRE头,公网IP头
12、,私网IP包,17,隧道终点路由查找,R1,R2,站点A,站点B,S0/0,S0/0,E0/0,E0/0,Tunnel0,Tunnel0,10.1.1.1/24,10.1.2.1/24,10.1.2.2/24,10.1.3.1/24,203.1.1.2/24,202.1.1.1/24,IP公网,IP私网,IP私网,GRE弱安全机制,GRE 本身提供了两种比较弱的安全机制:校验和验证 识别关键字验证KeepAlive,校验和验证,实际应用时,隧道两端可以根据需要选择是否配置校验和,从而决定是否触发校验功能。因校验和配置不同,对收发报文的处理方式也不同.,20,识别关键字验证,识别关键字(key)
13、是指对Tunnel 接口进行校验。通过这种弱安全机制,可以防止错误识别、接收其它地方来的报文。 RFC1701 中规定:若GRE 报文头中的K 位置位,则在GRE 头中插入关键字字段,收发双方将进行通道识别关键字的验证。 只有 Tunnel 两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。这里的“完全一致”是指两端都不设置识别关键字;或者两端都设置关键字,且关键字的值相等。,21,KeepAlive,GRE 的数据空洞 Keepalive 检测功能: VRP 实现了GRE 隧道的链路状态检测功能(Keepalive 检测功能)。Keepalive 检测功能用于时刻检测隧道链路是否处
14、于Keepalive 状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。 如果 GRE 隧道本端使能Keepalive 检测功能后,周期地发送link-alive 探测报文给对端。若对端可达,则本端会收到对端的回应报文;否则,收不到对端的回应报文。 不可达计数器: GRE 隧道的源端使能Keepalive 检测功能后,就创建一个定时器,周期地发送Keepalive 探测报文,同时进行不可达计数。每发送一个探测报文,不可达计数加1。 对端每收到一个探测报文,就给源端发送一个回应报文。如果源端的计数器值未达到预先设置的值就收到回应报文,就表明对端可达。如果源端的
15、计数器值到达预先设置的值重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。,22,KeepAlive报文,GRE的应用场合,多协议的本地网可以通过单一协议的骨干网传输 路由协议中的应用 扩大跳数受限的网络工作范围 将不连续的子网连接起来,用于组建 VPN CE 采用GRE 隧道接入MPLS VPN,24,多协议本地网,Internet,Tunnel,IPX1,IPX2,IP1,IP2,IPX1 和IPX2 是运行Novell IPX 的本地网,IP1 和IP2 是运行IP 的本地网。 通过在 Router A 和Router B 之间采用GRE
16、 协议封装的隧道, IPX1 和IPX2 、 IP1 和IP2可以互不影响地进行通信。,Router A,Router B,25,tunnel,GRE在路由协议中的应用,R1,R2,R3,R4,Area 0,Area 1,Area 2,OSPF Network,R1-R4运行OSPF协议,但是要求R1和R4能够通信的话是不可以的,因为区域2和区域0断开了。如果通过OSPF的V-Link是可以解决的,同样这里通过GRE隧道将区域2和区域0连接起来,一样是可以解决区域断开的问题。,26,扩大跳数受限的网络,R1,R2,R3,R4,tunnel,network,network,network,网络运
17、行IP 协议,假设IP 协议限制跳数为255。如果两台PC 之间的跳数超过255,它们将无法通信。在网络中使用隧道可以隐藏一部分步跳,从而扩大网络的工作范围。,27,将不连续的子网连接起来,Internet,GRE Tunnel,VPN Site,PE,PE,VPN Site,CE,CE,通常,MPLS VPN 骨干网使用LSP 作为公网隧道。但如果骨干网核心路由器(P 路由器)只提供纯IP 功能,不具备MPLS 功能;而网络边缘的PE 路由器具备MPLS 功能,这样,就不能使用LSP 作为公网隧道。此时,可以使用GRE 隧道替代LSP,在核心网提供三层或二层VPN 解决方案。其私网报文在VP
18、N 骨干网中传输时,报文格式如图4-9。,LSP中断,28,CE 采用GRE 隧道接入MPLS VPN,MPLS,Tunnel,Custom network,PE,PE,VPN Site,CE,CE,IP network,在实现MPLS VPN网络互联的时候,并不是CE 和PE 都能用物理链路直接相连。例如,很多已经连接到internet 或基于IP 技术的骨干网上的机构,其CE 和PE 设备之间地理位置上相距甚远,不可能直接接入到MPLS 骨干网的PE 设备上。这时候就可以使用GRE做为一种解决方案。,29,GRE安全增强,GRE Over IPSEC IPSEC Over GRE IPSE
19、C Profile,30,GRE Over IPSEC,Internet,Tunnel,总部,分部,Router A,Router B,GRE Over IPSEC,数据先进行GRE封装,然后在经过物理口进行IPSEC加密 GRE Over IPSEC VPN隧道在意义上是一种传输模式的VPN 如果设备上配置有NAT需要先deny掉IPSEC的流量,31,GRE Over IPSEC配置思路,Internet,Tunnel,总部,分部,Router A,Router B,GRE Over IPSEC,第一步:建立GRE网络和解决路由问题 第二部:建立ACL定义感兴趣数据流(通信点之间的acl)
20、 第三部:使用IPSEC加密GRE流量 1、建立isakmp策略定义封装格式 2、定义isakmp key 3、定义ipsec传输模式 4、建立crypto map匹配ACL和定义对端地址和传输模式 第四步:应用map到接口(物理口),32,IPSEC Over GRE,Internet,Tunnel,总部,分部,Router A,Router B,IPSEC Over GRE,IPSEC Over GRE区别就在于先对定义的数据流进行加密封装,之后再丢到tunnel口进行GRE封装后进行转发。 了解GRE Over IPSEC之后就会知道IPSEC Over GRE是有缺点的,配置的繁琐程度
21、差不多,IPSEC Over GRE是先加密后GRE,这样就会导致没有匹配上acl的数据走GRE不加密的情况。而GRE Over IPSEC就可以很好的保护这一点。因此,在这里就不做IPSEC Over GRE配置的解释了。,33,IPSEC Profile,Internet,Tunnel,总部,分部,Router A,Router B,IPSEC,和GRE Over IPSEC类似,区别在于这里的加密点从物理口跑到了tunnel口 这里的隧道同GRE Over IPSEC一样,在意义上是一种传输模式的VPN 如果设备上配置有NAT需要先deny掉IPSEC的流量,34,IPSEC Profile配置思路,Internet,Tunnel,总部,分部,Router A,Router B,IPSEC,第一步:建立GRE网络和解决路由问题 第二部:建立ACL定义感兴趣数据流(通信点之间的acl) 第三部:使用IPSEC加密GRE流量 1、建立isakmp策略定义封装格式 2、定义isakmp key 3、定义ipsec传输模式 4、建立IPSEC Profile定义传输模式 第四步:在tunnel口上启用tunnel protection调用IPSEC Profile。,35,谢谢!,