本文对实现VPN(Virtual Private Network)技术的几种协议做了简单介绍,对微软VPN技术作了基本介绍,比较详细地介绍了PPTP(Point-to-Point Tunneling Protocol)协议、微软VPN连接分类及PPTP安全性,同时阐述了VPN路由过程。


Internet上应用VPN技术建立本企业内的专用网络互联已变得越来越广泛。*** 具体实现是采用隧道技术,将企业网的数据封装在隧道中进行传输。隧道协议可分为第二层隧道协议:点对点隧道协议PPTP(Point-to-Point Tunneling Protocol)、第二层转发协议L2F(Layer 2 Forwarding)、第二层隧道协议L2TP(Layer 2 Tunneling Protocol)和第三层隧道协议:通用路由封装GRE(Generic Routing Encapsulation)、IPSec(IP Security )。它们的本质区别在于用户的数据包是被封装在哪种数据包中在隧道中传输的。在我们的实际应用中,我们使用了IPSec 和PPTP在Internet来建立VPN应用,IPSec通过cisco路由器来实现,PPTP通过Windows NT Server 4.0来实现。本文仅简单介绍使用PPTP来实现VPN的技术。

一、 PPTP简介

微软WINDOWS NT SERVER 4.0中的VPN技术是通过PPTP协议来实现的,而PPTP是在RAS(Remote Access Service)中实现的,在我们实际应用中,我们安装使用的是RAS的升级版RRAS(Routing and Remote Access Service),该软件可从微软站点下载。PPTP提供PPTP客户机和PPTP服务器之间的加密通信。PPTP客户机是指运行了该协议的PC机,如启动该协议的Windows95/98;PPTP服务器是指运行该协议的服务器,如启动该协议的WindowsNT服务器。PPTP可看作是PPP协议的一种扩展。它提供了一种在Internet上建立多协议的安全虚拟专用网(***)的通信方式。通过PPTP,客户可采用拨号方式接入公共IP网络Internet。拨号客户首先按常规方式拨号到ISP的接入服务器(NAS),建立PPP连接;在此基础上,客户进行二次拨号建立到PPTP服务器的连接,该连接称为PPTP隧道,实质上是基于IP协议上的另一个PPP连接,其中的IP包可以封装多种协议数据,包括TCP/IP、IPX和NetBEUI。PPTP采用了基于RSA公司RC4的数据加密方法,保证了虚拟连接通道的安全性。对于直接连到Internet上的客户则不需要第一重PPP的拨号连接,可以直接与PPTP服务器建立虚拟通道。PPTP把建立隧道的主动权交给了用户,但用户需要在其PC机上配置PPTP。另外PPTP只支持IP作为传输协议。图1说明了NT 4.0网络体系结构中隧道数据的封装过程(包含PPP拨号):

1. 首先,有IP等数据包需通过代表***连接的虚拟接口(virtual interface)发出。

2. NDIS 将数据包提交给NDISWAN,NDISWAN加密或压缩数据,同时形成PPP报头。

3. NDISWAN将数据提交给PPTP协议驱动程序(driver),由其将PPP帧加上GRE报头。

4. PPTP驱动程序将结果包提交给TCP/IP协议驱动程序。

5. TCP/IP协议驱动程序将PPTP隧道数据加IP报头,并将其交给代表拨号到ISP的接口。

6. NDIS将数据包提交给NDISWAN,NDISWAN提供PPP包头和包尾。

7. NDISWAN将最后的PPP帧提交给代表拨号的硬件设备(如:接上MODEM的异步口)发出。

1:PPTP包封装过程示意图

二、 VPN系统组成及系统结构

微软VPN系统主要由VPN服务器、VPN客户、隧道(Tunnel)、VPN连接、传输网络组成。

VPN服务器是接受VPN客户请求VPN连接的主机。VPN服务器可提供远程访问VPN连接(Remote Access ***)和路由器到路由器VPN连接(Router-to-Router ***)。VPN服务器上需两块网卡,一块连接内部网,一块连接Internet。安装的软件是Windows NT Server 4.0 和RRAS。

