跳转到内容

计算机网络技术与服务/VPN

来自维基教科书,开放的书籍,开放的世界
Previous page
迁移到IPv6
计算机网络技术与服务 Next page
VoIP
VPN

一个想要为其远程终端(单个用户,数据中心,分支机构)构建企业私有网络的公司,可以采用两种不同的方法

  • 公司可以构建自己的专用基础设施(租赁线路,拨号连接);
  • 公司可以采用VPN解决方案。

虚拟专用网络 (VPN) 允许公司通过公共共享基础设施(互联网或互联网服务提供商的网络)将连接部署到多个用户,并实施自己的策略(如安全性,服务质量,私有寻址),就好像它自己的私有网络一样。

VPN解决方案的优势是

  • 廉价性: 到达远程用户的昂贵物理连接不再需要构建,而是VPN解决方案利用了现有的基础设施,因此成本是共享的;
  • 选择性: 由于防火墙的存在,只有拥有权限的用户才能访问→更高的安全性;
  • 灵活性: 允许的用户可以轻松添加,用户也可以轻松移动。

VPN由一些主要组件组成

  • 数据通过隧道传递,因此它们通过使用GRE、L2TP、MPLS、PPTP和IPsec等协议与在共享基础设施上传输的其他数据分离
  • 数据为了更高的安全性而被加密,使用IPsec和MPPE等协议;
  • 数据通过完整性检查,因此它们不能被篡改,这要归功于TCP校验和或IPsec中的AH;
  • 在隧道建立之前,通过身份验证机制检查隧道另一端是谁的身份(例如,使用数字证书)。

VPN解决方案可以根据以下标准进行分类

叠加 对等
接入 L2TP、PPTP
站点到站点 IPsec、GRE MPLS

部署场景

[编辑 | 编辑源代码]

VPN可以在两种主要场景中部署

  • 接入VPN(也称为“远程VPN”或“虚拟拨号”):它将拨号连接虚拟化,并通过使用PPTP和L2TP等协议,通过ISDN、PSTN、电缆调制解调器、无线局域网将单个用户连接到企业网络;
  • 站点到站点VPN: 它将租赁线路虚拟化,并通过使用IPsec、GRE和MPLS等协议将多个远程网络相互连接。
站点到站点VPN可以以两种方式部署
  • 内联网VPN: 所有互连网络都属于同一家公司
  • 外联网VPN: 互连网络属于多家公司

VPN功能必须满足一些要求

  • 安全:防火墙可以限制对网络资源的访问;
  • 数据加密:为了保护通过共享基础设施传输的信息;
  • 可靠性:关键任务流量必须得到保证,以到达目的地;
  • 可扩展性:该解决方案必须适用于小型和大型网络;
  • 增量部署:随着网络的增长,该解决方案保持工作;
  • 接入VPN的额外要求
    • 强身份验证:为了验证移动用户的身份(例如,个人笔记本电脑可能被盗);
    • 用户及其帐户的集中管理;
  • 站点到站点外联网VPN的额外要求
    • 选择性访问:每家公司都可以授予其他公司对某些服务的访问权限,但阻止其私人网络的其他服务的访问权限;
    • 地址冲突管理:一个私有地址可能属于两个不同的私有网络→需要NAT;
    • 使用开放的、基于标准的解决方案:不同的公司需要能够共享相同的VPN解决方案;
    • 流量控制:每家公司都需要控制来自其他公司网络的流量量,并消除网络接入点的瓶颈。

互联网访问

[编辑 | 编辑源代码]

连接到VPN的远程终端可以通过两种方式访问公共互联网

  • 集中式互联网访问: 所有进出互联网的流量都始终通过总部VPN网关传递;
  • 分布式互联网访问: 进出互联网的流量不涉及VPN,VPN仅用于企业流量。

集中式互联网访问

[编辑 | 编辑源代码]
优点
  • 集中式策略管理:公司可以针对所有连接的远程终端一次性设置自己的互联网访问策略(例如,禁止员工在工作时访问某些网站);
  • 安全优势:企业防火墙可以保护主机免受来自互联网的恶意数据包的攻击。
