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口发出去。
TikTok千粉号购买平台:https://tiktokusername.com/
TOP