对于构建 VPN 来说,网络隧道(Tunnelling)技术是个关键技术。网络隧道技术指的是利用一种网络协议来传输另一种网络协议,它主要利用网络隧道协议来实现这种功能。网络隧道技术涉及了三种网络协议,即网络隧道协议、隧道协议下面的承载协议和隧道协议所承载的被承载协议。
现有两种类型的网络隧道协议,一种是二层隧道协议,用于传输二层网络协议,它主要应用于构建远程访问虚拟专网(Access VPN);另一种是三层隧道协议,用于传输三层网络协议,它主要应用于构建企业内部虚拟专网(Intranet VPN)和扩展的企业内部虚拟专网(Extranet VPN)。
二层隧道协议
二层隧道协议主要有三种。一种是微软、Ascend、3COM 等公司支持的 PPTP(Point to Point Tunneling Protocol,点对点隧道协议),在 Windows NT 4.0以上版本中即有支持。另一种是 Cisco、北方电信等公司支持的 L2F(Layer 2 Forwarding,二层转发协议),在 Cisco 路由器中有支持。而由 IETF 起草,微软 Ascend 、Cisco、 3COM 等公司参与的 L2TP(Layer 2 Tunneling Protocol,二层隧道协议)结合了上述两个协议的优点,将很快地成为 IETF 有关二层隧道协议的工业标准。 L2TP 作为更优更新的标准,已经得到了如:Cisco Systems,Microsoft,Ascend,3Com 等的支持,以后还必将为更多的网络厂商所支持,将是使用最广泛的 VPN 协议。
下面将简单介绍一下 L2TP 网络协议。应用 L2TP 所构建的典型 VPN 服务的结构 其中,LAC 表示 L2TP 访问集中器(L2TP Access Concentrator ),是附属在交换网络上的具有 PPP 端系统和 L2TP 协议处理能力的设备,LAC 一般就是一个网络接入服务器 NAS(Network Access Server)它用于为用户通过 PSTN/ISDN 提供网络接入服务;LNS 表示 L2TP 网络服务器(L2TP Network Server),是 PPP 端系统上用于处理 L2TP 协议服务器端部分的软件。
在一个 LNS 和 LAC 对之间存在着两种类型的连接,一种是隧道(tunnel)连接,它定义了一个 LNS 和 LAC 对;另一种是会话(session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个 PPP 会话过程。 L2TP 连接的维护以及 PPP 数据的传送都是通过 L2TP 消息的交换来完成的,这些消息再通过 UDP 的 1701 端口承载于 TCP/IP 之上。L2TP 消息可以分为两种类型,一种是控制消息,另一种是数据消息。控制消息用于隧道连接和会话连接的建立与维护。数据消息用于承载用户的 PPP 会话数据包。
L2TP 连接的维护以及 PPP 数据的传送都是通过 L2TP 消息的交换来完成的,这些消息再通过UDP的1701端口承载于 TCP/IP 之上。 控制消息中的参数用 AVP 值对(Attribute Value Pair)来表示,使得协议具有很好的扩展性;在控制消息的传输过程中还应用了消息丢失重传和定时检测通道连通性等机制来保证了 L2TP 层传输的可靠性。数据消息用于承载用户的 PPP 会话数据包。L2TP 数据消息的传输不采用重传机制,所以它无法保证传输的可靠性,但这一点可以通过上层协议如 TCP 等得到保证;数据消息的传输可以根据应用的需要灵活地采用流控或不流控机制,甚至可以在传输过程中动态地使用消息序列号从而动态地激活消息顺序检测和流量控制功能;在采用流量控制的过程中,对于失序消息的处理采用了缓存重排序的方法来提高数据传输的有效性。
L2TP 还具有适用于VPN 服务的以下几个特性:
灵活的身份验证机制以及高度的安全性 L2TP 可以选择多种身份验证机制(CHAP、PAP 等),继承了 PPP 的所有安全特性,L2TP 还可以对隧道端点进行验证,这使得通过 L2TP 所传输的数据更加难以被攻击。而且根据特定的网络安全要求还可以方便地在 L2TP 之上采用隧道加密、端对端数据加密或应用层数据加密等方案来提高数据的安全性。
内部地址分配支持 LNS可以放置于企业网的防火墙之后,它可以对于远端用户的地址进行动态的分配和管理,可以支持 DHCP 和私有地址应用(RFC1918)等方案。远端用户所分配的地址不是Internet地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。
网络计费的灵活性
可以在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业处(用于付费及审记)。L2TP 能够提供数据传输的出入包数,字节数及连接的起始、结束时间等计费数据,可以根据这些数据方便地进行网络计费。
可靠性
L2TP 协议可以支持备份 LNS,当一个主 LNS 不可达之后,LAC(接入服务器)可以重新与备份 LNS 建立连接,这样增加了 VPN 服务的可靠性和容错性。 统一的网络管理 L2TP 协议将很快地成为标准的 RFC 协议,有关 L2TP 的标准 MIB 也将很快地得到制定,这样可以统一地采用 SNMP 网络管理方案进行方便的网络维护与管理。
三层隧道协议
用于传输三层网络协议的隧道协议叫三层隧道协议。三层隧道协议并非是一种很新的技术,早已出现的 RFC 1701 Generic Routing Encapsulation(GRE)协议就是个三层隧道协议。新出来的 IETF 的 IP 层加密标准协议 IPSec 协议也是个三层隧道协议。
IPSec 协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,它包括网络安全协议 Authentication Header(AH)协议和 Encapsulating Security Payload(ESP)协议、密钥管理协议Internet Key Exchange (IKE)协议和用于网络验证及加密的一些算法等。IPSec 规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供了访问控制、数据源验证、数据加密等网络安全服务。
GRE
GRE 与 IP in IP、IPX over IP 等封装形式很相似,但比他们更通用。很多协议的细微差异都被忽略,这就导致了它不是建议用在某个特定的“X over Y”进行封装,所以是一种最基本的封装形式。
在最简单的情况下,系统接受到一个需要封装和路由的数据报,我们称之为有效报文(Payload)。这个有效报文首先被 GRE 封装然后被称之为 GRE 报文,这个报文接着被封装在 IP 协议中,然后完全由 IP 层负责此报文的向前传输(Forwarded)。我们也称这个负责向前传输的IP 协议为传递(Delivery)协议或传输(Transport)协议。整个被封装的报文具有图2 所示形式: Delivery Header(transpor Protocol) GRE Header(Encapsulation Protocol) Payload Packet(Passenger Protocol) 图2 通过 GRE 传输报文形式 GRE 的作用如下: 多协议的本地网通过单一协议的骨干网传输的服务 将一些不能连续的子网连接起来;这一点用于组建 VPN 扩大了网络的工作范围,包括那些路由网关有限的协议;如 IPX 包最多可以转发16次(既经过16个路由器),而在一个 Tunnel 连接中看上去只经过一个路由器 IPSec IPSec,IP 安全协议,是一组开放协议的总称,在特定的通信方之间提供数据的私有性、完整性保护,并能对数据源进行验证。IPSec 使用 IKE 进行协议及算法的协商,并采用由 IKE 生成的密码来加密和验证。IPSec 用来保证数据包在 Internet 网上传输时的私有性、完整性和真实性。IPSec 在 IP 层提供这些安全服务,对 IP 及所承载的数据提供保护。这些服务是通过两个安全协议 AH 和 ESP,通过加密等过程实现的。这些机制的实现不会对用户、主机或其它 Internet 组件造成影响;用户可以选择不同的加密算法,而不会对实现的其它部分造成影响。
IPSec 提供以下几种网络安全服务:
私有性 - IPsec 在传输数据包之前将其加密,以保证数据的私有性
完整性 - IPsec 在目的地要验证数据包,以保证该数据包在传输过程中没有被替换
真实性 - IPsec 端要验证所有受 IPsec 保护的数据包
反重复 - IPsec 防止了数据包被扑捉并重新投放到网上,即目的地会拒绝老的或重复的数据包;它通过与 AH 或 ESP 一起工作的序列号实现 IPSec 协议本身定义了如何在 IP 数据包中增加字段来保证 IP 包的完整性、私有性和真实性,这些协议还规定了如何加密数据包。使用 IPsec,数据就可以在公网上传输,而不必担心数据被监视、修改或伪造了。IPsec 提供了两个主机之间、两个安全网关之间或主机和安全网关主机的保护。
IPSec 定义了两个新的数据包头增加到 IP 包,这些数据包头用于保证 IP 数据包的安全性。这两个数据包头由AH(Authentication Header)和 ESP(Encapsulating Security Payload)规定。在网关上实现 IPSec,AH 将插到标准IP包头后面,它保证数据包的完整性和真实性,防止黑客截断数据包或向网络中插入伪造的数据包。AH 采用了安全哈希算法来对数据包进行保护。AH 没有对用户数据进行加密。ESP 将需要保护的用户数据进行加密后再封装到IP包中,ESP 可以保证数据的完整性、真实性和私有性。
IPSec 有隧道和传送两种工作方式。在隧道方式中,用户的整个 IP数据包被用来计算 ESP 头,且被加密,ESP 头和加密用户数据被封装在一个新的 IP 数据包中;在传送方式中,只是传输层(如TCP、UDP、ICMP)数据被用来计算 ESP 头,ESP 头和被加密的传输层数据被放置在原IP包头后面。当 IPSec 通信的一端为安全网关时,必须采用隧道方式。
Internet 密钥交换协议(IKE)用于在两个通信实体协商和建立安全相关,交换密钥。安全相关(Security Association)是 IPSec 中的一个重要概念。一个安全相关表示两个或多个通信实体之间经过了身份认证,且这些通信实体都能支持相同的加密算法,成功地交换了会话密钥,可以开始利用 IPSec 进行安全通信。IPSec 协议本身没有提供在通信实体间建立安全相关的方法,利用 IKE 建立安全相关。IKE 定义了通信实体间进行身份认证、协商加密算法以及生成共享的会话密钥的方法