IDC资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回IDC资讯列表

GRE Tunnel技术原理

发布时间:2023-01-31 10:11:00

GRE Tunnel技术原理

tunnel:指保存原始IP数据流的情况下封装成另外一种带有新IP报头(注:新IP为tunnel中的source、destination,这两个地址一定要是UP状态的接口IP(包括虚接口),且二者能够通讯(包括路由可达、方案等。方案原始IP数据流协议为GRE时,二者ping不通,但也能够通讯的))的数据流,从而以新IP数据流路由转发出去;接收端通过tunnel解封装,得到原始IP的数据流。tunnel封装模式有多种,默许情况下指GRE模式。

GRE(Genericrouting

encapsulation)通用路由封装是一中隧道协议,能够在IP隧道中封装各种网络层协议的分组,从而创建虚拟点到点链路。GRE隧道其实不提供加密服务,默许情况下以明文方式离开,所以通常使用GRE通过IPsec

vpn隧道传输动态路由协议数据流。

封装进程:

1、原数据流根据路由表转发进入tunnel中。

2、根据tunnel的配置被封装为GRE数据流,以后GRE数据流与tunnel所指定的source、destination地址组成新的IP报头GRE数据流。

3、新IP报头的GRE数据流再根据路由表转发到适应的出接口。

4、在出接口时,新IP报头的GRE数据流匹配了方案的加密映照表的ACL,所以新IP报头的GRE数据流被封装进了方案隧道中,以后构成的方案数据流转发出接口。

解封装进程:

1、路由器接收到数据流后判断为方案数据流,从而进行vpn解封装,以后得到带有”新IP报头“的GRE数据流。

2、”新IP报头"的GRE数据流被转到tunnel中,去掉”新ip报头”再进行GRE解封装,得到原始数据流。

3、原始数据流根据路由表转到目标出口,期间经过从tunnel中出来。

tunnel(GRE隧道)与IPsec方案隧道异同:

1、二者都可以保存原始IP数据流情况下进行封装,并异地传输。

2、tunnel在异地的两端建立虚拟隧道接口,相当于异地是直连关系(可以建立邻居关系),从而能传输动态协议等数据流,tunnel数据流以明文方式传输;IPsec

方案隧道没有虚接口,只传输单播而不能传输多播和广播,从而使众多路由协议没法建立邻居关系和传输路由更新,由于方案封装是加密的,所以数据流以密文方式传输。

3、二者可以独立使用不相影响。但通常将二者组合使用,到达支持所有数据传输格式与安全,即tunnel被封装进IPSec

方案中。

实验目录:

1)配置GRE,并视察传输GRE进程。

2)配置IPSec方案

3)配置将GRE隧道封装到方案里边。

实验拓扑:

实验配置:

1)各接口IP配置如上图,并在R3、R2上配置GRE隧道。

R3#shrun

interfaceTunnel3

ipaddress10.10.10.1255.255.255.0

\虚接口地址

tunnel

source3.3.3.10

tunneldestination2.2.2.10

\作为GRE封装后新的IP报头。

!

interfaceFastEthernet0/0

ipaddress3.3.3.10255.255.255.0

duplexauto

speedauto

!

interfaceFastEthernet0/1

ipaddress192.168.1.1255.255.255.0

speedauto

fullduplex

!

routereigrp100

network10.10.10.00.0.0.255

network192.168.1.0

noautosummary

!

iproute0.0.0.00.0.0.03.3.3.3

R3#

R2#shrun

interfaceTunnel2

\与上面的R3的tunnel3对应。

ipaddress10.10.10.2255.255.255.0

tunnelsource2.2.2.10

tunneldestination3.3.3.10

!

interfaceFastEthernet0/0

ipaddress2.2.2.10255.255.255.0

duplexauto

speedauto

!

interfaceFastEthernet0/1

ipaddress172.16.1.1255.255.255.0

duplexauto

speedauto

!

routereigrp100

network10.10.10.00.0.0.255

network172.16.1.00.0.0.255

noautosummary

!

iproute0.0.0.00.0.0.02.2.2.1

R2#

1.1)查看路由

R3(config)#doshiprou

Gatewayoflastresortis3.3.3.3tonetwork0.0.0.0

3.0.0.0/24

issubnetted,1subnets

C3.3.3.0

isdirectlyconnected,FastEthernet0/0

172.16.0.0/24issubnetted,1subnets

D

172.16.1.0[90/297270016]via10.10.10.2,03:50:38,Tunnel3

\目标地址的出口为tunnel3

10.0.0.0/24

issubnetted,1subnets

C

10.10.10.0

isdirectlyconnected,Tunnel3

\目标地址的出口为tunnel3

C192.168.1.0/24isdirectly

connected,FastEthernet0/1

S*0.0.0.0/0[1/0]via3.3.3.3

R3(config)#

R2#shiprou

Gatewayoflastresortis2.2.2.1tonetwork0.0.0.0

2.0.0.0/24

issubnetted,1subnets

C2.2.2.0

isdirectlyconnected,FastEthernet0/0

