虚拟专用网络(×××)
2008-03-07 20:36
虚拟专用网络(×××)连接基础
远程访问是指通过透明的方式将位于本地网络以外(远程网络)位置上的特定计算机连接到本地网络中的一系列相关技术。当启用远程访问时,远程客户可以通过远程访问技术像直接连接到本地网络一样来使用本地网络中的资源。在Windows服务器操作系统中均包含了远程访问服务,它是作为路由和远程访问服务中的一个组件,远程访问服务支持远程访问客户端使用拨号网络连接和虚拟专用网络连接这两种方式的远程访问:
  • 拨号网络连接远程访问方式:通过拨号远程访问方式,远程访问客户端可以利用电信基础设施(通常情况下为模拟电话线路)来创建通向远程访问服务器的临时物理电路或虚拟电路。一旦这种物理电路或虚拟电路被创建,其余连接参数将通过协商方式加以确定。
  • 虚拟专用网络(×××)连接远程访问方式:通过虚拟专用网络远程访问方式,×××客户端可以通过IP网络(例如Internet)与充当×××服务器的远程访问服务器建立虚拟点对点连接。一旦这种虚拟点对点连接被创建,其余连接参数将通过协商方式加以确定。
由于IP网络的流行,拨号网络连接远程访问方式已经基本不再使用。在此我仅对虚拟专用网络(×××)连接远程访问方式进行阐述。对于一个完整的×××远程访问连接,它由以下元素组成:
远程访问×××客户端
×××客户端既可以是独立的计算机,也可以是建立站点到站点×××连接的×××服务器。而根据×××客户端类型的不同,×××分为以下两种连接类型:
  • 远程访问×××:由一台独立的计算机作为×××客户端向×××服务器发起×××连接,从而此×××客户端计算机可以访问×××服务器所连接的内部网络中的资源。Windows XP、Windows 2000、Windows NT 4.0、Windows ME和Windows 98 ×××客户端均可与Windows的×××服务器或运行其它大多数×××服务器的远程访问服务器建立×××连接。这种类型的×××又称为客户端到服务器×××。
  • 站点到站点×××:在连接到不同内部网络的两台×××服务器之间进行×××连接,当×××连接成功建立后,它们所连接的内部网络中均可以相互进行访问,就像直接通过物理链路连接到一起。×××服务器会将通过×××连接的数据进行加密和封装,但是本地子网中的客户和×××服务器之间的通讯并不会进行加密。Windows的×××服务器均可以和其他×××服务器创建站点到站点的×××连接。这种类型的×××又称为网关×××或路由器到路由器×××。
远程访问×××服务器
基于Windows服务器操作系统的远程访问服务器能够接受基于PPTP或L2TP/IPSec的远程访问×××连接,或者基于PPTP、L2TP/IPSec或IPSec隧道模式的站点到站点×××连接。
×××承载链路
远程访问×××客户端必须能够通过IP网络访问到远程访问×××服务器,如果×××服务器位于某个内部网络而×××客户端位于Internet之上,那么必须在×××服务器连接到Internet的网关上为×××服务器做端口映射。
×××协议
Windows远程访问服务器与客户端支持两种远程访问×××协议:
  • 端到端隧道协议(PPTP)
  • 第二层隧道协议(L2TP)
而对于站点到站点×××连接,除了使用上述协议外,你还可以使用IPSec隧道模式。
 