缺点
  • 远程终端速度较慢:进出互联网的数据包需要经过更多的跳跃才能传递,因为它们始终必须经过总部VPN网关,而不是直接到达目的地;
  • 总部需要更高的带宽;
  • 强制连接:VPN必须始终处于活动状态,即用户不能临时禁用VPN,并在没有企业防火墙保护的情况下浏览互联网,否则,如果他在返回VPN时被感染,他将感染企业网络,因为来自他的流量没有被防火墙保护。

分布式互联网访问

[编辑 | 编辑源代码]
优点
  • 远程终端速度更快:数据包始终直接前往互联网目的地;
  • 自愿连接:用户可以随时禁用VPN,而不会造成额外的安全威胁。
缺点
  • 分布式策略管理:公司需要在远程终端配置多个路由器,以设置自己的策略;
  • 安全威胁:企业防火墙保护缺失。

VPN可以根据共享基础设施的作用分为两种模型

  • 叠加模型: 基础设施不知道VPN解决方案,只提供IP连接服务:它只传输数据包,而不知道它们是VPN数据包,在不与基础设施交互的VPN网关之间传输→有利于数据隐私:基础设施的管理人员无法查看私人数据,也无法利用路由信息;
  • 对等模型: 基础设施内的网关参与VPN的创建,并相互交互→更好的路由,更高的可扩展性。
非 MPLS 基于对等模型的 VPN 可以是
  • 专用路由器:基础设施的管理者将一些路由器完全分配给一个客户,另一些路由器完全分配给另一个客户,等等;
  • 共享路由器:基础设施中的每个路由器都由多个客户共享 → 成本更低。

VPN 可以由客户或提供商配置

  • 客户配置:用户自行创建和管理 VPN,隧道在客户边缘 (CE) 之间建立;
  • 提供商配置:VPN 由互联网连接提供商完全提供和管理,隧道在提供商边缘 (PE) 之间建立。

客户配置的 VPN 不能是对等模型,因为提供商无法感知客户自行创建的 VPN。

VPN 连接可以在不同的层级

  • 第 2 层:以太网帧在 VPN 中交换
    • 虚拟专用局域网服务 (VPLS):它虚拟化了一个局域网:终端连接在一起,就好像它们在同一个局域网中一样 → 允许广播数据包;
    • 虚拟专用线路服务 (VPWS):它虚拟化了一条租用线路(在分组交换网络上);
    • 仅 IP 局域网式服务 (IPLS):它虚拟化了一个 IP 网络,但只允许 IP(ICMP 和 ARP)数据包;
  • 第 3 层:IP 数据包在 VPN 中交换;
  • 第 4 层:TCP 连接(可能使用 SSL 进行安全保护)在 VPN 中建立。

虚拟拓扑

[编辑 | 编辑源代码]

根据虚拟拓扑,VPN 可以分为两类

  • 星型:每对终端只能通过总部进行通信 → 总部由于流量较高可能会出现瓶颈;
  • 网状:每对终端可以直接相互通信,无需通过总部 → 路由更好,但隧道数量更多。

点对点协议 (PPP) 是一种第 2 层协议,用于点对点连接(拨号、ISDN)以封装上层协议。它是 HDLC 的扩展。

一个 PPP 数据包具有以下格式

1 字节 1 字节 1 字节 1 或 2 字节 2 或 4 字节 1 字节
01111110(标志) 地址 控制 协议 数据 CRC 01111110(标志)

其中最重要的字段是

  • 起始和终止标志:它们是数据帧所必需的;
  • 地址控制 字段:它们继承自 HDLC,但在点对点连接中完全没有意义;为了简化 HDLC 设备中的处理算法,它们被保留了下来;
  • 协议 字段:它指定封装数据包的上层协议。

'01111110' 是分隔帧的序列,但为了将该序列作为数据发送,需要一些填充规则。在 PPP 中,填充是在字节级别进行的:当数据中出现等于分隔字节的字节时,以及当数据中出现等于转义字节本身的字节时,都会插入转义序列 '01111101'

