1、第七章 防火墙L2TP VPN技术v1第七章 防火墙L2TP VPN技术v1.0幻灯片 1幻灯片 2幻灯片 3幻灯片 4幻灯片 5VPDN(Virtual Private Dial Network)是指利用公共网络(如ISDN 和PSTN)的拨号功能及接入网来实现虚拟专用网,从而为企业、小型ISP、移动办公人员提供接入服务。VPDN采用专用的网络通信协议,在公共网络上为企业建立有一定安全性的虚拟专网。企业驻外机构和出差人员可从远程经由公共网络,通过虚拟隧道实现和企业总部之间的网络连接,而公共网络上其它用户则无法穿过虚拟隧道访问企业网内部的资源。VPDN有下列两种实现方式:1. 客户端通过NAS
2、与VPDN网关建立隧道的方式。这种方式将客户的PPP连接直接连到企业的网关上,目前可使用的协议有L2F与L2TP等。其好处在于:对用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和地址分配,而不占用公共地址,用户可使用各种平台上网。这种方式需要NAS 支持VPDN 协议,需要认证系统支持VPDN 属性,网关一般使用防火墙或VPN 专用服务器。2. 客户端与VPDN 网关直接建立隧道的方式。这种方式由客户机先建立与Internet的连接,再通过专用的客户软件(如Windows系统支持的L2TP客户端)与网关建立通道连接。其好处在于:用户上网的方式和地点没有限制,不需ISP
3、介入。缺点是:用户需要安装专用的软件,受用户使用平台的限制,而且VPN维护难度较大。幻灯片 6幻灯片 7L2TP(Layer 2 Tunnel Protocol)称为二层隧道协议,是为在用户和企业的服务器之间透明传输PPP报文而设置的隧道协议。PPP协议定义了一种封装技术,可以在二层的点到点链路上传输多种协议数据包,这时用户与NAS 之间运行PPP协议,二层链路端点与PPP会话点驻留在相同硬件设备上。L2TP协议提供了对PPP链路层数据包的通道(Tunnel)传输支持,允许二层链路端点和PPP会话点驻留在不同设备上并且采用包交换网络技术进行信息交互,从而扩展了PPP模型。从某个角度来讲,L2T
4、P实际上是一种PPPoIP的应用,就像PPPoE、PPPoA、PPPoFR一样,都是一些网络应用想利用PPP的一些特性,弥补本网络自身的不足。另外,L2TP协议还结合了L2F协议和PPTP协议的各自优点,成为IETF有关二层隧道协议的工业标准。幻灯片 8LAC表示L2TP访问集中器(L2TP Access Concentrator),是附属在交换网络上的具有PPP 端系统和L2TP协议处理能力的设备。LAC一般是一个网络接入服务器NAS,主要用于通过STN/ISDN 网络为用户提供接入服务。LNS表示L2TP网络服务器(L2TP Network Server),是PPP 端系统上用于处理L2T
5、P协议服务器端部分的设备。LAC位于LNS和远端系统(远地用户和远地分支机构)之间,用于在LNS和远端系统之间传递信息包,把从远端系统收到的信息包按照L2TP协议进行封装并送往LNS,将从LNS收到的信息包进行解封装并送往远端系统。LAC与远端系统之间可以采用本地连接或PPP链路,VPDN应用中通常为PPP链路。LNS作为L2TP隧道的另一侧端点,是LAC的对端设备,是LAC进行隧道传输的PPP会话的逻辑终止端点。远程拨号用户发起。用户通过PSTN/ISDN接入NAS,获得访问Internet权限然后直接向远端LNS服务器发起L2TP连接。此时客户可直接向LNS发起通道连接请求,无需再经过一个
6、单独的LAC设备。LAC客户地址的分配由LNS来完成。这种方式的L2TP协议允许移动用户直接发起L2TP隧道连接,要求移动用户安装VPDN的客户端软件,需要知道LNS的IP地址。客户端软件可以是windows自带的L2TP VPN拨号软件,也可以是华赛的secoway VPNClient。此类组网适用于单人上网访问企业网。各组件的工作如下:VPN Client: 首先获得公网地址,与LNS之间保持连通,向LNS发起建立隧道请求;LNS: 为用户分配私网地址,准许用户接入内部网络。幻灯片 9用户通过PSTN/ISDN接入NAS(LAC),LAC判断如果是VPN用户,由LAC通过Internet向
7、LNS发起建立通道连接请求。拨号用户地址由LNS分配;对远程拨号用户的验证与计费既可由LAC侧的代理完成,也可在LNS侧完成。这种方式的L2TP协议,允许用户在接入到Internet的时候,通过BAS设备发起L2TP隧道连接。这个时候移动用户是不需要安装额外的VPDN软件的,但是必须采用PPP的方式接入到Internet,也可以是PPPOE等协议。当在LAC设备上对用户的用户名、密码进行验证的时候,根据用户名就可以知道是L2TP隧道用户,然后自动向LNS设备发起连接,用户自然就接入到了自己的企业VPN中了。此方案适用于小型局域网访问公司总部网络。各组件的工作如下:VPN Client: 向LA
8、C设备发起PPP连接;LAC: 判断用户是否是L2TP用户,如果是,判断用户向哪个LNS发起隧道请求;LNS:为用户分配私网地址,准许用户接入内部网络。对于这种方式的VPDN接入,主要有如下几个特点:用户必须采用PPP的方式接入到Internet,比如PPPOE或者是传统的PPP拨号方式等。在运营商的接入设备上(主要是BAS设备)需要开通相应的VPN服务。用户需要到运营商出申请这个业务。对客户端没有任何要求,用户自己也感知不到已经接入到了企业网,完全是运营商来提供L2TP隧道服务。一个隧道承载多个会话。幻灯片 10LAC封装来自Clinet的PPP报文时,封装过程如下:1. 封装L2TP头:其
9、中包含了用于标识该消息的Tunnel ID和Session ID,这两个ID信息都是Remote端的ID而不是本地ID信息。2. 封装UDP头:用于标识上层应用,L2TP注册了UDP 1701端口,当LNS收到了该端口的报文时能够辨别出这是L2TP报文从而送入L2TP处理模块进行处理。3. 封装公网IP头:用于该报文在IP网(Internet)转发,注意LAC使用L2TP隧道的起点和终点地址来封装公网IP头.LNS收到L2TP报文以后,解封装过程如下:1. 检查公网IP头和UDP头信息:LNS首先通过UDP端口标识该报文为L2TP报文,然后检查公网IP头的源目的地址是否和本地已经建立成功的L2
10、TP隧道源目的地址相同,如果相同则解封装公网IP头和UDP头,否则丢弃报文。2. 检查L2TP头信息:LNS读取L2TP头中的Tunnel ID和Session ID信息,检查其是否和本地已经建立成功的L2TP Tunnel ID和L2TP Session ID相同,如果相同则解封装,否则丢弃报文。3. 检查PPP头信息:LNS检查PPP头中的相关信息是否正确,然后解封装PPP头。4. 得到私网IP报文:此时LNS处理报文的过程就和收到一个普通的IP报文处理过程一致,将私网IP报文送入上层模块或者进行路由处理。LNS发往LAC的报文封装和解封装过程和上面类似,主要区别是LAC解封装过程中将公网
11、IP头、UDP头和L2TP头解封装以后,不再解封装PPP头,而是直接将PPP报文通过PPP Session发往Client。幻灯片 11L2TP中存在两种消息:控制消息和数据消息。控制消息用于隧道和会话连接的建立、维护以及传输控制;数据消息则用于封装PPP 帧并在隧道上传输。控制消息的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制;而数据消息的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。在所有的控制消息中必须包含序列号用于提供可靠的传输,即收到了控制信息的接收者必须回应ZLB ACK或者其它的确认消息。数据消息则可以可选的使用序列号来进行丢包检测及
12、重传。控制消息和数据消息共享相同的报文头,报文头各数据位的含义如下:T:标识了消息类型,0为数据消息,1为控制消息。L:对于控制消息必须为1,如果L为1,则Length字段必须存在。X:保留用于以后扩展。S:对于控制消息必须为1,如果S为1,则Ns和Nr字段必须存在。O:对于控制消息必须为0,如果O为1,则Offset字段必须存在。P:对于控制消息必须为1,之用于数据消息,表明该报文应该优先处理,对于某些时延或者丢包敏感的应用必须将其设为1,例如PPP的LCP Echo Requests等消息。Version:必须为2,标识版本号。Length:表明报文的整个长度。Tunnel ID:标识一个
13、控制连接。L2TP的Tunnel是在本地用ID消息标识的,并且是本地有效的。对于同一个Tunnel,本地ID和远端的ID完全可能不同。注意Tunnel ID是由接收者收到报文以后来定义的,而不是由发送者定义的。Tunnel ID的选择和交换是在Tunnel建立时通过Tunnel ID AVP完成的。Session ID:标识在一个Tunnel内部不同Session,和Tunnel ID一样,Session ID也是本地定义本地有效的。Session ID的选择和交换是在Session建立时通过Session ID AVP完成的。Ns:标识了数据或者控制消息的序列号,第一个消息Ns应该为0,然后
14、每次增加1。Nr:控制消息使用,标识希望收到的下一个控制消息的序列号,Nr为上一次收到的Ns号码加1。对于数据消息,Nr保留,如果数据消息收到了Nr则必须将其忽略。Offset Size:标识Payload相对于L2TP报文头偏移量。Offset pad:偏移填充项,填充内容无具体定义。该字段仅仅是为了格式需要。幻灯片 121. 用户端PC机发起呼叫连接请求。2. PC机和LAC端进行PPP LCP协商。3. LAC对PC机提供的用户信息进行PAP或CHAP认证。4. LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证。5. RADIUS服务器认证该用户,如果认证通过则返回该用户
15、对应的LNS地址等相关信息,并且LAC准备发起Tunnel连接请求。6. LAC端向指定LNS发起Tunnel连接请求。7. LAC端向指定LNS发送CHAP challenge 信息,LNS回送该challenge响应消息CHAPresponse,并发送LNS 侧的CHAP challenge,LAC返回该challenge的响应消息CHAPresponse。8. 隧道验证通过。9. LAC端将用户CHAP response、response identifier和PPP协商参数传送给LNS。10. LNS将接入请求信息发送给RADIUS服务器进行认证。11. RADIUS服务器认证该请求信
16、息,如果认证通过则返回响应信息。12. 若用户在LNS侧配置强制本端CHAP认证,则LNS对用户进行认证,发送CHAPchallenge,用户侧回应CHAP response。幻灯片 13第二层隧道协议(PPTP和L2TP)通常用于VPDN应用中,以完善的PPP协议为基础,继承了一整套的特性。用户验证第2层隧道协议继承了PPP协议的用户验证方式。许多第3层隧道技术都假定在创建隧道之前,隧道的两个端点相互之间已经了解或已经经过验证。一个例外情况是IPSec协议的ISAKMP协商提供了隧道端点之间进行的相互验证。令牌卡(Token card)支持通过使用扩展验证协议(EAP),第2层隧道协议能够支
17、持多种验证方法,包括一次性口令(One-Time Password),加密计算器(Cryptographic Calculator)和智能卡等。第3层隧道协议也支持使用类似的方法,例如,IPSec协议通过ISAKMP/Oakley协商确定公共密钥证书验证。动态地址分配第2层隧道协议支持在网络控制协议(NCP)协商机制的基础上动态分配客户地址。第3层隧道协议通常假定隧道建立之前已经进行了地址分配。目前IPSec隧道模式下的地址分配 数据压缩第2层隧道协议支持基于PPP的数据压缩方式。例如,微软的PPTP和L2TP方案使用微软点对点加密协议(MPPE)。IETP正在开发应用于第3层隧道协议的类似数
18、据压缩机制。数据加密第2层隧道协议支持基于PPP的数据加密机制。微软的PPTP方案支持在RSA/RC4算法的基础上选择使用MPPE。第3层隧道协议可以使用类似方法,例如,IPSec通过ISAKMP/Oakley协商确定几种可选的数据加密方法。微软的L2TP协议使用IPSec加密保障隧道客户端和服务器之间数据流的安全。密钥管理作为第2层协议的MPPE依靠验证用户时生成的密钥,定期对其更新。IPSec在ISAKMP交换过程中公开协商公用密钥,同样对其进行定期更新。多协议支持第2层隧道协议支持多种负载数据协议,从而使隧道客户能够访问使用IP, IPX或NetBEUI等多种协议企业网络。相反,第3层隧道协议,如IPSec隧道模式只能支持使用IP协议的目标网络。幻灯片 14幻灯片 15
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1