端到端隧道协议(PPTP)
端到端隧道协议(PPTP)是微软基于PPP协议开发的隧道协议,在RFC 2637中进行定义,在Windows系统中广泛使用。PPTP首先在Windows NT 4.0中提供支持,并且随TCP/IP协议一起自动进行安装。PPTP是对端到端协议(PPP)的一种扩展,它采用了PPP所提供的身份验证、压缩与加密机制,并且通过Microsoft端到端加密(MPPE)技术来对数据包进行加密、封装和隧道传输。
PPTP具有以下特性:
  • PPTP帧通过通用路由封装(Generic Routing Encapsulation,GRE,协议ID 47)报头和IP报头(TCP 1723)进行封装,在IP报头中提供了与×××客户端和×××服务器相对应的源IP地址和目标IP地址;
  • 使用Microsoft端到端加密(MPPE)技术来对多种协议的数据包进行加密、封装和在IP网络上进行隧道传输;
  • PPTP隧道连接协商身份验证、压缩与加密;
  • PPTP支持×××客户端IP地址的动态分配;
  • MPPE使用RSA/RC4算法和40位、56位或128位的密钥进行加密;
  • MPPE将通过由MS-CHAP、MS-CHAP v2或EAP-TLS身份验证过程所生成的加密密钥对PPP帧进行加密,因此为对PPP帧中所包含的有效数据进行加密,虚拟专用网络客户端必须使用MS-CHAP、MS-CHAP v2或EAP-TLS身份验证协议;PPTP将利用底层PPP加密功能并直接对原先经过加密的PPP帧进行封装;
  • 初始加密密钥在用户身份验证时产生并且定期刷新;
  • 在PPTP数据包中,只有数据负载才进行了加密。
如果使用PPTP协议的×××客户端部署在NAT网关之后,那么要求NAT网关具有理解PPTP协议的NAT编辑器,否则×××客户将不能创建×××连接。目前的绝大部分NAT网关中都具有PPTP NAT编辑器,均可以很好的支持PPTP协议。
 
第二层隧道协议(L2TP)
第二层隧道协议(L2TP)是微软PPTP隧道协议和CISCO第二层转发协议(L2F)的结合体,在RFC 2661中进行定义(最新的版本是L2TPv3,在RFC 3931中定义)。与PPTP利用MPPE进行数据包加密不同,L2TP依靠Internet协议安全性(IPSec)技术提供加密服务。L2TP与IPSec的结合产物称为L2TP/IPSec,×××客户端与×××服务器都必须支持L2TP和IPSec才能使用L2TP/IPSec。L2TP将随同路由与远程访问服务一起自动进行安装。
在IPSec数据包基础上所进行的L2TP封装由两个层次组成:
  • L2TP封装: PPP帧(IP或IPX数据包)将通过L2TP报头和UDP报头进行封装。
  • IPSec封装: 上述封装后所得到的L2TP报文将通过IPSec封装安全性有效载荷(ESP)报头、用以提供消息完整性与身份验证的IPSec身份验证报尾以及IP报头再次进行封装。IP报头中将提供与×××客户端和×××服务器相对应的源IP地址和目标IP地址。IPSec加密机制将通过由IPSec身份验证过程所生成的加密密钥对L2TP报文进行加密。
L2TP具有以下特性:
  • L2TP隧道数据可以在任何支持点对点传输的网络中进行传输,例如IP、帧中继、ATM网络等等;
  • L2TP使用UDP协议来进行隧道管理;
  • L2TP基于UDP协议发送封装的PPP数据包;
  • 负载数据可以被加密和压缩;
  • 使用IPSec封装安全性有效载荷(ESP)进行加密,IPSec ESP在RFC 3193中进行定义;
  • 虽然L2TP/IPSec提供了用户验证机制,但是同样要求计算机进行验证。计算机验证是相互的,每一端的计算机都必须向对方进行验证;
  • 对于计算机验证,要求计算机证书。×××客户端和×××服务器(远程访问×××)、或两端的×××服务器(站点到站点×××)都必须具有有效的证书。你可以配置使用预共享的L2TP密钥,这样就无需计算机证书,但是由于所有×××客户都必须配置相同的预共享密钥,这样带来的后果是极大的降低了L2TP的安全性。
  • 每一端都必须能够验证另一端提供的证书是否有效,如果计算机证书是由不同的证书权威颁发,那么会出现问题。
