您可以通过无数种方式构建虚拟专用网络。最低限度的VPN实现方案由连接Internet的RAS PPTP服务器、连接Internet的客户端以及位于上述服务器与客户端之间的PPTP连接所组成。只要ISP服务或Internet连接处于可用状态,客户端即可从世界上的任意一个角落与您的服务器建立连接。然而,大多数VPN并非仅仅由相互连接的服务器与客户端构成。通常情况下,VPN服务器位于一个可以实现路由的LAN网段上,并处在防火墙后方;客户端连接则使用一个同样包含路由器与防火墙的ISP网络。图1显示了一种常见的移动客户端VPN实现方案。
您只需通过几个简单步骤即可以独立服务器或域控制器的方式创建一台PPTP服务器。您需要安装RAS和PPTP协议,并按照配置拨号连接的方式来配置PPTP端口。Windows NT客户端安装过程同样相当直接:您只需装载PPTP并配置通过Internet与PPTP服务器相连的PPTP连接。由于安装方式如此简单,您自然会认为VPN连接将一次调试通过。然而,实际情况却是,VPN连接在某些情况下仍旧需要进行调节。
VPN故障诊断与WAN连通性故障诊断非常相似,由于数据在到达目的地之前需要在许多连接上进行传送,因此,整个处理过程相当复杂。举例来说,通常情况下,数据需要通过防火墙、ISP网络甚至其它ISP网络从客户端传送至ISP路由器,再由ISP路由器依次传送至企业路由器、防火墙或代理服务器,并最终到达目标PPTP服务器。
当客户端与某个ISP建立连接时(这种连接使用VPN连接中的点对点协议--PPP--部分),ISP将为客户端分配一个TCP/IP地址、一个DNS服务器地址以及一个缺省网关。当客户端发起一个PPTP连接时,这项操作将创建第二个TCP/IP会话(这个会话是VPN连接的隧道部分),并将其嵌入到用以提供数据包加密与封装功能的第一个会话内部。当客户端连接成功后,VPN服务器将为客户端分配第二个IP地址、第二个DNS服务器地址、可选WINS服务器以及另一个缺省网关。图2显示了组成PPTP会话的两部分内容--PPP连接和PPTP连接。在连接中的每一条链接上,均有可能出现故障。了解常见配置与连通性问题并掌握必要的故障诊断操作步骤将帮助您对VPN连接进行解译与调试。
VPN服务器建议
如果可能的话,请从一台装有最低限度服务且仅含TCP/IP与PPTP协议的NT服务器开始。NT 4.0 Service Packs 5(SP5)与SP6a修正了大量有关PPTP连接的问题,其中包括与碎片数据包、被丢弃的连接以及被拒绝的连接相关的性能问题。如果在尝试对客户端连接进行调试之前首先利用服务软件包对服务器进行更新,那么,您将能够节省大量时间。为帮助您保持简单直接的服务器配置,以便实现故障诊断目的,我将为您提供四条建议。
配置一台多宿主服务器:如果您的PPTP服务器配备了两块网卡,一块针对LAN,一块针对WAN,那么,请将LAN适配器上的网关设置为空(请注意,这里要求设置为空而非设置为0)。在WAN网络接口的网关字段中输入ISP所定义的TCP/IP地址;网关地址通常指向ISP所属的一台路由器。您需要保持LAN网关设置为空,以便使服务器能够将网络数据包路由至客户端。当您为服务器配置多个网络适配器时,保持LAN网关设置为空是一种标准实现方式。如需获取更多有关如何为多宿主服务器配置路由方式的信息,请查看“原先发布的相关文章”中的第XX页。在测试过程中,我建议您手工输入LAN NIC的TCP/IP地址与WINS服务器地址(而不要通过DHCP为其分配这些取值)。
配置RAS:当您安装RAS时,请仅为那些真正需要提供支持的活动客户端连接配置必要数量的VPN端口。尽管每台RAS服务器能够支持256条并行连接(假设您拥有足够支持所有这些活动的网络带宽),然而,在实际应用过程中,您可能只需要为您的漫游用户提供40条并行连接。接下来,将服务器配置为通过静态地址池而非DHCP服务器来分配客户端地址。如果您将RAS配置为从静态地址池中分配客户端地址,那么,客户端将从RAS服务器继承DNS与WINS设置。如果您的RAS服务器能够浏览网络,那么,客户端同样可以利用相同的设置来浏览网络。
如果您倾向于使用DHCP,请确保DHCP范围选项44(WINS/NetBIOS名称服务器)指向WINS服务器且范围选项6显示您的DNS服务器地址。如果未能定义这些选项,那么,您将几乎肯定会在客户端浏览过程中遇到问题。
启用PPTP过滤功能:由于可以避免测试与调试链中的某个连接被防火墙删除,因此,同对处在防火墙内部的服务器进行测试相比,对处于防火墙外部的VPN服务器进行配置与测试要容易得多。如果在具备高度安全性的环境中运行服务器,您便可以放心的将服务器置于防火墙外部并将允许进入的唯一VPN通信内容限制为PPTP数据包。如屏幕快照1所显示的那样,如需从控制面板中启用PPTP过滤功能,请依次选择“网络”、“协议”、“TCP/IP协议”、“WAN适配器”、“高级”,并选中“启用PPTP过滤功能”复选框。当您启用PPTP过滤器后,服务器拒绝所有非PPTP请求。我曾经对这项特性进行过专门测试,事实证明,这是一种能够对进入VPN连接会话加以限制的有效方式。PPTP过滤功能具有一个重要的副作用:当您启用过滤功能后,由于其阻挡了进入的HTTP与FTP通信内容,LAN客户端将无法通过RAS服务器的WAN连接对Internet进行浏览。
如果希望VPN服务器将允许进入的数据包限制为PPTP数据包并托管一个可以通过Internet进行访问的Web站点,那么,您需要对注册表进行修改以便允许其它数据包通过过滤接口进入本地系统。前往HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services RASPPTPF Parameters注册表键,添加名为AllowPacketsForLocalMachine且数据类型为REG_DWORD的记录项,并将其取值设置为1。当完成此项修改后,RAS服务器将暴露在Internet上,然而进入VPN服务器的连接将受到限制,这样一来,远程客户端将无法看到网络上的任何其它资源。
使用防火墙端口:在将VPN服务器置于防火墙后方之前,请首先确认您的防火墙软件能够接收PPTP数据包。当您通过网络地址转换(NAT)对防火墙进行配置时,防火墙软件包(包括某些支持检查点软件技术的FireWall-1版本)在某些情况下可能无法接受PPTP连接。这种情况下,尝试与RAS服务器建立连接的客户端将报出一条事件编号为721的错误消息--PPP远端未能响应。当您将VPN服务器置于防火墙后方时,请确保启用编号为47的IP协议端口(通用路由封装--GRE)和以及编号为1723的TCP端口。VPN连接使用1723端口完成诸如PPTP隧道创建、维护与终止之类的日常管理工作。47端口则用于在客户端与服务器(包含GRE协议)之间传送隧道数据,如果您希望支持RAS服务器对服务器VPN连接,则同样需要建立编号为1723的TCP端口。
在尝试与VPN客户端建立连接之前,请首先对通信双方NIC上的服务器TCP/IP设置进行验证,并确保您的RAS服务器能够执行所有典型网络操作(例如浏览LAN、连接LAN资源、连接Internet或浏览Internet等)。此后,请针对您的测试帐号启用拨号权限。另外,您可能还需要在最初测试过程中启用PPP日志功能。
客户端故障诊断
为确保操作成功,PPTP客户端必须正确维护两套TCP/IP协议栈设置:其中一套面向于ISP与Internet连接,另一套面向于VPN服务器连接,具体情况如图2所示。客户端路由表同样必须包含两条记录:其中一条负责将网络数据包定向至提供Internet浏览服务的ISP,另一条指向用于实现LAN浏览的VPN服务器接口。当协议栈设置不正确时,客户端将会遇到严重问题。通常情况下,NT客户端维护独立的TCP/IP协议栈设置,然而,当同时配备网卡和调制解调器时,Windows 95客户端则会经常出现协议栈设置问题。在建立PPTP连接后,Windows 9x缺省网关可能仍旧指向ISP,从而使客户端无法成功浏览LAN。下面,让我们来看一看五种最为常见的客户端连接问题。
客户端无法连接PPTP服务器:您可能遇到的第一种问题是客户端无法连接到PPTP服务器。此时,您需要对以下三种可能导致这种问题的因素进行查看。
建立VPN服务器Internet连通性。在完成客户端配置工作后,您需要验证VPN服务器具备一条Internet连接。验证这种连接的最简单方式是从设置服务器TCP/IP地址的客户端上对服务器执行ping操作。(如果您的PPTP服务器位于防火墙后方且防火墙被设置为阻止Internet控制消息协议--ICMP--ping消息,那么,这种验证方式将无法使用。)如果ping指令显示消息请求超时,则说明服务器Internet连接可能存在某种问题。如果服务器通过地址进行相应,您可以在DUN记录的电话号码字段中输入TCP/IP地址以便建立PPTP会话。尽管与通过全面验证的域名(FQDN)相比有些不够友好,这项技术在您知道服务器地址的情况下仍旧非常有效。
需要注意的是,使用拨号连接的服务器很有可能在每次与ISP建立连接时获得不同的地址。如需通过地址进行连接,您必须了解服务器每次建立拨号连接时由ISP所分配的地址。通常情况下,您的RAS服务器将使用一个永久地址,从而消除了连接过程中的一项细微可变因素。
如果服务器通过地址进行响应,请继续使用名称对其执行ping操作。如果服务器无法通过名称进行响应,原因可能有两种:服务器可能不具备注册域名,或者您的ISP DNS服务器可能处于停机状态或无法正常工作。
查看PPTP过滤功能。当服务器上的PPTP过滤功能处于启用状态时,您可能会看到消息“错误678:无法应答”或“错误650:远程访问服务器无法响应”。此时,请在服务器上禁用PPTP过滤功能(Net Stop RASPPTPF),并查看是否可以建立非过滤连接。
如果能够在过滤功能处于禁用状态的情况下建立连接,请检查服务器的过滤器设置。如果您禁用了编号为137和138的UPD端口或者编号为139的TCP端口,NetBIOS数据包将无法通过网络。对于单播(点对点)通信过程,您同样需要在客户端与服务器之间的所有防火墙与路由器上 。