知识库与软件

PPTP的实现(HiPER ReOS 2008 VPN配置手册)

文档编号:115
浏览:15207 评分:43
最后更新于:2010-03-29

 (一)、 缩略语与专用名词

PPTP(Point-to-Point Tunneling Protocol),点到点隧道协议:PPTP是一种虚拟专用网络协议,属于第二层的协议。PPTP将PPP(Point-to-Point Protocol)帧封装在IP数据报中,通过IP网络如Internet或企业专用Intranet等发送。
GRE(Generic Routing Encapsulation),基本路由封装:基本路由封装协议是对某些网络层协议(如IP和IPX)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如IP)中传输。GRE协议号是47。
PPP(Point-to-Point Protocol),点对点协议:PPP协议是为在两点之间传输数据包的简单链路设计的,这些链路提供全双工的操作。
MTU(Maximum Transmission Unit),最大发送单元:物理端口可以发送的最大数据包长度。
MRU(Maximum Receive Unit),最大接收单元:物理端口可以接收的最大数据包长度。
PAP(Password Authentication Protocol),口令验证协议:PPP协议中对通信双方身份认证的安全性协议之一,是一种简单的明文验证协议。PAP认证仅在PPP连接建立时进行。
CHAP(Challenge Handshake Authentication Protocol),质询握手验证协议:PPP协议中对通信双方身份认证的安全性协议之一,是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。CHAP认证在整个通信过程中进行。
MS-CHAP(Microsoft- Challenge Handshake Authentication Protocol),微软质询握手验证协议:PPP协议中对通信双方身份认证的安全性协议之一,与CHAP类似,它也是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。MS-CHAP使用基于MPPE(微软点对点加密协议)的数据加密。
Fragment,分段:是指在源主机或路由器处,将一个IP包分割成多个IP包的一种过程。经过分段后,每个包都单独传送,并在目的地(目标主机)处重组。
Reassemble,重组:在目的地(目标主机)把所有分段按顺序组合起来的过程。
Peer,对端设备:在PPTP协议中,对端设备指PPTP服务器或PPTP客户端中的任意一个。PPTP服务器的对端设备是PPTP客户端,反之亦然。
Tunnel,隧道:PPTP隧道(Tunnel)建立在PPTP服务器和PPTP客户端之间,由一个控制连接和n个(n≥0)个会话(Session)组成。同一对PPTP服务器和PPTP客户端之间只能建立一个PPTP隧道。控制消息和PPP数据包都在隧道上传输。
Session,会话:会话是建立于PPTP服务器和PPTP客户端之间的逻辑连接,它必须在隧道建立成功之后(包括身份保护、PPTP版本、帧类型、硬件传输类型等信息的交换)进行。每个会话连接对应于PPTP服务器和PPTP客户端之间的一个PPP数据流。
NAT(Network Address Translation),网络地址转换:NAT是用于实现内部网络私有地址到外部网络公共地址的转换。

(二)、PPTP实现概述

      PPTP协议的基本功能是在IP网络中传送采用PPP封装的用户数据包。PPTP客户端负责接收用户的原始数据,并将之封装到PPP数据包,然后在PPTP客户端和服务器之间建立PPTP隧道传送该PPP数据包。

       典型的应用通常是PPTP客户端部署在远程分支机构或移动办公用户的个人电脑软件中,他们用来发起PPTP隧道;PPTP服务器部署在企业中心或办公室,用来接收来自PPTP客户端的呼叫,当建立起PPTP隧道连接后,PPTP服务器接收来自PPTP客户端的PPP数据包,并还原出用户的数据包,然后把还原后的数据包发送到最终用户的电脑设备上。
 1 HiPER PPTP典型应用
       HiPER可以工作PPTP客户端或服务器两种模式下;或者同时作为PPTP客户端和服务器工作,在这种情况下,PPTP服务器一方面接收来自PPTP客户端的数据包,另一方面将接收到的数据包发送到其他服务器设备中。如图3-2所示,对于移动用户来说,HiPER作为PPTP服务器接收移动用户的数据,同时HiPER又作为客户端与公司总部PPTP服务器相连,实现整个企业网络的互连。
 2 HiPER PPTP移动用户解决方案
 
 
PPTP通信由以下两部分组成:
1.         PPTP控制连接
一种用以代表PPTP隧道并且必须通过一系列PPTP消息来创建、维护与终止的逻辑连接。PPTP控制连接通信过程使用PPTP客户端上动态分配的TCP端口以及PPTP服务器上的TCP 1723端口。
2.         针对数据的GRE封装
当通过PPTP连接发送数据时,PPP帧将利用通用路由封装(GRE)包头进行封装,这种包头包含了用以对数据包所使用的特定PPTP隧道进行标识的信息。原始GRE包头则在RFC 1701中进行了定义。
PPTP采用单独的GRE数据封装机制对网络地址转换设备(NAT)产生一种有趣的副作用。大多数NAT设备能够对基于TCP的PPTP控制连接内容进行正确的NAT转换。然而,很多NAT设备和防火墙设备不支持GRE NAT转换和传输,具有GRE包头的PPTP数据包有些情况下将无法通过防火墙或NAT设备。 HiPER能够支持PPTP隧道穿越防火墙或NAT设备。
       为了使PPTP隧道正常工作,需要以下基本条件:
