内容纲要

在 IPSec 和 Multiprotocol Label Switching (MPLS) VPN 出现前,GRE 被用来提供 Internet 上的 VPN 功能。GRE 将用户数据包封装到携带数据包中,因为支持多种协议,多播,点到点或点到多点协议,如今,GRE 仍然被使用。

在 GRE 隧道中,路由器会在封装数据包的 IP 头部指定要携带的协议,并建立到对端路由器的虚拟点对点连接

Passenger: 要封装的乘客协议 (IPX, AppleTalk, IP, IPSec, DVMRP, etc.).

Carrier: 封装 passenger protocol 的 GRE 协议,插入到 transport 和 passenger 包头之间, 在 GRE 包头中定义了传输的协议

Transport: IP 协议携带了封装的 passenger protocol. 这个传输协议通常实施在点对点的 GRE 连接中 (GRE 是无连接的).

GRE 的特点:
GRE 是一个标准协议
支持多种协议和多播
能够用来创建弹性的 VPN
支持多点隧道
能够实施 QOS

GRE 的缺点:
缺乏加密机制
没有标准的控制协议来保持 GRE 隧道 (通常使用协议和 keepalive)
隧道很消耗 CPU
出现问题要进行 DEBUG 很困难
MTU 和 IP 分片是一个问题

GRE 隧道
GRE 建立的是简单的 (不进行加密)VPN 隧道,他通过在物理链路中使用 ip 地址和路由穿越普通网络。

大部分协议都没有内建加密机制,所以携带他们穿越网络的很常见的方法就是使用加密 (如使用 IPSec) 的 GRE 隧道,这样可以为这些协议提供安全性。(相关配置请参看 GRE over IPSec)网状连接(Full-Mesh)

由于 GRE 是建立点对点的隧道,如果要多个端点的网状互联,则必须采用这种 Hub-and-spoke 的拓扑形式

但是可以通过使用 NHRP(Next-Hop Resolution Protocol) 来自动建立全网状拓扑。(相关配置请参看 NHRP 配置全网状互联 GRE 隧道)


VPDN 简介

VPDN(Virtual Private Dial Network,虚拟私有拨号网)是指利用公共网络 (如 ISDN 和 PSTN) 的拨号功能及接入网来实现虚拟专用网,从而为企业、小型 ISP、移动办公人员提供接入服务。

VPDN 采用专用的网络加密通信协议,在公共网络上为企业建立安全的虚拟专网。企业驻外机构和出差人员可从远程经由公共网络,通过虚拟加密隧道实现和企业总部之间的网络连接,而公共网络上其它用户则无法穿过虚拟隧道访问企业网内部的资源。

VPDN 有下列两种实现方式:

网络接入服务器 (NAS) 通过隧道协议,与 VPDN 网关建立通道的方式。这种方式将客户的 PPP 连接直接连到企业的网关上,目前可使用的协议有 L2F 与 L2TP。其好处在于:对用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和地址分配,而不占用公共地址,用户可使用各种平台上网。这种方式需要 NAS 支持 VPDN 协议,需要认证系统支持 VPDN 属性,网关一般使用路由器或 VPN 专用服务器。

客户机与 VPDN 网关建立隧道的方式。这种方式由客户机先建立与 Internet 的连接,再通过专用的客户软件 (如 Win2000 支持的 L2TP 客户端) 与网关建立通道连接。其好处在于:用户上网的方式和地点没有限 制,不需 ISP 介入。缺点是:用户需要安装专用的软件(一般都是 Win2000 平台),限制了用户使用的平台。

VPDN 隧道协议可分为 PPTP、L2F 和 L2TP 三种 Point to Point Tunneling Protocol(PPTP)

点对点隧道协议 (PPTP) 是一种支持多协议虚拟专用网络的网络技术, 它工作在第二层。通过该协议,远程用户能够通过 Microsoft Windows NT 工作站、Windows 9x 操作系统以及其它装有点对点协议的系统安全访问公司网络,并能拨号连入本地 ISP,通过 Internet 安全链接到公司网络。

PPTP 协议假定在 PPTP 客户机和 PPTP 服务器之间有连通并且可用的 IP 网络。因此如果 PPTP 客户机本身已经是 IP 网络的组成部分,那么即可通过该 IP 网络与 PPTP 服务器取得连接; 而如果 PPTP 客户机尚未连入网络,譬如在 Internet 拨号用户的情形下,PPTP 客户机必须首先拨打 NAS 以建 立 IP 连接。这里所说的 PPTP 客户机也就是使用 PPTP 协议的 VPN 客户机,而 PPTP 服务器亦即使用 PPTP 协议的 VPN 服务器。

PPTP Access Concentrator (PAC): 接入服务商,允许拨号接入连接 (通常是由 ISP 担任,而且不需要 ISP 的协助来建立隧道)