链路控制协议 (LCP) 的任务是打开和关闭 PPP 连接,协商一些选项(例如帧最大长度、身份验证协议)。

一个 IP 数据包不能直接封装第 3 层或更低层的协议,因为 IPv4 首部中的 '协议' 字段只能指定上层协议(例如 TCP、UDP、ICMP)。

通用路由封装 (GRE) 是一种协议,用于将任何协议(包括 IP 和其他更低层协议)封装到 IP 中:GRE 首部插入封装的 IP 首部和封装的数据包之间,封装的 IP 首部中的 '协议' 字段设置为 47。

GRE 首部具有以下格式

5 8 13 16 32
C R K S s 递归 标志 版本(0) 协议类型
校验和(可选) 偏移量(可选)
密钥(可选)
序列号(可选)
路由(可选) ::

其中最重要的字段是

  • CRKS 标志(每个 1 位):它们指示可选字段的存在/不存在;
  • 严格源路由 (s) 标志(1 位):如果设置为 1,当源路由列表('路由' 字段)结束时,如果目标还没有到达,则丢弃数据包(类似于 TTL);
  • 递归 字段(3 位):它指定允许的最大额外封装数量(目前不支持);
  • 版本 字段(3 位):它指定 GRE 协议的版本(在本例中为 0);
  • 协议类型 字段(16 位):它指定封装数据包的协议;
  • 路由 字段:它指定对应于数据包应经过的中间路由器的 IP 地址序列(源路由)。
'路由' 字段又由一些字段组成(除了 IP 地址列表外),包括
  • 地址族 字段:它指定列表中地址的类型(在本例中为 IP);
  • SRE 偏移量 字段:它是指向包含当前下一跳 IP 地址的列表项的指针,在每个源路由跳跃时更新;
  • SRE 长度 字段:它指定列表的长度(以字节为单位)。

增强型 GRE

[编辑 | 编辑源代码]

增强型 GRE 首部的格式引入了新的 '确认号' 字段

5 8 13 16 32
C R K S s 递归 A 标志 版本(1) 协议类型
密钥(有效负载长度) 密钥(呼叫 ID)
序列号(可选)
确认号(可选)

其中最重要的字段是

  • 密钥 字段(32 位)
    • 有效负载长度(16 位):它指定数据包的长度,不包括 GRE 首部(以字节为单位);
    • 呼叫 ID(16 位):它指定数据包的会话 ID;
  • 确认号 字段(32 位):发送方在数据包中放入它从目标接收到的最后一个数据包序列号(累积 ACK)。
新的 '确认号' 字段与 '序列号' 字段结合,允许一些额外的机制
  • 流量控制:滑动窗口避免目标泛滥,并在收到 ACK 数据包时移动;
  • 乱序数据包检测:增强型 GRE 是为 PPP 封装设计的,PPP 是点对点连接的协议,预计数据包不会乱序到达 → 乱序数据包始终被丢弃;
  • 丢失数据包检测:当超时到期时,即没有收到 ACK,则检测到数据包丢失,但检测到的丢失数据包不会重新传输;
  • 拥塞控制:当检测到太多超时时,数据包传输会减慢,以免网络拥塞。
L2TP 的原始参考场景:提供商配置的部署模式。

第 2 层隧道协议 (L2TP) 是一种将任何第 2 层协议(在本讨论中为 PPP)封装到 IP 中的协议。L2TP 最初是为提供商配置的访问 VPN 设计的,并且由 IETF 标准化;后来通过简单地将 LAC 功能实现到用户机器中,它被扩展到客户配置的访问 VPN。

在 L2TP 的原始参考场景中,远程用户想要通过点对点 (PPP) 连接向公司网络内部的内部服务器发送数据包。需要建立一个到目标 L2TP 网络服务器 (LNS) 的 L2TP 隧道以及隧道内的 L2TP 会话,以在服务提供商网络上模拟 PPP 连接。

当 PPP 帧到达 L2TP 访问集中器 (LAC) 时,如果还没有建立到 LNS 的 L2TP 隧道,则在打开 L2TP 会话之前,LAC 必须建立到 LNS 的隧道:LNS 使用类似于挑战握手身份验证协议 (CHAP) 的基于挑战的机制向 LAC 进行身份验证,并创建一个新的控制连接。