1.         PPTP客户端和PPTP服务端必须有IP连接, 也就是常说的IP路由可达。
2.         IP网络中的防火墙设备必须配置为允许TCP 1723端口的数据包通过
3.         IP网络中的防火墙设备必须配置为允许GRE类型的数据包通过。
 
       HiPER中PPTP隧道是通过生成“虚端口”实现的。用户一旦正确配置了一条PPTP隧道的相关参数,HiPER系统会使用该配置自动生成一个“虚端口”用来传输数据,该“虚端口”只能由该用户使用,其他用户不能使用。
       新生成的端口缺省工作在“监听”(ptpdial)状态下,在该状态下,PPTP客户端或服务器并未真正建立“隧道”,以节省系统资源。“监听”状态下的端口一直监听是否有用户的数据包需要传送。
CLI方式中,可使用命令show ip route table来查看ptpdial端口是否建立,处于监听状态。如表3-1所示,与该隧道对应路由条目的“IfId”(虚端口标识)处显示为“ptpdial0”,表示ptpdial端口已建立。
WEBUI方式中,可在系统状态—>路由和端口信息的“路由表信息列表”中查看ptpdial端口是否建立。如表3-2所示,与该隧道对应路由条目的“端口号”处显示为“ptpdial0”,表示ptpdial端口已建立。
 
                     1 CLI中路由表(部分)
 
 
                       2 WEBUI中路由表(部分)
      
 
  当收到第一个用户数据包的时候,PPTP客户端会向服务器发出建立隧道传送的请求,PPTP服务器收到来自PPTP客户端的请求后,会验证该用户是否是一个合法的用户。如果用户是合法的(如用户名/密码匹配),PPTP服务器将接收该请求,此时PPTP客户端和服务器之间就建立了一条PPTP隧道,用户数据就由PPTP客户端通过该隧道发送到PPTP服务器上,然后PPTP服务器把数据发送到接收者所在的网络上,虚端口的状态由“监听” (ptpdial)状态变为“传输”(ptp)状态,对应的路由也由“DOWN”状态变为“UP”状态。
CLI方式中,可使用命令show ip route table来查看虚端口是否已由“监听”状态变为“传输”状态。如表 3所示,与该隧道对应路由条目的“IfId”(虚端口标识)处显示为“ptp87”(87为虚端口号),表示pptp端口已建立,即虚端口已由“监听”状态变为“传输”状态。

WEBUI方式中,可在系统状态—>路由和端口信息的“路由表信息列表”中查看虚端口是否已由“监听”状态变为“传输”状态。如表3-4所示,与该隧道对应路由条目的“端口号”处显示为“ptp87”(87为虚端口号),表示ptp端口已建立,即虚端口已由“监听”状态变为“传输”状态。

 

                          3 CLI中路由表(部分)
 
                             4 WEBUI中路由表(部分) 
 
 
CLI方式中,可使用命令show session userInfo来查看PPTP用户信息。如图 3所示,srv 显示为“PPTP”, 表示用户正在使用PPTP协议连接。显示信息“Total Active users:1”,表示当前有一个PPTP用户。需要注意的是此命令可以查看PPPoE、PPTP、 L2TP 等用户的信息,“Total Active users”显示的是总用户数量。
WEBUI方式中,无此功能。
 
                     
                        3 CLI中PPTP用户信息显示
 
WEB UI方式中,可在VPN配置—>PPTP和L2TP的“PPTP/L2TP信息列表”中查看PPTP用户信息。如表5所示。“状态”显示为“已连接”,表示PPTP隧道已连接。
 
                         5 WEB UI中PPTP用户信息
 
如果PPTP服务器验证PPTP用户失败,PPTP服务器将拒绝该呼叫,由于没有合适的隧道传送该数据报,用户的数据最终被PPTP客户端丢弃。
CLI方式中,可使用命令show ip route table命令来查看虚端口状态。如表 6所示,与该隧道对应路由条目的“IfId”(虚端口标识)处显示为“ptpdial0”,表示虚端口仍处在“ptpdial”状态,验证失败。
WEBUI方式中,可在系统状态—>路由和端口信息的“路由表信息列表”中查看虚端口状态。如表 7所示,与该隧道对应路由条目的“端口号”处显示为“ptpdial0”,表示虚端口仍处在“ptpdial”状态,验证失败
                         
 
 
                          7 WEBUI中路由表(部分)
 