PPTP Network Server (PNS):通常是 PPTP 服务器或者路由器用来建立 PPTP 隧道

Microsoft Point-to-Point Encryption (MPPE) :和 IPSec 一样,是一种数据加密协议,用来为 PPP 拨号连接传输的数据进行加密。MPPE 使用 RSA 算法来进行加密,支持 40-bit 和 128-bit 的会话密钥

PPTP 只能通过 PAC 和 PNS 来实施,其它系统没有必要知道 PPTP。拨号网络可与 PAC 相连接而无需知道 PPTP。标准的 PPP 客户机软件可继续在隧道 PPP 链接上操作。

PPTP VPN 协商过程:

客户端 (笔记本) 通过 PPP 建立到 ISP NAS 的连接

客户端建立到 PNS(在这里是 CISCO 路由器) 的 PPTP 连接

客户端和 PNS 之间建立了一个 2 层的隧道。多种协议能够在这个隧道上传输

使用 MPPE 加密 PPP 数据包,这些数据包接下来通过 enhanced GRE 封装,并在 IP 网络上传输

在客户端和 PPTP 服务器之间建立第二个 PPP over GRE 会话

数据能够在这个 IP/GRE/PPP 上传输

PPTP 隧道使用不同的 TCP 连接来控制会话

PPTP 使用 GRE 的扩展版本来传输用户 PPP 包。这些增强允许为在 PAC 和 PNS 之间传输用户数据的隧道提供低层拥塞控制和流控制。这种机制允许高效使用隧道可用带宽并且避免了不必要的重发和缓冲区溢出。PPTP 没有规定特定的算法用于低层控制,但它确实定义了一些通信参数来支持这样的算法工作。

PPTP 缺点:
不支持 QOS

每个用户一个隧道

认证和加密比较脆弱

Layer 2 Tunneling Protocol (L2TP)

L2TP 协议提供了对 PPP 链路层数据包的通道 (Tunnel) 传输支持,允许二层链路端点和 PPP 会话点驻留在不同设备上并且采用包交换网络技术进行信息交互,从而扩展了 PPP 模型。L2TP 协议结合了 L2F 协议和 PPTP 协议的各自优点,成为 IETF 有关二层隧道协议的工业标准。

L2TP Access Concentrator (LAC) :表示 L2TP 访问集中器,类似于 PPTP 中的 PAC,是附属在交换网络上的具有 PPP 端系统和 L2TP 协议处理能力的设备。LAC 一般是一个网络接入服 务器 NAS,主要用于通过 PSTN/ISDN 网络为用户提供接入服务。

L2TP Network Server (LNS) :表示 L2TP 网络服务器,也叫做 “home gateway”,类似于 PPTP 中的 PNS,是 PPP 端系统上用于处理 L2TP 协议服务器端部分的设备。

L2TP 隧道建立过程:

用户使用 PPP 拨号到 ISP,并获得一个 IP 地址。客户端和 ISP 之间建立邻接,客户端能够接入到 Internet。这个步骤是用来作为普通的 Internet 连接

客户端决定建立一个端到端的 L2TP 隧道到 home gateway,并在下面建立一个新的 PPP 会话之前前会使用控制会话建立一个隧道

在 L2TP 隧道里建立一个新的 PPP 隧道,并分配给客户端一个 IP 地址。客户端和 home gateway 之间会使用 virtual point-to-point,通过 PPP 封装进 L2TP 隧道,建立一个新的 IP 邻接关系。

建立 IPSec 保护的 L2TP VPN:

客户端使用 PPP 拨入 ISP,ISP 分配 IP 地址给客户端

客户端使用 L2TP 通过一个 VPN 端口连接到 home gateway,home gateway 使用 AAA 服务器对隧道进行认证,并分配一个隧道内部 IP 地址给客户端,在客户端和 gateway 之间建立 IPSec,来提供 L2TP 会话的加密。

VPDN 拨号用户与总部路由服务器建立连接的过程如下:

拨号用户拨打一个初始化呼叫有 VPDN 访问接入服务器 (NAS)

NAS 接收此呼叫,并将启动一个到总部路由服务器 (Home Gateway) 的 L2TP Tunnel 协商:Home Gateway 利用总部的 Radius 服务器来鉴定 NAS 的 Tunnel ID,认证通过以后,向 NAS 发起 CHAP Challenge 信号; NAS 对来自 Home Gateway 的 Tunnel 进行认证,认证通过之后,就建立了 NAS 和 Home Gateway 之间的 Tunnel 连接。此时,Home Gateway 就可以利用其 Radius 服务器对 VPDN 用户进行用户级的认证,如果认证通过将建立 Home Gateway 和用户间的端到端的 PPP 连接。如果在 NAS 和 Home Gateway 之间建立了 Tunnel 连接之后,又有另一 VPDN 用户拨打同一 NAS,此时将不会重复上述建立 Tunnel 的过程,而是直接进行用户级的 认证。