和PPTP协议不一样,如果基于L2TP/IPSec协议的×××客户端部署在NAT网关之后,只有×××服务器和×××客户端支持IPSec NAT穿越(NAT-T)时,×××客户端才能和×××服务器成功创建×××连接。NAT-T在RFC 3947中进行定义,它描述了IPSec协议如何穿越NAT服务器。和L2TP/IPSec使用UDP端口500、1701不同,NAT-T使用UDP 4500端口。Windows Server 2003、Microsoft L2TP/IPSec ×××客户端软件和L2TP/IPSec NAT-T更新后的Windows XP和Windows 2000支持NAT-T。
但是,微软不推荐在NAT网关后的Windows server 2003上使用IPSec NAT-T,并且修改了Windows XP SP2中的IPSec通讯行为,使其默认情况下不再支持NAT网关后的IPSec NAT-T。详情请参见KB885348,IPSec NAT-T is not recommended for Windows Server 2003 computers that are behind network address translatorsKB885407,The default behavior of IPsec NAT traversal (NAT-T) is changed in Windows XP Service Pack 2
 
 
IPSec隧道模式
对于站点到站点×××连接,除了上述的PPTP和L2TP/IPSec外,你还可以使用IPSec隧道模式。IPSec隧道模式单独使用IPSec来创建一个加密的隧道,通常用于和不支持L2TP/IPSec或PPTP协议的非Windows ×××服务器之间创建加密通讯。和L2TP、PPTP不同,IPSec隧道模式不需要验证用户账户,它具有以下特性:
  • IP数据包通过IPSec进行加密,并在IP网络上进行隧道传输;
  • IPSec隧道模式只能用于站点到站点的×××类型;
  • IPSec隧道模式需要额外的IPSec安全策略配置;
 
 
选择远程访问×××协议
PPTP和L2TP/IPSec的区别主要有:
  • PPTP使用MPPE进行加密,L2TP/IPSec和IPSec隧道模式使用IPSec ESP进行加密。
  • PPTP加密在PPP身份验证通过后处理连接时开始,因此,身份验证过程没有被MPPE加密。L2TP/IPSec会先进行安全协商再进行身份验证,并对PPP身份验证数据包进行加密,因此L2TP/IPSec比PPTP提供了更高的安全性。
  • PPTP使用MMPE和RC4,而L2TP/IPSec使用DES或3DES;
  • PPTP和L2TP/IPSec均要求用户使用基于PPP的身份验证协议进行身份验证;
  • L2TP/IPSec还要求使用计算机证书进行计算机验证。因此,L2TP/IPSec提供了更强壮的身份验证过程。但是,带来的不便之处是L2TP/IPSec需要公共密钥基础服务(PKI)或预共享的连接密钥,而PPTP则无需PKI。
  • IPSec ESP要求基于数据包的数据源验证和数据完整性验证,另外,IPSec ESP提供了中继保护,这防止了数据包的重现攻击;而PPTP没有提供这些保护。
  • IPSec ESP和PPTP(通过使用MPPE)提供了基于每个数据包的加密。
  • 你可以将基于PPTP的×××服务器部署在NAT网关后,但是不建议将基于L2TP/IPSec、IPSec的×××服务器部署在NAT网关后。
  • L2TP/IPSec比PPTP更耗费CPU性能。