每个 L2TP 会话在隧道内使用两个信道

  • 数据通道:用于传输数据报文,即 PPP 帧;
  • 控制通道:用于交换控制报文,用于管理通信(例如验证数据包是否到达、重传丢失的数据包、检查数据包的正确顺序)。
与数据报文不同,控制报文以可靠的方式交换:丢失的控制报文总是会被重传。

多个会话可以在同一个隧道内共存,共享同一个控制连接,以区分来自多个远程用户的多个 PPP 帧流:每个隧道由一个隧道 ID 标识,每个会话由一个会话 ID 标识。

安全性

除了在隧道建立步骤中确保的身份验证之外,L2TP 本身不提供任何安全机制:实际上,对沿着隧道传输的 L2TP 数据包使用加密等机制没有意义,因为服务提供商的 LAC 仍然可以看到第 2 层帧 → 任何安全机制都必须端到端地实现,即在用户和公司网络内部的最终目的地之间。
可以选择通过隧道使用 IPsec:它提供强大的安全性,但实施起来很复杂。

L2TP 隧道内的数据包包含多个封装的报头

MAC 报头 IP 报头 UDP 报头 L2TP 报头 PPP 报头 PPP 负载
PPP 报头

它标识远程用户与公司网络内部服务器之间的点对点连接。

L2TP 报头

它标识 L2TP 隧道

8 16 32
T L 0 S 0 O P 0 版本 (2) 长度
隧道 ID 会话 ID
Ns Nr
偏移量大小 偏移量填充 ::

其中最重要的字段是

  • T 标志 (1 位):如果设置为 0,则数据包为数据报文,如果设置为 1,则为控制报文;
  • 隧道 ID 字段 (16 位):它标识 L2TP 隧道;
  • 会话 ID 字段 (16 位):它标识 L2TP 会话,即隧道中的数据通道;
  • Ns 字段 (16 位):它包含数据/控制报文的序列号;
  • Nr 字段 (16 位):它包含要为可靠的控制连接接收的下一个控制报文的序列号。
UDP 报头

为什么像 UDP 这样的第 4 层协议被用来移动第 2 层帧?这可以通过考虑一般网络上的防火墙来解释:如果数据包不包含第 4 层封装,它更容易被防火墙丢弃。
另一个可能的原因是,第 4 层可以通过套接字访问,而操作系统负责第 3 层。由于 L2TP 希望成为针对 PPTP(由操作系统供应商提出)的解决方案,L2TP 设计人员希望使其对应用程序可访问,而不是紧密地依赖操作系统供应商的意愿。
也可以使用不同的第 4 层协议(例如 ATM、帧中继)。

IP 报头

它包含隧道端点的 IP 地址。
在原始参考场景中,IP 地址对应于 LAC 和 LNS。

PPTP 原始参考场景:客户配置部署模式。

点对点隧道协议 (PPTP) 是一种将 PPP 协议隧道化到 IP 中的协议。PPTP 最初是为客户配置的访问 VPN 而设计的,并且是由主要的运营系统供应商开发的;后来它通过引入具有类似于 LAC 功能的 PPTP 访问集中器 (PAC) 而扩展到提供商配置的访问 VPN。

PPTP 原始参考场景与 L2TP 场景的不同之处在于,PPTP 隧道是在远程用户本身和 PPTP 网络服务器 (PNS) 之间建立的。

与 L2TP 相比,PPTP 提供弱(可选)的安全机制:该标准涵盖了使用特定微软专有的安全协议(例如 MPPE 用于加密和 MS CHAP 用于身份验证),因此没有协议协商。

数据通道

[edit | edit source]

封装的 PPP 帧通过数据通道传输

IP 报头 GRE 报头 PPP 报头 PPP 负载

PPTP 使用增强型 GRE 协议将 PPP 帧封装到 IP 中。PPP 负载可以选择通过 MPPE 进行加密。

控制通道

[edit | edit source]

