为什么要使用GRE over IPSec、IPSec over GRE或SVTI,其中最主要的原因是IPSec不支持组播传输,无法实现动态路由之间的通告,如果能够实现分支与总部间的动态路由传输,那么之前文章中提到的路由指向问题完全可以通过动态路由解决,前提是VPN能够传输动态路由。
使用GRE over IPSec、IPSec over GRE或SVTI的根本原因在于,能够使用隧道级VPN技术将IPsec无法分离的明文及密文流量通过隧道级VPN创建虚拟的隧道接口进行分离。
IPsec流量传输模型
上图为标准的IPSec VPN数据传输图,由图可见,无论是明文流量还是隧道中加密的流量都是通过物理接口进行转发的,并没有使用虚拟隧道接口。
gre over ipsec流量传输模型
上图以Gre over IPsec VPN为例,由图可见,明文流量通过虚拟隧道接口明文传输,隧道流量出物理接口时撞击物理接口的IPSec VPN MAP,通过物理接口IPSec SA加密转发。
做到了明文密文在端口上做到了分离,可以分别控制明文和密文流量了。
知识扩展:为什么IPSec VPN会不支持动态路由?
网上大部分的说法很笼统,基本上都是说IPSec VPN设计的不完善。并没有过多的解释。
下面是我对IPSec VPN设计不完善的多点理解:
1、 首先,IPSec不是一个隧道级的VPN,而是一个Site to Site的VPN,了解过动态路由协议的都知道,动态路由建立邻居是需要一个直连的互联地址。而IPSec VPN两端没有一个直连的互联地址,从而无法做到动态路由邻居的建立。
2、 再者IPSec VPN不支持组播,其原因也是因为IPsec不是一个隧道级的VPN,设计时没有独立隧道接口,所以没有接口生成在能够在隧道中传输的组播报文。
3、最后IPSec VPN不能够传输组播,首先组播是需要无连接协议所支持,而IPSec VPN的数据传输是基于IPSec SA建立的连接进行加解密传输的。
多方原因导致IPSec VPN无法支持动态路由。
首先前两种技术从名字中就能看出,GRE over IPsec是将GRE数据报文封装在IPSec的封装中进行传输的,如下图:
gre over ipsec流量传输模型
数据报文封装如下图:
gre over IPsec 报文封装格式
由上图能够看出GRE over IPSec使用隧道模式时多封装了一次IP的头部,增加了20字节的报文载荷,所以使用GRE over IPSec时,IPSec建议使用传输模式。
IPSec over GRE是将IPSec数据报文封装在GRE的报文进行传输的,如果使用动态路由协议,路由更新报文是明文传输且不安全的,而且因为IPSec VPN通过GRE虚拟隧道传输,所以无论设置隧道模式还是传输模式均协商为隧道模式,与GRE造成了重复封装,减小了数据报文的数据载荷容量,所以现实情况中很少有使用到IPSec over GRE。
流量传输如下图:
IPsec over gre 流量传输模型
数据报文封装如下图:
IPSec over gre封装格式
SVTI,静态虚拟隧道接口,该功能可以为IPSec VPN创建一个虚拟的隧道接口,此虚拟接口上不使用GRE技术,所以可以比GRE over IPSec方式减少4个字节的GRE报文头部,降低了发送加密数据的带宽。由于有了虚拟接口,所以可以直接在虚拟接口上启用动态路由协议了。
下图为SVTI流量传输图:
SVTI流量传输模型
SVTI可以不用设置IPSec VPN的感兴趣数据流,只要将需要安全加密传输的流量通过路由协议导向到IPSec虚拟隧道接口即可实现数据的安全隧道传输。
SVTI由于没有使用GRE技术,所以数据报文封装与传统IPSec VPN相同。
以上内容均为本人对所掌握知识的总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够得到大家的及时指正,大家共同学习,共同进步。
欢迎关注我的头条号,私信交流,学习更多网络技术!