从拨号用户发出的帧被 NAS 接收到以后,被封装在 L2TP 中,通过 IP 隧道被转发到总部路由服务器。这样,用户就可以对总部的信息进行访问,实现信息共享。

两种典型的 L2TP 隧道模式

由远程拨号用户发起:

远程系统拨入 LAC,由 LAC 通过 Internet 向 LNS 发起建立通道连接请求。拨号用户地址由 LNS 分配; 对远程拨号用户的验证与计费既可由 LAC 侧的代理完成,也可在 LNS 侧完成。

直接由 LAC 客户 (指可在本地支持 L2TP 协议的用户) 发起:

此时 LAC 客户可直接向 LNS 发起通道连接请求,无需再经过一个单独的 LAC 设备。此时,LAC 客户地址的分配由 LNS 来完成。

L2TP 的优势

灵活的身份验证机制以及高度的安全性:

L2TP 协议本身并不提供连接的安全性,但它可依赖于 PPP 提供的认证 (比如 CHAP、PAP 等),因此具有 PPP 所具有的所有安全特性。L2TP 也可与 IPSec 结合起来实现数据安全,这使得通过 L2TP 所传输的数据更难被攻击。L2TP 还可根据特定的网络安全要求在 L2TP 之上采用通道加密技术、端对端数据加密或应用层数据加密等方案来提高数据的安全性。

多协议传输:

L2TP 传输 PPP 数据包,这样就可以在 PPP 数据包内封装多种协议。

支持 RADIUS 服务器的验证:

LAC 端将用户名和密码发往 RADIUS 服务器进行验证申请,RADIUS 服务器负责接收用户的验证请求,完成验证。

支持内部地址分配:

LNS 可放置于企业网的防火墙之后,它可以对远端用户的地址进行动态的分配和管理,可支持私有地址应用 (RFC1918)。为远端用户所分配的地址不是 Internet 地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。

网络计费的灵活性:

可在 LAC 和 LNS 两处同时计费,即 ISP 处 (用于产生帐单) 及企业网关(用于付费及审计)。L2TP 能够提供数据传输的出入包数、字节数以及连接的起始、结束时间等计费数据,可根据这些数据方便地进行网络计费。

可靠性:

L2TP 协议支持备份 LNS,当一个主 LNS 不可达之后,LAC 可以重新与备份 LNS 建立连接,这样增加了 VPN 服务的可靠性和容错性。

该协议是一种工业标准的 Internet 隧道协议,功能大致和 PPTP 协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如 PPTP 要求网络为 IP 网络,L2TP 要求面向数据包的点对点连接; PPTP 使用单一隧道,L2TP 使用多隧道; L2TP 提供包头压缩、隧道验证,而 PPTP 不支持。

L2TP 协议是由 IETF 起草,微软、Ascend、Cisco、3COM 等公司参予制定的二层隧道协议,它结合了 PPTP 和 L2F 两种二层隧道协议的优点,为众多公司所接受,已经成为 IETF 有关 2 层通道协议的工业标准,基于微软的点对点隧道协议 (PPTP) 和思科 2 层转发协议 (L2F) 之上的,被一个因特网服务提供商和公司使用使这个虚拟私有网络的操作能够通过因特网。

 

了解 VPN 数据包结构

PPTP 数据包结构
下图显示了通过隧道时 PPTP 数据包的结构。首先,通过将加密的 PPP 数据与 PPP 标头封装在一起来创建 PPP 帧。然后,将 PPP 帧与 GRE 标头封装在一起。再后,将生成的有效负载与 IP 标头封装在一起,IP 标头中包含源 IP 地址和目标 IP 地址的信息。最后,该 IP 数据文报与数据链路层标头和尾端封装在一起。视所使用技术的不同,数据链路层标头和尾端也有所不同。例如,当通过以太网发送 IP 数据文报时,它与以太网标头和尾端一起封装,当通过模拟电话线路发送时,它与 PPP 标头和尾端一起封装,等等。当数据包到达目的地时,各标头以相反的顺序剥离。首先,数据链路层标头和尾端被除去,然后 IP、GRE 和 PPP 标头被依次剥离。最后,PPP 数据被解密。

PPTP 数据包结构

 

L2TP 数据包结构
L2TP 的数据包结构与 PPTP 有些类似,也有一些标头添加到 PPP 数据中。图 6 显示了 L2TP 数据包的结构。请注意,UDP 标头和 IPSec 尾端间的所有数据均被加密。

L2TP 数据包结构

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注