PPTP 控制报文通过控制通道传输

IP 报头 TCP 报头 PPTP 控制报文

控制报文是隧道数据会话设置、管理和拆除所必需的,它们被发送到 PNS 的知名 TCP 端口 1723。

IPsec

[edit | edit source]

IPv4 中的互联网协议安全 (IPsec) 协议套件的功能与 IPv6 中的功能非常相似: Computer network technologies and services/IPv6#IPsec.

主要区别在于,在 IPv6 中,IPsec 是标准中包含的扩展报头,而在 IPv4 中,它是一个封装到 IP 中的新附加协议(对于 AH,'Protocol' 字段设置为 51,对于 ESP,它设置为 50)

认证报头 (AH)。
IPv4 报头 AH 报头 TCP/UDP 报头 有效负载
经过身份验证的数据


封装安全负载 (ESP)。
IPv4 报头 ESP 报头
(用于加密)
TCP/UDP 报头 有效负载 ESP 报头
加密数据
经过身份验证的数据

安全套接字层 (SSL),现在称为传输层安全 (TLS),是一种旨在为客户端和服务器之间提供通信安全的加密协议

  1. 客户端在端口 443 上与服务器打开一个 TCP 连接,并发送一个用于服务器身份验证的挑战;
  2. 服务器向客户端发送一个 Hello 消息,其中包含其证书和对挑战的响应,这些响应由服务器的私钥加密;
  3. 客户端通过查看由可信证书颁发机构提供的证书列表来验证证书,然后它使用服务器的公钥解密对挑战的响应;
  4. 客户端为安全通信决定一个私钥,并通过使用服务器的公钥加密将其发送给服务器 → 从这一点开始,所有记录消息将使用该私钥加密(该私钥应定期重新协商);
  5. 通常,服务器要求用户在网页上输入其用户名和密码以进行客户端身份验证(在应用程序层)。

访问 VPN

[edit | edit source]

拨号连接场景

[edit | edit source]

基本上,远程用户,通常是公司的员工,想要通过公司网络联系服务器。他可以使用 PPP 建立与公司网关的拨号点对点连接,以封装 IP 数据包

  • 通过链路控制协议 (LCP),他可以协商第 2 层参数(例如身份验证协议);
  • 通过网络控制协议 (NCP),他可以协商第 3 层参数(例如公司网络内的私有 IP 地址、DNS)。

在接受拨号连接之前,公司网关会通过远程身份验证拨号用户服务 (RADIUS) 协议与公司安全服务器联系以检查用户。公司安全服务器是集中式的AAA 服务器

  • 身份验证:识别用户(例如通过用户名和密码);
  • 授权:检查用户可以访问哪些服务以及哪些服务对用户是受限的;
  • 计费:跟踪用户活动(例如计费)。

访问 VPN 可以将远程用户与公司网络之间的拨号连接虚拟化到服务提供商共享的基础设施上,以降低成本。PPP 协议将继续在 VPN 隧道中使用,以避免过多地更改公司网关。

客户配置

[edit | edit source]
作为客户配置部署的访问 VPN。

在客户配置的访问 VPN 中,隧道是在远程用户和公司网关之间建立的

  1. 用户请求建立与服务提供商 NAS 的 PPP 拨号连接,并要求通过 LCP 和 NCP 协商连接的配置参数;
  2. NAS 通过使用 RADIUS 协议通过提供商安全服务器检查用户身份;
  3. NAS 为用户提供 PPP 拨号连接的配置参数,特别是公共 IP 地址;
  4. 用户通过发送包含一个 IP 数据包的 PPP 帧来请求与企业网关建立 VPN 隧道,该数据包的目标 IP 地址是企业网关的公共 IP 地址;
  5. NAS 通过服务提供商网络将请求转发到企业网关;
  6. 企业网关使用 RADIUS 协议通过企业安全服务器检查用户身份;
  7. 企业网关为用户提供 VPN 隧道的配置参数,特别是企业网络内的私有 IP 地址;
  8. NAS 将企业网关的回复转发到远程用户。