VPN客户是发起VPN连接到VPN服务器的机器。WIN95/98,Windows NT 4.0可以建立远程访问VPN连接,Windows NT Server 4.0 +RRAS可以建立路由器到路由器VPN连接。

隧道是通信连接的一部分,数据在隧道中被封装。

VPN连接是通信连接的一部分,在VPN连接中,数据被加密传输。

传输网络一般都采用Internet。当然也可以用其他IP作传输网络。

下面图2、图3分别为远程访问VPN连接和路由器到路由器VPN连接两种连接方式的结构示意图。

图2、远程访问VPN连接系统结构示意图

图3、路由器到路由器VPN连接系统结构示意图

三、 VPN连接分类

基于PPTP的VPN连接分为两类,远程访问VPN连接(Remote Access ***)和路由器到路由器VPN连接(Router-to-Router ***)。两种类型的连接都是通过用户名和密码来验证身份的。远程访问VPN连接模式是单个远端客户机通过PPTP隧道与中心的局域网通信,所以,远程访问VPN只是远程单机到网络的连接,远端可以是先拨号连接到Internet,然后再连接到PPTP服务器,当然,直接连接到Internet的远端单机更可以作为远程访问VPN客户,该应用模式中,典型的PPTP客户是WIN95/98,WINDOWS NT WORKSTATION。路由器到路由器VPN连接模式是通过PPTP隧道将两个局域网互联,此时,两端都必须安装成PPTP服务器,并且此两PPTP服务器都充当路由器角色,要形成路由器到路由器VPN连接,中心端必须专线接入Internet,分支端可以专线也可以拨号接入Internet。远程访问VPN连接的服务器端配置比较简单,路由器到路由器VPN连接配置步骤(假设分支端为拨号入Internet)如下:

中心端路由器(PPTP服务器)配置:

1. 为与分支连接的VPN连接创建一PPTP拨号接口(demand dial interface),该接口的接口名必须与分支端相应VPN连接接口的用户名设置中设置的用户名相同。

2. 添加一条或多条到分支网的路由项,该路由项使用上面所创建的PPTP拨号接口。该路由不能由"route add" 命令添加(该命令添加不了),需由RRAS软件提供的管理程序添加。

分支端路由器(PPTP服务器,拨号接入Internet)配置:

1. 创建一连接到ISP的普通PPP拨号接口(demand dial interface)。

2. 创建一到中心端的VPN连接――PPTP拨号接口(demand dial interface),在该接口的远程路由器的IP设置框中填写中心端路由器(PPTP服务器)的互联网IP地址,用户名设置框中设置的用户名必须与中心端路由器中创建的相应PPTP拨号接口名相同。

3. 用RRAS软件提供的管理程序添加一条到中心端路由器互联网IP地址的路由项,该路由项使用上面所创建的到ISP的PPP拨号接口。

4. 用RRAS软件提供的管理程序添加一条或多条到中心端网络的路由项,该路由项使用上面所创建的PPTP拨号接口。

路由器到路由器VPN连接自动创建过程如下:

1. 分支端络上有需要发送到中心网络上的数据包被转发到分支路由器上。

2. 分支端路由器检查路由表,发现有一条到中心网的路由,该路由使用相应的VPN拨号接口。

3. 分支端路由器检查该VPN拨号接口的连接状态,发现其处于断开状态。

4. 分支端路由器找到该VPN拨号接口的配置。

5. 根据该VPN拨号接口的配置,分支端路由器在internet上尝试建立与中心端路由器的VPN连接。

6. 为建立基于PPTP的VPN连接,分支端路由器必须发送一TCP包到充当PPTP服务器的中心端路由器上,因此,分支端路由器创建VPN连接建立包。

7. 为将该VPN连接建立包发送到中心端路由器上,分支端路由器查找其路由表,发现到中心端路由器使用PPP拨号接口。

8. 分支端路由器检查该PPP拨号接口的连接状态,发现其处于断开状态。