由于在系统中维持一条隧道需要消耗一定的资源,HiPER中采取了一些优化设计。HiPER PPTP客户端/服务器可以被配置成:当没有用户数据需要传送的时候,也就是说该隧道“空闲”(此时虚端口也为“空闲”状态)一段时间后,它将主动拆除已经处在“传输”状态的PPTP隧道,虚端口就由“空闲”状态变为“监听”状态,同时相关的路由也变成“DOWN”状态,处在该状态下的隧道不能发送用户数据。
CLI方式中,通过使用命令set connection/xxx dial idleTimeout xxx来修改“空闲时间”(即idleTimeout),从而控制隧道空闲后虚端口保持“传输”状态的时间(由“传输”状态变为“监听”状态之前)。
WEBUI方式中,通过修改界面参数“空闲时间”(可在VPN配置—>PPTP和L2TP中修改),来控制隧道空闲后虚端口保持“传输”状态的时间(由“传输”状态变为“监听”状态之前)。
由上,从开始配置PPTP隧道参数、到隧道建立、再到隧道断开的整个过程中,相应的虚端口的状态的变化如图 4所示。
 
                         
 
 提示:
虽然PPTP服务器也配置了虚端口,但是该端口只能工作在“监听”状态下。即使有数
据需要向PPTP客户端发送,PPTP服务器也不会主动发起建立隧道的请求,这是由于PPTP客户端的IP地址通常都是变化的,因此PPTP服务器无法确定PPTP客户端的地址,也就无法发起呼叫请求建立隧道。
 
1   .    PPTP客户端数据流
                                       5 HiPER PPTP隧道数据流
 
 