VPN 建立后,用户将拥有两个 IP 地址:一个用于服务提供商 NAS 的公共 IP 地址,另一个用于企业网关的企业 IP 地址。用户可以通过隧道发送的 PPP 帧具有以下格式

PPP 报头 IP 报头 PPP 报头 IP 报头 IP 负载
用户的公共 IP 地址 用户的企业 IP 地址
目标 企业网关的公共 IP 地址 目标 最终目标的企业/公共 IP 地址
优点

用户独立于服务提供商:事实上,服务提供商只为用户提供到企业网关的互联网连接。

缺点

用户可能会暂时禁用 VPN 连接并通过互联网连接到外部服务器→如果他感染了恶意软件,当他回到 VPN 时,他将感染企业网络。

提供商供应

[edit | edit source]
访问 VPN 部署为提供商供应。

在提供商供应的访问 VPN 中,隧道是在服务提供商 NAS 和企业网关之间建立的

  1. 用户请求建立到企业网关的 PPP 拨号连接,要求通过 LCP 和 NCP 协商连接的配置参数;
  2. NAS 使用 RADIUS 协议通过提供商安全服务器检查用户身份,特别是识别用户为 VPN 用户;
  3. NAS 请求与企业网关建立与用户相关的 VPN 隧道,通过发送目标 IP 地址为企业网关的公共 IP 地址的 IP 数据包来请求;
  4. 企业网关使用 RADIUS 协议通过企业安全服务器检查用户身份;
  5. 企业网关为 NAS 提供 VPN 隧道的配置参数;
  6. NAS 可选地记录接受和/或流量以向公司收取服务费用;
  7. 企业网关为用户提供 PPP 连接的配置参数(拨号虚拟化),特别是企业网络内的私有 IP 地址;
  8. NAS 将企业网关的回复转发到远程用户。

VPN 建立后,用户只拥有企业 IP 地址,不知道服务提供商 NAS 和企业网关之间的隧道。NAS 可以通过隧道发送的 IP 数据包具有以下格式

IP 报头 PPP 报头 IP 报头 IP 负载
服务提供商 NAS 的公共 IP 地址 用户的企业 IP 地址
目标 企业网关的公共 IP 地址 目标 最终目标的企业/公共 IP 地址
优点

用户无法在不通过企业网关的情况下访问互联网(集中访问)→更高的安全性。

缺点

用户不独立于服务提供商:事实上,如果他更换服务提供商,VPN 连接将不再起作用。

站点到站点 VPN

[edit | edit source]

基于 IPsec 的 VPN

[edit | edit source]

在基于 IPsec 的 VPN 中,IPsec 在 VPN 网关之间以隧道模式使用:两个主机之间的 IP 数据包被封装到一个 IP 数据包中,在两个 VPN 网关之间具有 ESP 标头(以及可选的 AH 标头),因此两个主机的 IP 地址也可以被 ESP 加密。

私有内部网可以由以下保护

  • 防火墙:它根据企业关于例如允许的 IP 地址的策略过滤流量,它可以在与 VPN 网关相关的不同位置放置
    • 在 VPN 网关之前:VPN 网关受到保护,但防火墙无法过滤 VPN 流量,因为它已加密;
    • 在 VPN 网关之后:防火墙可以过滤解密的 VPN 流量,但 VPN 网关不受保护;
    • 与 VPN 网关并行:数据包在 VPN 网关之前和之后都通过防火墙,因此 VPN 网关受到保护,并且过滤了 VPN 流量,但防火墙的工作量更高;
    • 集成到 VPN 网关中:VPN 网关和防火墙的功能都集成到一个设备中→最大限度地提高灵活性;
  • 入侵检测系统 (IDS):它观察流量,试图检测是否正在发生攻击,并且两个 IDS 探测器与 VPN 网关并行放置
    • VPN 网关之前的探测器观察来自隧道的流量并保护免受来自共享基础设施的攻击;
    • VPN 网关之后的探测器观察 VPN 流量并保护免受来自企业网络的攻击(例如,安装在员工 PC 上的恶意软件,如果站点到站点 VPN 是外联网,来自另一家公司的攻击)。