172.16.0.0/24issubnetted,1subnets

C

172.16.1.0isdirectlyconnected,FastEthernet0/1

10.0.0.0/24

issubnetted,1subnets

C

10.10.10.0isdirectlyconnected,Tunnel2

D192.168.1.0/24

[90/297270016]via10.10.10.1,03:54:10,Tunnel2

S*0.0.0.0/0[1/0]via2.2.2.1

R2#

1.2)检测连通性及路由跟踪

R3#ping172.16.1.2sou

192.168.1.1

Typeescapesequencetoabort.

Sending5,100byteICMPEchosto172.16.1.2,timeoutis2

seconds:

Packetsentwithasourceaddressof

192.168.1.1

!!!!!

Successrateis100percent(5/5),roundtripmin/avg/max=68/90/100ms

R3#

R3#trace172.16.1.2sou

192.168.1.1

Typeescapesequencetoabort.

Tracingtherouteto172.16.1.2

110.10.10.284msec96msec60msec

2172.16.1.296msec92msec76msec

R3#

R3#trace172.16.1.1sou

192.168.1.1

Typeescapesequenceto

abort.

Tracingtherouteto172.16.1.1

110.10.10.292msec56msec72msec

R3#

已通表明GRE隧道正常,此时异地之间犹如处于一个局域网内且可以进行动态路由的更新。

3)由于GRE隧道通讯是不安全的,所以将GRE数据流封装进方案隧道,此时方案原封不动的加密新IP报头的GRE数据流,并将其传输到异地。注:加密并保存原始IP数据流是方案的特点,而本次被方案封装的原始IP数据流指的是新IP报头的GRE隧道。

IPsec方案配置,R3与R2相对应。

R3#shrun

cryptoisakmppolicy1

encraes

authenticationpreshare

cryptoisakmpkey6cisco123address2.2.2.10

\这几步都是配置isakmp

!

!

cryptoipsectransformsetgre_vpnesp3desespshahmac

\配置ipsec

!

cryptomapgre_map10ipsecisakmp

\配置map

setpeer2.2.2.10

settransformset

gre_vpn

matchaddress100

accesslist100permitgrehost

3.3.3.10host2.2.2.10

\将新IP报头的GRE数据流标为方案封装的感兴趣流。

interface

FastEthernet0/0

ipaddress3.3.3.10255.255.255.0

duplexauto

speedauto

cryptomapgre_map

\将加密映照表利用于接口

R3#

查看方案隧道建立情况

R3#shcrypto

session

Cryptosessioncurrentstatus

Interface:FastEthernet0/0

Sessionstatus:UPACTIVE

\表明方案隧道建立成功

Peer:2.2.2.10port500

IKESA:local3.3.3.10/500remote2.2.2.10/500

Active

IPSEC

FLOW:permit47host

3.3.3.10host2.2.2.10

\方案数据流的原始IP(这里指GRE新报头的IP)。红色标注的”47”很重要,它指出了方案的原始IP数据流协议为GRE,如果是IP协议,那末”47“会变成ip,这些协议在定义方案感兴趣流ACL时已指出来了。

ActiveSAs:2,origin:cryptomap

R3#

查看路由

R3#shiprou

Gatewayoflastresortis3.3.3.3tonetwork0.0.0.0

3.0.0.0/24

issubnetted,1subnets

C3.3.3.0

isdirectlyconnected,FastEthernet0/0

172.16.0.0/24issubnetted,1subnets

D

172.16.1.0[90/297270016]via10.10.10.2,00:21:08,

Tunnel3

10.0.0.0/24

issubnetted,1subnets

C

10.10.10.0isdirectlyconnected,Tunnel3

C192.168.1.0/24isdirectly

connected,FastEthernet0/1

S*0.0.0.0/0[1/0]via3.3.3.3

R3#

与建立GRE隧道时路由表一样。更加说明方案隧道不会影响路由的转发。

检测链路连通

R3#ping

172.16.1.2sou192.168.1.1

Typeescapesequencetoabort.

Sending5,100byteICMPEchosto172.16.1.2,timeoutis2

seconds:

Packetsentwithasourceaddressof

192.168.1.1

!!!!!

Successrateis100percent(5/5),roundtripmin/avg/max=104/120/140ms

R3#trace172.16.1.2sou192.168.1.1

Typeescapesequencetoabort.

Tracingtherouteto172.16.1.2

110.10.10.296msec124msec68msec

2172.16.1.2128msec108msec88msec

R3#

到此GRE隧道+方案隧道组合建立成功。

识扩知展:在虚接口上建立tunnel隧道,实际中比较稳定,在IPV6过渡中利用很多。

1、在R3上将tunnel的source、destination分别30.3.3.10、20.2.2.10

interfaceTunnel3

ipaddress10.10.10.1255.255.255.0

tunnelsource30.3.3.10

tunneldestination20.2.2.10

方案的感兴趣流设置为

accesslist100permitgrehost

30.3.3.10host20.2.2.10

在R2做相应配置,查看结果

R3(config)#dosh

cryse

Cryptosessioncurrentstatus