9. 分支端路由器找到该PPP拨号接口的配置。

10. 根据该PPP拨号接口的配置,分支端路由器建立与ISP的连接。

11. 与ISP的连接一建立,VPN连接建立包即发送到中心端路由器。

12. 分支端路由器向中心端路由器发送用户名等身份信息进行身份验证,协商建立VPN连接。

13. 中心端路由器检查其所设置的VPN拨号接口,发现与分支端路由器发送的用户名相同的接口,则将该VPN连接置为已连接状态。

14. 分支端路由器通过已建立的VPN隧道转发数据包到中心端路由器,中心端路由器再将数据包转发给相应网络上的主机。

15. 中心端主机将应答包转发到中心端路由器上。

16. 中心端路由器检查其路由表,发现到分支网的路由项是通过PPTP拨号接口。

17. 中心端路由器检查该PPTP拨号接口的状态,发现其为已连接状态。

18. 该应答包通过该VPN连接转发到分支端路由器。

19. 分支端路由器将该应答包转发到源数据包的发送者。

四、 VPN路由

要理解好VPN的工作过程,必须先清楚地掌握IP路由的概念。在我们的VPN实际应用中,由于牵涉到Internet上的公用地址和本单位的私用地址,因此,路由的设置比较复杂,设置时要非常小心。

对于远程访问VPN连接,WIN95/98客户先是拨号到ISP,拨通后,在拨号到PPTP服务器,建立PPTP VPN 连接。WIN95/98客户拨号到ISP,拨通后,WIN95/98从ISP的NAS处获得一Internet地址,同时拨号网络添加一条出口为ISP的缺省路由,并修改原来存在的缺省路由(如果原来已有缺省路由的话),将其“Metric"值该为更大值,使得本机此时只使用ISP为缺省网关,这样就可访问Internet(断开该连接后,则会删除其添加的缺省路由,并恢复其修改过的缺省路由)。此后,WIN95/98客户可与PPTP服务器建立VPN连接,一旦VPN连接建立,WIN95/98客户同样从PPTP服务器上获得一内部IP地址,此时,拨号网络要添加两条路由,一条为到PPTP服务器的Internet公用IP地址的路由,另一条为出口为PPTP服务器的缺省路由,并修改此前的缺省路由(包括拨号到ISP时添加的缺省路由),将其”Metric"改为更大值。所以,在VPN连接建立前,WIN95/98客户可访问Internet,但不能访问内部网,而VPN连接建立后,WIN95/98客户又只能通过VPN访问内部网和PPTP服务器的Internet IP地址,而不能访问Internet上的其他所有主机,二者不可兼得。如想要同时能访问,必须先手工删除指向VPN服务器的缺省路由(或在VPN的拨号连接配置中设置不要使用远程网的缺省网关,则拨号后不会产生新的缺省网关),保留指向ISP的缺省路由,并手工添加到内部网的静态路由。

对于路由器到路由器VPN连接,无论是建立永久连接还是有数据通信时才自动建立连接,RRAS都不会添加缺省路由,需要手工用RRAS提供的管理程序在两端路由器上分别添加到对方网络的静态路由。

五、 VPN安全性

通过不安全的Internet来访问内部网,需要提供安全保障。微软VPN提供认证、加密、授权等多种安全机制,可以比较有效地保证网络的安全可靠。微软VPN主要提供用户级的身份认证,即通过用户名和密码来提供认证,认证协议采用MS-CHAP(Microsoft Handshake Authentication Protocol)。数据包的加密采用MPPE(Microsoft Point-to-Point Encrypytion)协议, MPPE使用基于RSA公司RC4的数据加密算法。此外还可以设置PPTP包过滤功能。

六、 结束语

本文介绍的是微软在Windows NT Server 4.0 中实现的基于PPTP的VPN技术应用,该方法无论是在性能还是在安全性方面都不是很好,需要更高性能和安全性的话需要采用IPSec协议,实际应用中,我们采用cisco路由器来实现IPSec。微软在Windows 2000中已开始支持IPSec协议。