打印本文 打印本文  关闭窗口 关闭窗口  
有关VPN连接的15项故障诊断提示
作者:陈鹏  文章来源:eNet  点击数  更新时间:2009/9/11 23:20:53  文章录入:陈鹏  责任编辑:陈鹏

您可以通过无数种方式构建虚拟专用网络。最低限度的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数据包将无法通过网络。对于单播(点对点)通信过程,您同样需要在客户端与服务器之间的所有防火墙与路由器上启用这些端口。
  
  过滤GRE协议。如果服务器能够通过地址和名称进行响应但您仍旧无法建立连接,那么,您所使用的ISP路由器、内部路由器或防火墙可能过滤掉了GRE数据包。为建立一条PPTP隧道,客户端与服务器之间需要交换GRE数据包,然而,由于需要在内部利用GRE来管理路由器,某些ISP会禁用外部GRE数据包。尽管GRE过滤功能并不常用,但他的确能够阻止PPTP连接,因此,请确保您在VPN连接两端均启用了编号为47的IP协议端口(GRE)以及编号为1723的TCP端口。您可以利用Microsoft网络监视器或其它类似的网络探测工具来确定GRE过滤功能是否被启用。如需获取更多关于如何在VPN连接期间对PPTP数据包进行监控的信息,请查看“原先发布的相关文章”中的第XX页。

  客户端能够连接但无法登录:您可能遇到的第二种问题是已经建立连接的客户端无法进行登录。此时,您需要对以下三种可能导致这种问题的因素进行查看。
  
  配置域和服务器帐号。您可以将RAS服务器配置为域控制器或独立系统。如果您将服务器配置为域控制器,请确保用户的域帐号具备拨入权限。如果服务器并非域控制器,缺省情况下,RAS将通过本地SAM对客户端授权凭证进行验证。用户可以通过两种方式在独立服务器上实现身份验证:利用RAS服务器上的本地帐号或利用强制服务器通过域SAM对证书进行验证的注册表项。无论采用何种方式,您所提供的帐号都必须具备拨入权限。

  配置计算机帐号。如果客户端为NT工作站或服务器,相应计算机必须在域中拥有一个帐号。如果客户端是一套新的系统,则请在对连接进行测试之前首先在服务器管理器中创建一个新的计算机帐号。如果客户端系统已经在网络上拥有一个帐号,但已有一个或多个星期未曾进行连接,那么,计算机帐号口令可能不再与服务器保持同步。每个计算机帐号都有一个由PDC自动重置的隐藏口令,如果系统长期处于脱机状态,PDC与客户端上的帐号口令将不再相同。通常情况下,您可通过删除并重新添加这个帐号的方式解决这种问题。

  协商客户端身份验证方式。RAS服务器可以通过三种不同身份验证协议对PPTP用户进行身份验证。按照由低到高的安全性顺序,这三种协议分别是通过明文方式实现的口令身份验证协议(PAP)、通过加密与Hash算法实现的质询式握手身份验证协议(CHAP)以及通过加密和带有校验和的双重Hash算法实现的Microsoft质询式握手身份验证协议(MSCHAP)。客户端与服务器通过协商方式确定的登录身份验证协议取决于您在配置服务器进入端口与客户端PPTP连接网络设置时所选择的加密设置。服务器与客户端上拥有以下可用选项:
  
  允许使用任意一种包含明文的身份验证方式。服务器将通过客户端所请求的协议(例如PAP、CHAP或MSCHAP)来完成身份验证。

  需要加密的身份验证方式,服务器将通过MSCHAP、数据加密标准(DES)或Shiva PAP(SPAP)来完成身份验证。
  需要Microsoft加密的身份验证方式。服务器只能通过MSCHAP实现身份验证。

  从SP3开始,Microsoft引入了一种更为安全的MSCHAP版本,称为MSCHAP V2。您可以通过在服务器和Windows客户端上创建一条注册表项的方式来强制客户端仅仅使用MSCHAP V2执行身份验证。然而,当您执行此项修改操作时,那些不具备MSCHAP V2(一种专用Microsoft协议)支持能力的客户端将无法成功登录。因此,这种更改方式将使UNIX和Macintosh系统无法登录到您的VPN服务器上。
  
  如需获取有关登录失败情况的故障诊断信息,请在用户管理器中启用登录审计功能并再次尝试建立连接。当您查看NT事件查看器安全日志中所存储的记录时,您将能够获得相关障碍的清晰描述信息。您可以看到用户名称是否合法,口令是否错误或者已经过期,计算机是否缺少一个合法帐号以及是否不存在可用VPN端口。
  
  当用户能够成功登录后,应用程序事件日志将记录登录的日期与时间。此外,您还将能够在事件日志中找到另一个用以记录用户注销时间和会话持续时间的事件。
  
  客户端能够登录但无法浏览LAN:您还可能会遇到客户端能够登录但无法浏览LAN的情况。如需对这种问题进行故障诊断,请确保已在所有Windows 9x客户端上将工作组设置为目标NT域的名称。接下来,如果客户端数量超过15或20个节点,也有可能造成客户端无法浏览,这是因为通过低速拨号连接对大型网络进行浏览是一项极为困难的任务。在PPTP会话建立后预先定义或手工将统一命名规范(UNC)连接映射到所需共享内容与资源是一项对于用户来说非常友好的操作。最后,您还需要理解四种TCP/IP设置如何对您的网络连接产生影响。(如需获取更多关于TCP/IP设置的信息,请查看工具条“重要客户端TCP/IP设置”。)当您需要为那些通过永久高速连接在家中进行工作的用户提供支持时,远程LAN浏览将是一种可行方案。在对这些组件进行检查并审核TCP/IP设置后,您便可以利用以下项目对浏览问题实施故障诊断。

  工具条1:重要客户端TCP/IP设置
  
  面向VPN会话的TCP/IP设置将采用与面向LAN连接的TCP/IP设置相同的方式运行。如需对某种VPN实施方案进行故障诊断,您应当首先理解四种TCP/IP设置如何对网络连接与浏览方式产生影响:
  
  DNS服务器:这种服务器能够将通过全面验证的域名(FQDN,如www.win200mag.com)转换为相应的TCP/IP地址(如207.54.25.03)。当您拥有一台能够正常工作的DNS服务器时,您的计算机将可以通过名称方式来查询并连接其它计算机。当您不具备DNS服务器(或者DNS服务器无法正常工作)时,您将无法通过名称方式与计算机建立连接。此时,您只能借助目标计算机TCP/IP地址与其建立连接。
  
  WINS服务器:这种服务器能够将NetBIOS名称转换为相应的TCP/IP地址。在Windows NT 4.0网络中,每台计算机都将通过WINS服务器或本地浏览器(如果无可用WINS服务器)注册一个NetBIOS名称。同时,每台计算机还将为其所发布的每个文件与打印共享注册一个NetBIOS名称。如果您的客户端已经分配了一台WINS服务器,且假设您拥有所需的安全证书,那么,您将可以查看并连接网络上的共享打印机。如果您的客户端尚未分配WINS服务器,那么,您将无法浏览网络邻居,但如果您能够手工输入统一命名规范(UNC)名称并且您的安全证书允许对共享资源进行访问,那么,您将可以同文件与打印共享资源建立连接。
  
  DHCP服务器:这种服务器至少能够在启动时为LAN客户端分配TCP/IP地址并在连接时为RAS客户端分配TCP/IP地址。如需将DHCP服务器配置为指派其它TCP/IP协议栈设置内容,您可以定义针对域名、缺省网关、DNS服务器以及WINS服务器等信息的范围选项。
  
  缺省网关:这种网关将在数据传输目标为本地子网以外系统时通知计算机将数据发送至一台特定计算机或路由器。网关路由显示在Print Route命令输出结果中的表格首行内。
  
  检查浏览方式。当您对网络甚至特定服务器进行浏览时,您经常会收到内容为“发生53号系统错误”的消息。此时,网络路径将无法找到。无法进行浏览的情况通常意味着客户端无法解析NetBIOS名称。请确保已经为客户端指定了一台静态(在PPTP连接的网络设置中)或动态(针对所有客户端使用Ipconfig命令或针对Windows 9x客户端使用Winipcfg命令)WINS服务器。如果客户端不具备WINS服务器地址,请手工输入地址,重新建立连接并再次尝试进行浏览。

  设置缺省网关。寻找针对PPTP连接的缺省网关设置或打印路由表(使用Route Print命令)。如果网关仍旧指向ISP,那么,所有浏览LAN的客户端请求都将前往ISP而非VPN连接,ISP可能会阻塞NetBIOS名称广播所使用的端口。需要注意的是,除非在编号为137和138的UDP端口以及编号为139的TCP端口上启用单播通信方式,否则,路由器与防火墙将禁止传送NetBIOS名称。NetBIOS名称为Microsoft专用,某些ISP可能不允许此类数据从他们的基础架构上流过。

  您可以通过手工方式从路由表中删除路由记录并添加针对VPN服务器虚拟接口的静态路由记录。服务器虚拟接口是指分配给VPN接口的地址。这种地址要么是静态地址池中的第一个地址,要么是RAS服务器配置中的第一个可用DHCP地址。
  
  启用NetBEUI。如果您并非坚持要使用TCP/IP协议,那么,您一般情况下总是能够通过在RAS服务器和远程客户端上安装NetBEUI的方式来解决客户端浏览问题。为此,您只需在服务器的VPN端口上针对进入系统的连接启用NetBEUI,并在客户端PPTP连接中选择NetBEUI复选框。此后,您便可以在TCP/IP上利用NetBEUI将客户端与服务器建立连接。尽管如此,我们仍然无法回避基于NetBIOS的NT名称空间固有限制。尽管从技术角度考虑容易遭受攻击,然而,这种NetBEUI方案可能是获取全面LAN浏览能力的最简单方式。

  如果在您尝试上述这些技术后客户端仍旧无法进行浏览,那么,请尝试通过客户端与某种网络共享资源建立连接。举例来说,您可以使用net use z: \myservermyshare命令。在处于故障诊断模式中时,通过手工方式与共享资源建立连接通常是一种允许用户访问文件及打印机的良好工作机制。
  
  如果仍旧无法进行浏览,您接下来需要审核VPN服务器配置。许多服务器上所出现的问题都会对客户端浏览产生影响,但由于篇幅所限,本文无法详细为您列出所有潜在问题与解决方案。通过在Microsoft知识库页面http://support.microsoft.com/search/default.as上搜索有关PPTP客户端浏览与多宿主浏览的信息,您将能够发现许多非常有用的链接。这种搜索将返回有关多宿主服务器与网络浏览问题(例如各个NIC上的浏览器无法交换浏览列表)、PPTP连接以及WINS服务器位置等内容的文章列表。
  
  已经建立连接的客户端无法浏览Internet:我曾经多次在同时安装网卡和调制解调器的Windows 95客户端上遇到过这种问题。当出现这种问题时,尽管VPN会话处于活动状态,但客户端却无法浏览Internet。导致这种问题的常见原因有两种。首先,当远程客户端具备网络连接时,VPN服务器可能不允许远程客户端访问Internet。这种情况下,当您关闭VPN连接后,由于缺省网关恢复为ISP所定义的网关,因此,客户端将能够浏览Internet。其次,当客户端处于连接状态时,Windows 95可能会使用VPN服务器所定义的网关来覆盖ISP网关,从而切断客户端访问Internet的路径。为解决这种问题,您可以通过手工方式面向ISP缺省网关添加代价为2(即首先尝试VPN网关,其次尝试ISP网关)的静态路由记录。
  
  已经建立连接的客户端无法显示在网络邻居中:与我共事过的一名网络工程师曾经遇到过客户端(即便使用全功能VPN客户端连接)无法显示在LAN端网络邻居中的问题。您仅仅利用TCP/IP协议来配置客户端PPTP连接,同时通过VPN服务器建立连接并实现身份验证,此后,客户端便可以浏览所有LAN资源。当远程客户端展开网络邻居时,网络邻居将显示自身系统以及浏览列表中的所有其它客户端,但远程客户端却始终无法显示在LAN上的网络邻居中。如果希望远程客户端出现在LAN浏览列表中,您需要在RAS服务器与RAS客户端上安装NetBEUI。这种RAS所特有的一种奇怪问题,但目前这种问题尚无法得到有效解决。
  
  最终准备就绪
  
  我向您介绍了大多数常见的VPN配置与连接问题。现在,您已经掌握了许多故障诊断技巧。这些技术十分行之有效且极为流行,当管理员在Windows 2000(Win2K)中利用标准隧道协议与IP安全性(IPSec)时,这些技术将被广泛采用。需要注意的是,在学习这些技术的过程中,您应当做到由浅入深且一步一个脚印。此后,您便可以高枕无忧了。
  
  关于本文作者

  Paula Sharick是Windows 2000杂志资深编辑与在线专栏作家,同时,他还是Windows NT网络设计、实施方案与交互能力方面的一名技术咨询顾问。如欲同他取得联系,敬请致信:paula@win2000mag.com。



【责任编辑 王蕊】

打印本文 打印本文  关闭窗口 关闭窗口