【NetDevOps】新一代网工需要了解的那点事儿(六)---VTI
6 隧道技术VTI
VTI对于网工来说比较好理解,所以就拿它开刀好了。除VTI外,现在的Linux原生支持下列5种L3隧道:
- ipip:也称为ipv4 in ipv4,就是说在一个ipv4的报文基础上再封装一个ipv4报文;
- GRE:全称通用路由封装,在数通中这个技术非常常见。主要就是在任意的网络协议上封装其他任意一种网络协议,比如OSPF封装在EGP中可以跨区域;
- sit:sit和ipip类似,区别是sit是将ipv6报文封装在ipv4中,有点像ipv6toipv4技术;
- ISATAP:全称站内自动隧道寻址协议,主要是用于ipv6的隧道封装;
- VTI:全称虚拟隧道接口,对于网工来说应该很熟悉吧,这是Cisco提出的一种关于IPSec隧道技术;
以上这5中隧道协议,它们的底层实现都离不开1.6章节介绍过的tun设备。就目前市面上常用的VPN软硬件,其底层实现都离不开这5中隧道协议。下面我们以VTI为例来看看它是如何实现的,其实其他4中隧道协议也都大同小异。
6.1 技术概述
这里我们主要讲解Cisco的VTI,从本质上说它就是完全虚拟的网卡,但和OpenVPN不同的是它在内核中就完成了几乎所有的功能。这一点虽然增加了性能,但是灵活性却相对减少了。控制明文的特性应该被配置到VTI接口上,控制密文的特性应该被运用到物理接口上,当我们使用IPsec VTI技术,我们可以对明文和加密后流量分开运用NAT,ACL和QoS等特性。如果我们运用传统的cryptomap技术,运用这些加密特性和IPsec隧道就会变的非常麻烦。VTI接口一般分为两种:静态VTI(SVTI)和动态VTI(DVTI)
6.2 VTI的实现
对于VTI的实现不要觉得有多么的复杂,其实很简单就把它想象成在GRE引擎上使用IPSec协议来封装数据报文。也就是说虚拟网卡是GRE实现的,而对于虚拟网卡内部数据封装格式则使用的是IPSec。下面我们主要介绍SVTI的实现过程:
实验环境出了点问题,后续更新。。。。
本文为原创,遵循BY-NC-ND版权协议,转载请附上原文出处链接和本声明。By:【F0rGeEk】