我们先讲到了数据中心,里面极其复杂,但是有的公司有多个数据中心,需要彼此连接起来,怎么办呢?
1.走公网连接,但是公网的话,不太安全,可能被别人偷窥
2.在运营商处租用一个专线进行连接,这个需要花费大量的钱
3.使用VPN来连接,比较折中
Vpn,全名是 Virtual Private Network 虚拟专有网,利用开放的公众网络,建立数据传输通道,将远程的分支机构,数据中心连接
(一),VPN如何工作的?
VPN通过隧道技术在公网上模仿了一条点对点的专线,通弄过利用一种协议来传输另一种协议的技术,其中包含的协议:乘客协议,隧道协议,承载协议
最基本的VPN协议,IPsec来举例
就好比从A地到B地,其中要过跨海大桥,大桥就是隧道协议
然后A地的内部行走是需要协议的,这既是乘客协议,B地的行走也是同样的协议,这两个都是乘客协议
在大桥上行走,也要遵守大桥上的协议,就是外层的承载协议
我们要发往公网,就要遵循公网的隧道协议,公网传输过程中,是承载协议产生的效益,然后到达了之后外部的承载协议就结束了,到了目的地,就是乘客协议起作用的时候了
由于不加密在公网上传输并不安全,所以我们看一种比较在公网上的传输协议,IPsec VPN,基于IP协议的安全隧道协议,为了保证公网上信息的安全做了一定的保护机制
机制一:私密性,通过加密将数据从明文到密文,保证了数据的私密性
加密可以分为对称加密和非对称加密,对称加密速度快,而VPN需要传输大量的数据,所以采用对称加密,对于秘钥的交换,采用了因特网秘钥交换机制,IKE协议
机制二:完整性,为了防止数据的丢失和非法篡改,于是进行hash运算,产生数据摘要
机制三:真实性,数据由特定的对端发出,通过身份认证保证真实性
(二)VPN如何建立的
两种防护,第一种就是预共享秘钥,先商量好一个暗号,比如天王盖地虎,对上了,就是对的
数字签名
或者使用数字签名去验证,就是使用私钥进行签名,时候对方用公钥来解密
IPsec 的协议簇里面拥有着这三个特性
其中的AH协议,是为了保证数据的完整性的,只能进行数据摘要,不能实现数据加密
还有一种是ESP,能够进行数据加密和数据摘要
这个协议簇还包含着两大组件,一个用于VPN的双方要进行对称机密秘钥交换的IKE组件
一个是VPN的双发要对连接进行维护的SA组件
IPsec VPN的建立过程
第一个阶段,建立IKE自己的SA,这个SA用来维护一个通过身份认证和安全保护的通道,为第二阶段提供服务,在这个阶段,通过DH算法算出一个对应的加密K
DH算法
DH算法是一个精妙的算法,客户端和服务器端约定两个公开的质数 p和 q,然后客户端产生一个数a作为自己的私钥,服务器随机产生一个b作为自己的私钥,客户端可以根据 约定好的p和q去计算出公钥A,服务器端通过p q和b,计算出公钥B,然后双方交换A和B,这时候,双方可以通过之前的信息,计算出一个公钥K,进行通信
简单来说,就是双方约定一种颜色,假如是黄色,我利用我的随机数,比如红色,涂上去 形成橙色,对方用对面的随机数涂上去,比如蓝色,生成了绿色,我们交换 橙色和绿色,然后我在绿色上涂上红色,成为棕色,对方在橙色涂上自己的蓝色,也成为了了棕色,棕色就是最终的秘钥了,如果有人在中间窃取的话,也只能拿到橙色和绿色
然后双方都有了相同的秘钥,K,就可以建立IPsec SA了,在这个SA里面,双方会有一个随机的随机的对称秘钥M,由K加密传给对方,然后使用M进行双方接下来的通信,而且秘钥M是具有过期时间的,每隔一段时间,就会重新生成一次,防止被破解
IPsec SA具有以下的内容
1.SPI,用于标识不同的连接
2.双方的约定算法,哈希算法和封装模式
3.生存周期,超过这个周期,急需要重新成一个IPsec SA
IPsec建立好之后,就可以打包开始封装传输了
在原本的IP头上面,加了一层封装 ESP层,现在解包的顺序改为了 ESP -> IP -> TCP/UDP
在ESP的正文里面,ESP的头部有双方约定好的SPI和这次的传输的序列号
接下来就是加密的内容,通过,通过对称加密进行解密,解密后在正文的最后,指明了里面的协议是什么,如果是IP,就可以解析IP头,然后解析IP头,然后依次解析TCP头
在IPsec VPn中,客户端发送的明文的IP包,都会被加上ESP头和IP头,在公网传输,到了对端后,去掉ESP的头,进行解密
这种点对点的基于IP的VPN,可以满足互通的要求,但是速度比较慢,这是因为IP不是面向连接的,IP包可以自由的选择路径,到下一个路由器去,很可能会丢包,这就需要TCP的重发来保证可靠性
为了避免IP包的来回绕路的错乱.出现了对应的技术,ATM(虽然已经过时了),ATM的技术区别在于,是面向连接的,和TCP的连接不同,ATM在第三层,是实实在在的建立了一个连接,这个连接一旦建立了,所有的包都按照相同的路径走,不会分头行事
好处是不需要每次都查路由表的,虚拟路径已经建立,打上了标签,后续的包会直接走过前人的道路,效率块的多
但是一旦以虚拟路径上的某个路由器坏掉了,那么这个连接就断掉了,之后的包也发不过去了
于是ATM技术就被淘汰了
虽然ATM技术没有成功,但是提出了由原本的路由查找变为简单的标签查找的思路被继承了下来
在后来,有了一种方式将两者的有点结合了,多协议标签交换 Multi-Protocol Label Switching
MPLS
将ESP头换为了MPLS头,IP头外面加上了MPLS头,直接打标签
在二层的头里面,会首先是一个类型字段 0x0800表示IP, 0x08847表示MPLS Label
在MPLS头里面,首先是标签值,20位,3位实验位,一位栈底标志位,表示当前标签是否处于栈底了
这就允许多个标签编码到同一个数据包里面了,形成一个标签展了,然后在24位之后是8位的TTL存活时间字段,如果TTL到达了0,就认为已经过期了
有了标签,需要由对应的设备可以解析MPLS头,并且根据里面的标签进行转发,这种标签的路由器就是标签交换路由器
这种路由器有两个表格,一种是传统的FIB,即为路由表,另一个就是LFIB,标签转发表,有了这两个表,就可以既进行普通的路由转发,又进行基于标签的转发
有了标签转发表,转发的过程就可以如图所示了
我们要区分 MPLS区域和非MPLS区域,在MPLS区域中间,使用标签来进行转发,例如要访问 114.1.1.1那么我在边界上发现马上要进入MPLS区域了,进去了找到了对应的标签1,于是在IP头的外面加入一个标签1,在区域里面,依次进行标签的转变
这样通过标签转换建立的路径称为LSP,标签交换路径,在一条LSP上,沿着数据包的方向,相邻的LSR分为了上游LSR和下游LSR
有了标签后,转发变得容易了,如何生成标签呢?
在MPLS中,比较难得就是生成标签,在生成标签中的协议被称为LDP
标签的生成,一般从下游开始的
如果有一个边缘节点发现了自己的路由表中心的目的地址,就要说自己的可以到达了新的路径了,就会给别人说,能够达到一个新的路径了
这个边缘节点的上游LSR收到了,发现可以分配新的标签,就给这个新的节点分发标签,并且继续向上游LSR发送标签映射消息
当入口的LSR收到标签映射的消息时候,就会给标签转发表中添加相对应的条目,这时候,就完成了LSP的建立,有了标签,就好转发了
然后这协议和VPN进行结合
PE(Provider Edge):运营商网络和客户网络相连接的边缘网络设备
CE(Customer Edge):客户网络和PE相连接的边缘设备
P(Provider):指运营商网络中除了PE之外其他运营商网络设备
首先说P Router之间的标签转发没有问题,但是客户和这个内部接入后,就会比较复杂
首先说,客户大多数都是私网的地址 (192.168.X.X)
比如机构A和机构B都使用了192.168.101.0/24
BGP就会疑惑了,既然VPN将数据中心连接起来了,那么如何处理空间重叠的路由
于是PE路由器之间使用特殊的MP-BGP来发布VPN路由,在互相沟通的消息中,一般32位IPV4地址之前之前加上一个客户表示的区分符作为客户地址的区分,方便区分不同的机构
然后路由表也会有问题
两个客户的IP包到了一个PE后,PE就会发现如何转发出去呢?
在PE上,可以通过VRF建立每个客户一个路由表,和其他VPN客户路由和普通路由相互区分,专属客户的小路由器
远端PE通过MP-BGP将业务路由放在了近端pE,近端PE根据不同的客户选择出相关客户的业务路由放在相应的VRF路由表中
VPN报文采用两层标签的方式
第一层,骨干网络交换,方便找到边缘的PE
第二层,在PE到CE的过程中使用,PE上,通过查找VRF表,指示报文应该送到哪个VPN用户,到达哪一个CE,这样对端的PE就可以通过内层标签找到对应的客户
具体的例子就是
1.机构A和机构B发出一个目的为192.168.10.10/24的IP报文,分别由各自的CE发送到PE
2.PE会根据报文到达的接口和目的地址查找VPN的VRF,匹配后将报文转发出去,同时打上内层和外层的两个标签,然后在骨干网上,可能走相同的路径到目的
3.利用外层的报文,送到了出口的pe上,然后在到达出口PE的前一跳将外层标签剥离,仅剩下内层标签
4.出口PE根据内层标签和目的地址查找VPN的实例列表VRF,确定报文的出接口,转发给机构的CE
5.CE根据IP转发到目的地
本章小结:
1.VPN可以将一个机构中的多个数据中心连接起来,让机构感觉在一个数据中心里面
2.可以选择基于Ipsec VPN来传输,但是性能不太好
3.MPLS-VPN整合了IP转发模式和ATM标签转发模式的优势,性能好,但是需要从运营商地方买
课后思考:
1.因为很多业务都需要高可用和弹性伸缩功能,所以很多机构都会自建私有云外,采购公有云,如何打通呢?
2,前面的上网行为,都是基于电脑的,手机上网需要什么协议呢?
1.对于打通双方的隧道,可以选择采用VPN的方式,再从公有云厂商那里购买网关,如果不介意花销,可以选择专线,向运营商购买
我们说的VPN包含了IPsec VPN和MPLS VPN,这个需要在公有云的运营商那边去购买VPN的网络,将其和私有云的网关打通
2.手机可以选择gprs协议
DH算法会因为传送的随机数而导致安全性的问题吗?
在DH算法生成对称秘钥K的时候,需要交换公开质数pq,然后生成AB,交换AB生成质数K
那么这个交换过程中,可能存在泄露,如果拿到了所有的材料,是否可以生成相同的密钥,如何保证安全性?
DH对于传输材料的公钥和私钥来说,对于安全性是没有影响的,传输的材料比传输原始的公钥要安全的多,所以不用担心截获的问题