Interface:FastEthernet0/0

Sessionstatus:UPACTIVE

\表明方案已建立成功

Peer:2.2.2.10port500

IKESA:local3.3.3.10/500remote2.2.2.10/500

Active

IPSECFLOW:permit47host30.3.3.10host

20.2.2.10

ActiveSAs:2,origin:cryptomap

R3(config)#

R3(config)#doping

10.10.10.2

Typeescapesequencetoabort.

Sending5,100byteICMPEchosto10.10.10.2,timeoutis2

seconds:

.....

Successrateis0percent(0/5)

R3(config)#

但tunnel隧道没有建立成功。这由于tunnel是在30.3.3.10、20.2.2.10连接的基础上建立的,而这两个IP压根都没在各自的路由器上,所以这两个IP之间是没法通讯的,更别说tunnel建立了。

所以在各自路由器上建立虚接口

R3#

interfaceLoopback20

ipaddress30.3.3.10255.255.255.255

R2#

interfaceLoopback20

ipaddress20.2.2.10255.255.255.255

结果

R3(configif)#doping

10.10.10.2

Typeescapesequencetoabort.

Sending5,100byteICMPEchosto10.10.10.2,timeoutis2

seconds:

!!!!!

Successrateis100percent(5/5),roundtripmin/avg/max=104/122/152ms

R3(configif)#

R3(configif)#doship

rou

3.0.0.0/24

issubnetted,1subnets

C3.3.3.0

isdirectlyconnected,FastEthernet0/0

172.16.0.0/24issubnetted,1subnets

D

172.16.1.0[90/297270016]via10.10.10.2,00:11:07,Tunnel3

\表明动态路由EIGRP与异地路由器建立成功。也说明tunnel建立成功。

10.0.0.0/24

issubnetted,1subnets

C

10.10.10.0isdirectlyconnected,Tunnel3

C192.168.1.0/24isdirectly

connected,FastEthernet0/1

30.0.0.0/32

issubnetted,1subnets

C

30.3.3.10isdirectlyconnected,Loopback30

S*0.0.0.0/0[1/0]via3.3.3.3

R3(configif)#

这就是文章前面提到过tunnel建立的条件:tunnel中的source、destination,这两个地址一定要是UP状态的接口IP(包括虚接口),且二者保证能够通讯(包括路由可达、方案等。方案原始IP数据流协议为GRE时,二者ping不通,但也能够通讯的)。

现在tunnel已建立成功了,表明source、destination之间肯定能够通讯了,但二者之间却Ping通,这是为啥???

R3#ping20.2.2.10sou

30.3.3.10

Typeescapesequencetoabort.

Sending5,100byteICMPEchosto20.2.2.10,timeoutis2

seconds:

Packetsentwithasourceaddressof

30.3.3.10

.....

Successrateis0percent(0/5)

R3#

由于使用ping针对的是数据流协议为ip才行,而本例中对方案来讲所封装的原始IP数据流协议为GRE,所以不能用ping来测试这两个IP。

R3#shcrypto

session

Cryptosessioncurrentstatus

Interface:FastEthernet0/0

Sessionstatus:UPACTIVE

Peer:2.2.2.10port500

IKESA:local3.3.3.10/500remote2.2.2.10/500

Active

IPSEC

FLOW:permit47host

30.3.3.10host20.2.2.10

\“47”表明为GRE协议,如果为“IP”则是IP协议,那末才可以ping通。

ActiveSAs:2,origin:cryptomap

R3#

GRETunnel原理简明解析

GRE的原理是将3层报文封装到IP报文里,送到tunnel对端后在解开的技术。你可以把tunnel想象成一个DDN专线,tunnel口上配置的ip地址就相当于连接DDN专线的串口的IP地址。这个地址通常为内部的IP,Internet上是不认的(假定tunnel通过Internet来建)。

而tunnelsource和tunnel

destination地址是Internet上可以路由的IP地址,用于建立tunnel,其实不是tunnel口的IP。

以例子为例,假定本端路由器

eth0:10.1.1.1/24(连接内部局域网)

tunnel0:10.2.1.1/30(192.15.135.81192.15.135.80)

serial0:192.15.135.81/24(连接Internet)

iproute10.3.1.0255.255.255.010.2.1.2

对端路由器

eth0:10.3.1.1/24(连接内部局域网)

tunnel0:10.2.1.2/30(192.15.135.80192.15.135.81)

serial0:192.15.135.80/24(连接Internet)

iproute10.1.1.0255.255.255.010.2.1.1

本端局域网里的主机10.1.1.2发一个报文给10.3.1.2:报文为{SA:10.1.12,DA:10.3.1.2}

首先该报文会发给PC网关,即“本端路由器”,路由器根据目的地址路由,发现需要从tunnel0口发出,做GRE封装后,报文为{SA:192.15.135.81,DA:192.15.135.80,{原来报文}},然后实际上从Serial0口发出,经过Internet上的N个路由器后到达“对端路由器”,路由器解开GRE封装恢复原来报文,再从eth0口发出去。

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!