欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

GRE 原理、配置和捕获数据包分析

最编程 2024-05-04 21:12:46
...

GRE原理

GRE定义

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。

GRE的优点以及使用场景

  • GRE实现机制简单,对隧道两端的设备负担小。
  • GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。
  • GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。
  • GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。

GRE原理

报文在GRE隧道中传输包括封装和解封装两个过程。如下所示,如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。

GRE原理、配置与抓包分析_VPN

  • 封装
  1. Ingress PE从连接X协议的接口接收到X协议报文后,首先交由X协议处理。
  2. X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。
  3. 根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。
  4. 根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。

关于封装后详细的报文格式,请参见报文格式。

  • 解封装
    解封装过程和封装过程相反。
  1. Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。
  2. GRE协议剥掉GRE报头,获取X协议,再交由X协议对此数据报文进行后续的转发处理。


GRE实验配置


实验拓扑

GRE原理、配置与抓包分析_GRE_02

配置步骤

步骤一:修改路由器名称配置IP地址

配置步骤略,配置完成之后需检查互联地址是否能够ping通

步骤二:配置静态路由,打通公网

[R1]ip route-static 100.101.0.0 255.255.255.252 100.100.0.2
[R2]ip route-static 100.100.0.0 255.255.255.252 100.101.0.2
测试:
[R1]ping 100.101.0.1
PING 100.101.0.1: 56 data bytes, press CTRL_C to break
Reply from 100.101.0.1: bytes=56 Sequence=1 ttl=254 time=50 ms
Reply from 100.101.0.1: bytes=56 Sequence=2 ttl=254 time=30 ms
Reply from 100.101.0.1: bytes=56 Sequence=3 ttl=254 time=30 ms
Reply from 100.101.0.1: bytes=56 Sequence=4 ttl=254 time=30 ms
Reply from 100.101.0.1: bytes=56 Sequence=5 ttl=254 time=30 ms

--- 100.101.0.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 30/34/50 ms

上述配置完成之后,公网打通,PC可以通网关但是PC之间不能互通,可以配置GRE打通私网

步骤三:配置GRE

[R1]
interface Tunnel0/0/0
ip address 10.0.12.1 255.255.255.252 配置隧道的接口地址
tunnel-protocol gre 配置tunnel接口的协议类型
keepalive 启用GRE隧道接口的检测机制
source 100.100.0.1 指定隧道的起始地址
destination 100.101.0.1 指定隧道的终止地址
[R2-Tunnel0/0/1]
interface Tunnel0/0/1
ip address 10.0.12.2 255.255.255.252
tunnel-protocol gre
keepalive
source 100.101.0.1
destination 100.100.0.1

要确保tunnel接口双up

步骤四:配置静态路由打通私网

将私网流量引入tunnel口,私网流量通过tunnel口转发

[R1]ip route-static 172.16.10.0 255.255.255.0 10.0.12.2
[R2]ip route-static 192.168.10.0 255.255.255.0 10.0.12.1

查看IP路由表

GRE原理、配置与抓包分析_VPN_03

GRE原理、配置与抓包分析_GRE_04

此时私网路由已经打通

步骤五 验证

1.用PC1去pingPC2

PC>ping 172.16.10.1

Ping 172.16.10.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
From 172.16.10.1: bytes=32 seq=2 ttl=126 time=31 ms
From 172.16.10.1: bytes=32 seq=3 ttl=126 time=16 ms
From 172.16.10.1: bytes=32 seq=4 ttl=126 time=31 ms
From 172.16.10.1: bytes=32 seq=5 ttl=126 time=16 ms

--- 172.16.10.1 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 0/23/31 ms

2.检查GRE状态

display interface tunnel,查看所有Tunnel接口的工作状态

3.抓包

GRE原理、配置与抓包分析_GRE_05

GRE原理、配置与抓包分析_GRE_06

封装
  1. R1的G0/0/0口收到PC的数据帧(SIP:192.168.10.1,DIP:172.16.10.1)
  2. R1收到数据包之后根据目的地址查找路由表和出接口,确定如何转发报文,当发现出接口是GRE Tunnel接口后,对原数据帧进行GRE封装,添加GRE头
  3. 骨干网的传输协议为IPv4,然后给报文添加上隧道的源地址和目的地址(SIP100.100.0.1:DIP:100.101.0.1)
  4. 然后根据封装好的数据报文在路由表中查找相应的出接口并发送报文,报文在公网中按照公网路由进行转发报文(这里就是为什么要保证公网路由可达)


解封装

解封装过程和封装过程相反。

  1. R2从GRE Tunnel接口收到该报文(SIP100.100.0.1:DIP:100.101.0.1),通过解析IP头发现报文就是发给我自己R2de,R2去掉外层的SIP和DIP,交给GRE协议处理。
  2. GRE协议剥掉GRE报头,得到私网数包(SIP:192.168.10.1,DIP:172.16.10.1),然后通过查找路由表进行转发