• VPN协议是如何工作的


    VPN,全名 Virtual Private Network,虚拟专用网,就是利用开放的公众网络,建立专用数据传输通道,将远程的分支机构、移动办公人员等连接起来。

    VPN 通过隧道技术在公众网络上仿真一条点到点的专线,是通过利用一种协议来传输另外一种协议的技术,这里面涉及三种协议:乘客协议、隧道协议和承载协议。

    Psec VPN。这是基于 IP 协议的安全隧道协议,为了保证在公网上面信息的安全,因而采取了一定的机制保证安全性。

    1、私密性,防止信息泄露给未经授权的个人,通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性。

    2、完整性,数据没有被非法篡改,通过对数据进行 hash 运算,产生类似于指纹的数据摘要,以保证数据的完整性。

    3、真实性,数据确实是由特定的对端发出,通过身份认证可以保证数据的真实性。

    在这个协议簇里面,有两种协议,这两种协议的区别在于封装网络包的格式不一样。

    • 一种协议称为 AH(Authentication Header),只能进行数据摘要 ,不能实现数据加密。还有
    • 一种 ESP(Encapsulating Security Payload),能够进行数据加密和数据摘要。

    这个协议簇还包含两大组件,一个用于 VPN 的双方要进行对称密钥的交换的 IKE 组件,另一个是 VPN 的双方要对连接进行维护的 SA(Security Association)组件。

    IPsec VPN 的建立过程

    第一个阶段,建立 IKE 自己的 SA。这个 SA 用来维护一个通过身份认证和安全保护的通道,为第二个阶段提供服务。在这个阶段,通过 DH(Diffie-Hellman)算法计算出一个对称密钥 K。

    DH 算法是一个比较巧妙的算法。客户端和服务端约定两个公开的质数 p 和 q,然后客户端随机产生一个数 a 作为自己的私钥,服务端随机产生一个 b 作为自己的私钥,客户端可以根据 p、q 和 a 计算出公钥 A,服务端根据 p、q 和 b 计算出公钥 B,然后双方交换公钥 A 和 B。

    到此客户端和服务端可以根据已有的信息,各自独立算出相同的结果 K,就是对称密钥。但是这个过程,对称密钥从来没有在通道上传输过,只传输了生成密钥的材料,通过这些材料,截获的人是无法算出的。

    有了这个对称密钥 K,接下来是第二个阶段,建立 IPsec SA。在这个 SA 里面,双方会生成一个随机的对称密钥 M,由 K 加密传给对方,然后使用 M 进行双方接下来通信的数据。对称密钥 M 是有过期时间的,会过一段时间,重新生成一次,从而防止被破解。

    多协议标签交换(MPLS,Multi-Protocol Label Switching)。MPLS 的格式如图所示,在原始的 IP 头之外,多了 MPLS 的头,里面可以打标签。

    有了标签,还需要设备认这个标签,并且能够根据这个标签转发,这种能够转发标签的路由器称为标签交换路由器(LSR,Label Switching Router)。

    这种路由器会有两个表格,一个就是传统的 FIB,也即路由表,另一个就是 LFIB,标签转发表。有了这两个表,既可以进行普通的路由转发,也可以进行基于标签的转发。

    在 MPLS VPN 中,网络中的路由器分成以下几类:

    • PE(Provider Edge):运营商网络与客户网络相连的边缘网络设备;
    • CE(Customer Edge):客户网络与 PE 相连接的边缘设备;
    • P(Provider):这里特指运营商网络中除 PE 之外的其他运营商网络设备。

    VPN 报文转发采用两层标签方式:

    • 第一层(外层)标签在骨干网内部进行交换,指示从 PE 到对端 PE 的一条 LSP。VPN 报文利用这层标签,可以沿 LSP 到达对端 PE;
    • 第二层(内层)标签在从对端 PE 到达 CE 时使用,在 PE 上,通过查找 VRF 表项,指示报文应被送到哪个 VPN 用户,或者更具体一些,到达哪一个 CE。这样,对端 PE 根据内层标签可以找到转发报文的接口。

    此文章为9月Day22学习笔记,内容来源于极客时间《趣谈网络协议》,推荐该课程。

  • 相关阅读:
    【TR】libevent 定时器:utp_timer
    k8s+crio+podman搭建集群
    Mac下使用Docker快速布署FastGPT实现AI私有知识库
    推荐系统(LLM去偏?) | (WSDM24)预训练推荐系统:因果去偏视角
    Bridge 模式
    【Vue】vue2 封装 echarts 基础组件,直接传 option 即可
    让 Java 打包缩小一大半,Solon v1.9.3 发布
    设计模式之适配器模式
    【Scala专栏】数据类型、变量常量、类和对象
    【软考 系统架构设计师】软件架构设计⑦ 构件与中间件技术
  • 原文地址:https://blog.csdn.net/key_3_feng/article/details/133185427