在选择×××协议时,你应考虑以下几点:
  • 是否存在公共密钥基础服务(PKI),如果不存在则选择PPTP;强烈建议不要在商用网络中通过预共享的连接密钥来使用L2TP,这样会极大的降低L2TP的安全性;
  • 如果要求最高的安全级别,选择L2TP/IPSec;
  • 只有在特别需要时才使用IPSec隧道模式;
  • 如果企业安全策略要求DES或3DES,则使用L2TP/IPSec;
  • 如果使用IPSec导致CPU负荷过重,使用PPTP;
  • 如果×××服务器部署在NAT网关后,选择PPTP;
  • 部署PPTP比部署IPSec更为简单。
  • 对于×××客户的身份验证、访问授权和记账,你可以选择两种不同的方式:Windows或RADIUS。你可以为这三种功能选择一种方式,也可以选择一种方式用于身份验证和授权,而另一种用于记账。
    当使用Windows验证时,如果×××服务器是独立服务器,则使用本地账户(SAM)来验证×××客户;如果×××服务器是域成员服务器,则使用活动目录数据库来验证×××客户。如果使用RADIUS进行身份验证,那么就算×××服务器是独立服务器,也可以通过RADIUS使用活动目录数据库来进行验证。在Windows服务器中同样提供了RADIUS服务器组件,不过被称为Internet验证服务器(IAS),关于Internet验证服务器更详细的信息,请参见Internet验证服务使用指南一文。
    PPTP和L2TP/IPSec均要求用户进行身份验证,并且对于L2TP/IPSec,你必须配置用户身份验证和计算机身份验证。Windows ×××服务器支持的身份验证方式有:
    • 可扩展身份验证协议(EAP)
    • Microsoft质询式握手身份验证协议(MS-CHAP)
    • MS-CHAP第2版(MS-CHAP v2)
    • 质询式握手身份验证协议(CHAP)
    • Shiva式口令身份验证协议(SPAP)
    • 可扩展身份验证协议(EAP,包含EAP-MD5、EAP-TLS、EAP/MS-CHAPv2等等)
    它们之间的详细区别请参考Windows的帮助,常用的身份验证方式是MS-CHAP、MS-CHAP v2和EAP-TLS。
    当×××客户通过身份验证时,×××服务器将通过拨入×××的用户账户的拨入属性来决定是否允许它的远程访问,如下图所示:
虚拟专用网络(×××)_网络
  • 其中:
    允许访问:显式允许×××客户的远程访问;
    拒绝访问:显式拒绝×××客户的远程访问;
    通过远程访问策略控制访问:根据×××服务器配置的授权方式的不同(Windows还是RADIUS),通过自己的远程访问策略(Windows方式)或RADIUS服务器的远程访问策略(RADIUS方式)来决定是否允许×××客户的访问。远程访问策略是定义是否授权×××客户远程访问的一系列规则集合,×××服务器按照从上到下的顺序执行第一个匹配×××客户连接请求的远程访问策略。如果×××客户匹配某个授权访问的远程访问策略,则×××服务器允许×××客户的拨入,如果×××客户不匹配任何授权访问的远程访问策略或者匹配某个拒绝访问的远程访问策略,则×××服务器拒绝×××客户端的访问。
    如果此RRAS服务器属于活动目录,你需要提升域功能级为Windows 2000 Native或者Windows server 2003后,才能使用通过远程访问策略控制访问选项。并且此RRAS服务器的计算机账户必须加入到域本地安全组RAS and IAS Servers组中,否则该RRAS服务器不能读取域用户的拨入权限设置。在启用路由和远程访问服务时,会自动加入到RAS and IAS Servers组中,如果没有自动加入,你可以手动进行添加或者在路由和远程访问服务器上运行Netsh ras add registeredserver命令。
    当×××服务器允许×××客户拨入×××时,将会为×××客户分配一个IP地址。你可以配置×××服务器通过内部网络中的DHCP服务器来为×××客户分配一个IP地址,也可以手动配置一个静态IP地址范围来为×××客户进行分配。但是,如果配置使用和内部网络不一致的子网来用于×××客户的地址分配时,你必须添加内部网络通过×××服务器到达×××客户的路由。关于×××客户的地址分配更详细的信息,请参见网络专家Gable Guy的文章“IP 地址分配与“路由和远程访问”服务”以及ISA中文站中我的文章关于ISA防火墙中×××服务的一些补充说明
    当×××客户创建×××拨号连接时,默认会启用远程网络上的默认网关,即把×××连接作为自己的默认网关。这将导致×××客户不能访问除自己本地子网外的其他本地网络,也不能通过本地网络连接到Internet。关于此选项的详细信息,请参见网络专家Gable Guy的文章“针对并行访问Internet和Intranet的分割隧道功能”。
  • 教你组建虚拟专用网络(×××)
  • 初识×××
      ×××(Virtual Private Network)即虚拟专用网络,它通过一个公用网络(如Internet)建立一个临时的、安全的、模拟的点对点连接。这是一条穿越公用网络的信息隧道,数据可以通过这条隧道在公用网络中安全地传输。因此,我们也可形象地称之为“网络中的网络”(如图1)。而保证数据安全传输的关键就在于×××使用了隧道协议(目前常用的隧道协议有PPTP、L2TP和IPSec)。×××的适用范围比较广泛,如企业原有专线网络的带宽升级;企业远程用户需要实现远程访问的情况;对通信线路的保密性和可用性要求较高的用户(如证券、保险公司);企业原有专线网络连接的备份,等等。在国外网络通信发达的国家,×××应用已经非常普及。据悉,目前全球30.4%的企业已在使用IP ×××,33.6%的企业正在有计划地部署IP ×××。而在国内,随着宽带应用的迅速发展,×××的应用将越来越广泛。无论从费用、安全性还是从管理和便于连接等方面都不难看出,×××将成为下一波的技术与市场热点。虚拟专用网络(×××)_职场_02
  • 如何搭建和使用×××
      组建×××有多种方法,而我们的讨论则是基于Windows Server 2003提供的“路由和远程访问”服务。利用该服务,我们可以企业内部搭建×××服务器,然后通过企业外部客户端的×××拨号连接对企业内部网进行访问。
      我们的试验基于以Windows Server 2003为操作平台、ADSL接入Internet的服务器端环境和以Windows XP为操作平台、ADSL接入Internet的客户端环境。连接方式为客户端通过Internet与服务器端建立×××连接。
      配置×××服务器
      Windows Server 2003的默认配置已经安装 “路由和远程访问”服务,但需要对该服务进行必要的配置才能使其内置的×××服务生效。配置过程简述如下:
      步骤一 依次单击[开始]→[管理工具]→[路由和远程访问],打开“路由和远程访问”服务窗口。
      步骤二 右击左侧控制台树里的本地计算机名称,执行[配置并启用路由和远程访问]命令,进入安装向导。单击[下一步],在“配置”对话框中点选[自定义配置]选项并单击[下一步]。然后在“自定义配置”对话框中勾选[×××访问]选项并单击[下一步]→[完成]→[是]。等待几秒钟之后,×××服务器即可启动。
      步骤三 启动之后的×××服务器还要经过必需的设置才能符合我们的实验环境。右击控制台树里的服务器名(本例为CHHUIAN),执行[属性]命令。在“CHHUIAN(本地)属性”对话框中切换至IP标签下。在[IP地址指派]选项中点选[静态地址池],然后单击[添加]按钮,分别键入起始IP地址和结束IP地址并单击[确定]→[确定](如图2)。虚拟专用网络(×××)_职场_03
    小提示:使用静态IP地址池为客户端分配IP地址可以减少IP地址解析时间,提高连接速度。起始IP地址和结束IP地址可以从所在地区的IP地址范围中截取一段(例如笔者截取的一段是61.55.230.10至61.55.230.20),具体范围可以咨询当地的ISP。另外也可以自定义一段IP地址(例如192.168.0.10至192.168.0.100)。当然,如果这台主机已经配置了DHCP服务,也可以选择“动态主机配置协议(DHCP)”选项,不过这会延长连接时间。
      步骤四 申请动态域名解析服务。如果服务器端有固定的IP地址,则客户端随时可以与服务器建立×××连接。而我们的服务器端采用的是ADSL虚拟拨号接入Internet,因此需要在×××服务器上使用动态域名解析服务才能支持客户端用同一个域名随时拨入。当然,如果在每次建立×××连接前先打电话询问服务器端的IP地址也可以。关于申请动态域名解析的方法本报前面有详细介绍,这里不再赘述。
      小提示:能提供动态域名解析服务的网站及相关软件有很多种,如花生壳、DynamicHost等。大家可参阅相关介绍申请使用该项服务。
      经过这样简单的几步设置,这台主机已经可以提供×××服务了。
    赋予用户远程连接的权限
      出于安全考虑,×××服务器配置完成以后所有用户均被拒绝拨入到服务上,需要为相关用户赋予拨入的权限。其过程简述如下:
      步骤一 右击[我的电脑],执行[管理]命令。在“计算机管理”对话框左侧的控制台树中展开[本地用户和组]选项,并单击[用户]文件夹。右击对话框右侧用户列表中的某一用户名称(如Administrator),执行[属性]命令。
      步骤二 在打开的“Administrator属性”对话框中切换至[拨入]标签下,点选[远程访问权限]选项中的[允许访问]并单击[确定]按钮即可(如图3)。虚拟专用网络(×××)_职场_04
    小提示:为便于大家理解,笔者这里选择了 允许访问 选项。其实这是安全性最差的拨入方式,建议选择 通过远程访问策略控制访问 选项,不过这需要在服务端定制远程访问策略。
     在客户端创建×××连接
      客户端的配置比较简单,跟建立普通拨号连接一样,只需建立一个×××的专用连接即可。假设客户端已经建立了一个虚拟拨号接入Internet的“ADSL连接”,我们以Windows XP为操作平台简述创建×××连接的过程:
      步骤一 依次单击[开始]→[控制面板],双击[网络连接]选项。
      步骤二 在打开的“网络连接”对话框左侧的快捷面板中找到并单击[创建一个新的连接]图标,单击[下一步]。友情提示:如果是第一次建立连接,系统会要求你输入所在地区的电话区号。如果在建立×××连接前已经建立了其他连接(如ADSL接入Internet的连接)则不会出现该提示。
      步骤三 在“网络连接类型”对话框中点选[连接到我的工作场所的网络]选项并单击[下一步]。接着在“网络连接”对话框中点选创建[虚拟专用网络连接]选项并单击[下一步],键入一个连接名称(如“公司的×××连接”),单击[下一步](如图4)。虚拟专用网络(×××)_职场_05
    步骤四 在“公用网络”对话框中点选[自动拨此初始连接]并在其下的下拉菜单中选中一个拨号连接。单击[下一步]。
      步骤五 在“×××服务器选择”对话框中键入×××服务器端的IP地址或域名。这就用到了我们在配置×××服务器时所提到的固定IP地址或动态域名。假设我们使用了动态域名解析系统,则应该在这里键入我们申请得到的域名(如chhuian.vicp.net),然后勾选[在桌面上创建此连接的快捷方式]并单击[完成]结束创建过程。这时可能会提示你是否连接到初始连接上,勾选[不再显示此提示]并单击[否]即可(如图5)。虚拟专用网络(×××)_虚拟专用网络_06拨入和访问×××服务器
      至此,我们已经具备了在×××服务器和客户端建立×××连接的条件了。但是如何从客户端拨入×××服务器呢?其实很简单,直接双击桌面上的[公司的×××连接]图标,系统会要求先通过初始连接(键入该连接的用户名和密码)接入Internet。然后再通过×××连接(键入被赋予拨入权限的用户名和密码)与×××服务器建立连接。我们可以通过双击桌面右下角的×××连接图标查看其状态。
      那么如何访问×××服务器上的共享资源呢,有两种方法:一是通过[网上邻居]直接访问共享资源,二是在IE浏览器的地址栏中键入“\\服务器名”或“\\服务器地址”(例如“CHHUIAN”或“\\chhuian.vicp.net”),通过浏览器窗口访问共享资源。另外,如果×××服务器端同时又作为局域网内的一台主机,我们还可以让×××客户端进一步访问局域网内的其他主机。这需要×××服务端开启了路由器功能并启用了IP路由,不过在×××服务器配置完成后这些功能都是默认启用的。
      小提示:成功建立连接后,客户端在访问服务器端的共享资源的时候可能会出现长时间的搜索过程。如果迟迟找不到服务器,可以使用“搜索计算机”进行搜索。
      一点说明
      在客户端和服务端均为ADSL接入Internet的环境下,我们可以轻松建立×××连接。如果网络环境比较复杂,例如小区宽带接入Internet的客户端访问ADSL接入Internet的服务端、采用Cable Modem接入Internet的客户端访问ADSL接入Internet的服务端、ADSL接入Internet的客户端访问小区宽带接入Internet的服务端等等,则还需要作进一步的配置才能实现连接。