如图 5所示,PPTP隧道建立及数据传输的整个过程中,PPTP客户端将依次通过以下数据流:
Ø 隧道配置完成,PPTP客户端建立虚端口监听(图中(1));
Ø PPTP监听端口收到用户数据(图中(3));
Ø PPTP客户端发起建立隧道请求(图中(4));
Ø PPTP客户端收到PPTP服务器验证用户身份(用户名/密码)请求,回复此请求(图中(7));
Ø PPTP服务器与PPTP客户端建立PPTP隧道(图中(8));
Ø PPTP客户端使用PPP帧封装用户数据(图中(9));
Ø PPTP客户端通过隧道发送用户数据(GRE/PPP封装)(图中(10));
Ø PPTP客户端接收来自PPTP服务器通过隧道传输的数据,解封装处理(图中(15));
Ø PPTP客户端将发送解封后的数据到最终用户(图中(15));
Ø 隧道空闲一段时间或用户主动请求断开隧道,关闭已建立隧道(图中(17);
Ø 隧道断开,PPTP端口返回监听状态(图中(18))。
 
 2.       PPTP服务器数据流
如图 5所示,L2TP隧道建立及数据传输的整个过程中,PPTP服务器将依次通过以下数据流:
Ø 隧道配置完成,PPTP服务器建立虚端口监听(此端口只能响应用户的呼叫请求,不能发起呼叫请求)(图中(2));
Ø PPTP服务器监听端口收到PPTP客户端建立隧道请求(图中(5));
Ø PPTP服务器要求验证用户身份(用户名/口令)(图中(6));
Ø PPTP服务器与PPTP客户端协商建立PPTP隧道(图中(8);
Ø PPTP服务器接收来自PPTP客户端通过隧道传输的数据,解封装处理(图中(11));
Ø PPTP服务器发送解封后的数据到最终用户(图中(12));
Ø PPTP服务器接收来自最终用户的数据,使用PPP帧封装用户数据(图中(13));
Ø PPTP服务器通过隧道发送用户数据(GRE/PPP封装)(图中(14));
Ø 隧道空闲一段时间或用户主动请求断开隧道,关闭已建立隧道(图中(17));
Ø 隧道断开,PPTP服务器返回监听状态(图中(19))。
 
PPTP协议PPTP客户端和服务器建立隧道的过程是不需要验证的。也就是说,PPTP协议只有用户认证这一个验证过程。
 
       在这里采用的是PPP协议的验证方式进行用户认证。根据实际需要,用户可以选择PAP或CHAP方式或PPP支持的其他验证方式,值得注意的是,必须为同一对PPTP服务器和客户端配置匹配的用户认证方式。
对于PPTP客户端(“拨出”用户),可以选择PAP、CHAP或MS-CHAP中的一种作为其用户认证方式。对于PPTP服务器(“拨入”用户),可以选择PAP、CHAP或MS-CHAP中的一种作为其用户认证方式,PPTP服务器缺省配置可以接受上述的任何一种验证方式。
CLI方式中,可以使用命令set connection/xxx encaps send authtype pap/chap/mschap设置PPTP客户端或PPTP服务器的用户认证方式为PAP、CHAP或MS-CHAP中的一种。
WEBUI方式中,可以选择“密码验证方式”为“NONE”、“PAP”、“CHAP”或“MS-CHAP”设置PPTP客户端或PPTP服务器的用户认证方式为NONE(不验证)、PAP、CHAP或MS-CHAP中的一种(在VPN配置—>PPTP和L2TP中设置)。
 
       PPTP协议在传输过程中并不提供数据加密的功能,PPTP协议是利用PPP协议具有的数据压缩/加密功能(如CCP、PPE等方式)或利用IPSec的加密功能来保护PPTP数据 。
 
六、   MTU与分段数据传输
PPTP协议在工作过程中使用了数据封装技术,当用户数据包本身比较大的时候(如ERP软件和FTP通常会使用比较大的数据包传输数据,MSN/QQ等聊天软件发送的数据包比较小),封装后的数据可能会超过发送物理端口最大发送单元MTU(例如以太网接口的最大发送单元MTU是1500字节,超过1500字节大小的数据包将被强制分成多个数据包发送,以确保每个数据包可以被物理端口正确地发送),此时数据只能分段传输。在接收方,收到分段后的数据必须组装还原为原来的数据包以后才能进行下一步协议处理,在接收到最后一个分段之前该数据包一直处在待处理状态。如果中间有一个分段丢失,则整个数据包将被丢弃。
数据分段传输会严重影响系统的性能,所以传输过程中的再分段传输应当尽量避免。为解决此问题,PPTP协议在隧道建立过程中通过协商PPP协议的MRU/MTU参数来避免在随后的隧道传输过程中发生数据再分段的情况。
在HiPER中可以设置PPTP隧道的缺省MTU(即tunnelmtu,缺省值为1400)来调整发送包的大小,超过该MTU大小的数据包会主动先分段,然后再发送。同时HiPER通过设置每条隧道的MTU/MRU(即用户MTU/MRU)参数来协商该隧道的MTU/MRU。正确的配置是tunnelmtu <用户MTU≤用户MRU <最终物理端口的MTU。
CLI方式中,可以使用命令set ip vpn tunnelmtu xxx设置隧道的MTU。
WEBUI方式中,无此功能。
CLI方式中,可以使用命令set connection/xxx encaps mtu xxx设置用户的MTU;可以使用命令set connection/xxx encaps mru xxx设置用户的MRU。
WEBUI方式中,可以通过设置参数“最大接收单元”的值来设置用户的MRU(在VPN配置—>PPTP和L2TP中设置),不能设置用户的MTU。
下面给出PPTP隧道的MTU(tunnelmtu)的计算实例:
如图3和如图7所示,为固定IP接入和PPPoE拨号时,在PPTP隧道中传输的封装数据包格式,其中以太网MTU及各封装包头大小分别为:
以太网MTU:      1500字节;
IP包头:           20字节;
GRE包头:         8字节;
PPTP包头(最大): 30字节;
PPPoE包头:        8字节;
                                               6 PPTP隧道数据包格式(固定IP接入)
 
 7 PPTP数据包格式(PPPoE拨号)
 
 
 
 
因此,固定IP接入时,最大tunnelmtu不能大于l442=1500-20-8-30,单位为字节;如果中间使用PPPoE线路(如图7),还要减去PPPoE的包头(8字节),不能大于1434=1442-8,单位为字节。
HiPER中的PPTP隧道MTU 缺省值是1400,可以满足绝大部分应用的要求,一般无须修改。
 
(三)、PPTP会话数量限制
 
针对不同的产品型号,HiPER支持PPTP VPN隧道的会话数量是不一样的。PPTP会话数量根据具体的产品规格说明书确定,超过系统支持能力的会话将被拒绝。当VPN会话数已达最大值时,如果尝试建立新的会话,系统会显示如下信息:
 
3-8 对话框— VPN会话数达到最大
 
CLI方式中,可使用命令show session history查看相关信息,如图3-9所示,有“Max VPN sessions。Cannot set up a new PPTP session。”相关信息显示,无法再建立新的PPTP会话。
WEBUI方式中,可在系统状态—>系统信息的“系统历史记录”中查看相关信息。如图3-10所示,在系统历史记录中有“Max VPN sessions。Cannot set up a new PPTP session。”相关信息显示,无法再建立新的PPTP会话。
 
 
  
 
 
 
提示:系统保留一个虚端口为拨入用户使用,实际可配PPTP隧道相应减少一条。
 
 

   2024 ©上海艾泰科技有限公司 版权所有 沪ICP备05037453号-1

   

      沪公网安备 31011702003579号