NAT 的存在可能会导致 IPsec 出现问题

  • AH 对整个数据包进行身份验证,因此它也涵盖了 IP 标头→NAT 需要更改 IP 地址,因此身份验证将不再起作用;
  • ESP 对有效负载进行加密,因此位于隧道中的 NAT 将无法看到加密的 IP 地址和 TCP/UDP 端口,以处理不同的 VPN 站点。

基于 MPLS 的 VPN

[edit | edit source]

第 2 层:PWE3

[edit | edit source]
基于 MPLS 的第 2 层站点到站点 VPN 的示例。

伪线仿真端到端 (PWE3) 标准允许在 MPLS 网络上仿真线,以在第 2 层终端(如以太网交换机或电话交换机)之间交换以太网帧。[1]这种类型的连接对以太网帧的恒定延迟有一些要求,就像它们通过物理线缆传输一样。

流量通过 LSP 传输,然后需要能够到达连接到入/出 LSR 的多个接口之一的多个站点

  • 外部标签:它标识两个入/出 LSR 之间的 LSP,并且它后面是多个内部标签之一;
  • 内部标签:它标识公司的 VPN 隧道,并且入/出 LSR 使用它将帧从其接口之一发送到公司的站点。

基于 MPLS 的第 2 层 VPN 不会利用所有 MPLS 的优势,因为流量工程的路由协议与 IP 非常有效→通常手动配置 LSP。

第 3 层:BGP

[edit | edit source]
基于 MPLS/BGP 第 3 层站点到站点 VPN 的示例。

边界网关协议 (BGP) 扩展到内部 BGP外部 BGP 以支持在 MPLS 上部署 VPN,例如对于公司 A 的站点 1

  1. 公司 A 的 CE1 通过内部 BGP向 PE1 通告站点 1 内的目的地,也就是说它告诉 PE1 所有可以在站点 1 内到达的 IP 地址;
  2. PE1 为来自 CE1 的每个 IP 地址分配一个标签,并将映射记录到特定于其指向 CE1 的端口的VPN 路由和转发 (VRF) 表中;
  3. PE1 通过外部 BGP向其他 PE 通告所选标签,通过发送包含每个 IP 地址和一个路由区分符的包,该区分符标识地址族,实际上是公司 A 站点的端口,这在两个不同的企业网络中存在两个相同的私有地址时很有用。
    此步骤需要手动执行:系统管理员必须在 PE1 和 MPLS 网络中的每个其他 PE 之间打开一个对等会话
  4. 其他 PE 可以处理通告消息或忽略它们
    • 连接到公司 A 的某个站点的其他每个 PE(图中为 PE3)将其 VRF 表记录为来自 PE1 的通告信息,即站点 1 中每个 IP 目的地的所选标签,换句话说,与站点 1 的地址族相关的 IP 地址,加上 PE1 的 IP 地址;
    • 没有连接到公司 A 的任何站点的其他每个 PE(图中为 PE2)只忽略来自 PE1 的通告信息;

一旦 IP 目的地在 PE 之间通告,VPN 数据就可以开始沿着 MPLS LSP 发送,例如从公司 A 的 CE3 到公司 A 的 CE1

  1. PE3,即入 LSR,将两个标签压入标签栈
    • 内部标签:PE1 之前通告的标签;
    • 外部标签:由 LSR 通过 MPLS 标签绑定、分发和映射协议为从 PE3 到 PE1 的 LSP 决定的标签;
  2. 中间 LSR 不关心内部标签,但它们只对沿着 LSP 的外部标签进行操作;
  3. PE1 之前的最后一个 LSR 会剥离外部标签(倒数第二个标签弹出),并将数据包发送到 PE1;
  4. PE1,即出 LSR,在 VRF 表中搜索内部标签,并找到要将数据包发送出去的端口,然后剥离内部标签,并将数据包发送到 CE1。
优点

此解决方案非常可扩展

  • 每个中间 LSR 必须处理与 PE 数量一样多的 LSP,而不是与 IP 目的地数量一样多的 LSP;
  • 每个 PE 必须处理与其连接的站点一样多的 VRF 表。
缺点

PE 之间的对等会话需要手动配置。

此解决方案不提供任何加密,因为它是由提供商提供的,并且公司需要信任服务提供商。

第 3 层:虚拟路由器

[edit | edit source]
MPLS/虚拟路由器第 3 层站点到站点 VPN 示例。

在基于 MPLS 的 VPN 中,使用 **虚拟路由器**,每个 PE 为连接到它的每个公司运行一个(虚拟)路由器实例,因此每个实例只需要处理一个公司网络→协议更简单,因为它只需要处理一个 VPN 同时,但可扩展性较低,因为路由器实例需要手动配置。

SSL(伪)VPN

[edit | edit source]

SSL 可用于创建站点到站点 VPN 和访问 VPN,但它主要用于 **SSL(伪)VPN**,以通过基于 TCP/UDP 的隧道授予对服务的安全访问(例如 Web 服务、电子邮件)。SSL(伪)VPN 的主要优势在于,它们很有可能在任何网络场景中工作,在遍历 NAT、防火墙或路由器时没有任何问题,SSL 服务还可以通过 HTTPS 被 Web 浏览器访问。

与替代解决方案的比较

[edit | edit source]

与 IPsec 的比较

[edit | edit source]
优点

SSL 在以下方面比 IPsec 更方便

  • 使用情况:IPsec 有太多需要配置和管理的选项,而 SSL 只需要将应用程序与实现 SSL 的库一起编译;
  • 安全性:它在应用层工作→对 SSL 的攻击只涉及应用程序,而不是整个操作系统;
  • 成熟度:它已经使用了多年,并且经过了许多版本→代码中的错误很少;
  • 与 NAT 穿越的兼容性
    • 没有 IP 头的认证,因为 SSL 位于传输层之上;
    • 不像 IPsec ESP 那样加密端口。
缺点

SSL 在 DoS 攻击中至关重要:数据包始终需要处理到传输层,而在 IPsec 中,它们已经在网络层被丢弃。

与 PPTP 的比较

[edit | edit source]

SSL 克服了一些 PPTP 问题

  • 与非 Microsoft 平台的互操作性差;
  • 一些网络管理员可能会配置他们的路由器来阻止基于 PPTP 的 GRE,因为他们不喜欢源路由功能。

SSL(伪)VPN 版本

[edit | edit source]
Web 代理

Web 服务器不支持 HTTPS→公司网络边缘的“VPN 网关”[2],通过 HTTP 从 Web 服务器下载网页,并通过 HTTPS 将它们发送到公司网络之外的用户。

端口转发

客户端运行支持应用程序协议(如 FTP、SMTP、POP3)的应用程序→安装在客户端的端口转发器将发送到特定端口的应用程序协议数据包转换为 HTTPS 数据包,从另一个端口发送它们,反之亦然。

应用程序翻译

Web 服务器是支持应用程序协议(如 FTP、SMTP、POP3)的应用程序服务器(例如邮件服务器)→“VPN 网关”通过在“VPN 网关”内部实现的端口转发机制将 HTTPS 转换为应用程序协议,反之亦然。

SSL 加密协议

一些应用程序协议可以将 SSL 本地集成到自身中(例如 SMTP-over-SSL、POP-over-SSL)→客户端和 Web 服务器可以直接以安全的方式通信,而无需“VPN 网关”进行翻译。

应用程序代理

客户端使用 SSL 加密协议,但 Web 服务器不支持它→仍然需要“VPN 网关”以及端口转发机制。

网络扩展

客户端和 Web 服务器都不支持 SSL→需要两个“VPN 网关”,一个在用户端,另一个在 Web 服务器端,因此 SSL 隧道是在这两个“VPN 网关”之间创建的。[3]

参考资料

[edit | edit source]
  1. 也可以使用路由器作为终端,但这几乎没有意义。
  2. 这是一个松散的 VPN 网关定义:实际上,将它定义为代理更准确。
  3. 这不是 SSL(伪)VPN。
Previous page
迁移到IPv6
计算机网络技术与服务 Next page
VoIP
VPN
华夏公益教科书