您的当前位置:首页正文

IPsec和L2TP

2022-07-10 来源:欧得旅游网
IPsec和L2TP

一、第二层隧道协议(L2TP)和安全IP(IPSec)

第二层隧道协议L2TP(Layer Two Tunneling Protocol)是PPTP和第二层转发L2F两种技术的结合,后者是由Cisco公司提出的隧道技术。为 了避免PPTP和L2F两种互不兼容的隧道技术在市场上彼此竞争从而给用户造成困惑,带来不方便,IETF要求将两种技术结合在单一隧道协议中,并在该协 议中糅合PPTP和L2F两者的优点,由此产生了L2TP。有关L2TP协议标准详见RFC 2661。

L2TP协议将PPP帧封装后,可通过IP,X.25,帧中继或ATM等网络进行传送。目前,仅定义了基于IP网络的L2TP。 在IP网络中L2TP采用用户数据报协议UDP封装和传送PPP帧。L2TP隧道协议 可用于Internet,也可用于其他企业专用Intranet中。

IP网上的L2TP不仅采用UDP封装用户数据,还通过UDP消息对隧道进行维护。PPP帧的有效载荷即用户传输数据,可以经过加密、压缩或两者的混合处 理,但需要指出的是,与PPTP不同,在Windows 2000中,L2TP客户机不采用MPPE对L2TP连接进行加密,L2TP连接加密由IPSec ESP提供。 在Windows 2000中,创建一条未经IPSec加密的L2TP连接是有可能的,但在这种情形下,由于用户私有数据没有经过加密处理,因此该L2TP连接不属于VPN 连接。非加密L2TP连接一般用于临时性的对基于IPSec的L2TP连接进行故障诊断和排除,在这种情况下,可以省略IPSec认证和协商过程。

与PPTP类似,L2TP协议假定在L2TP客户机和L2TP服务器之间有连通且可用的IP网络。因此如果L2TP客 户机本身已经是某IP网络的组成部分,那么即可通过该IP网络与L2TP服务器取得连接;而如果L2TP客户机尚未连入网络,譬 如在Internet拨号用户的情形下,L2TP客户机必须首先拨打NAS建立IP连接。这里所说的L2TP客户机也就是使用L2TP隧道协议和 IPSec安全协议的VPN客户机,而L2TP服务器亦即使用L2TP隧道协议和IPSec安全协议的VPN服务器。 创建L2TP隧道时必须使用与PPP连接相同的认证机制,诸如EAP,MS?CHAP,CHAP,SPAP,和PAP。基于Internet的L2TP服 务器亦即使用L2TP协议的拨号服务器,它的一个接口在外部网络Internet上,另一个接口在目标专用网络Intranet上。

L2TP隧道维护控制消息和隧道化用户传输数据具有相同的包格式。 二、基于L2TP控制消息的隧道维护

与PPTP不同,L2TP不是通过一条单独的TCP连接来进行隧道维护。L2TP客户机和服务器之间的呼叫控制和管理均以发送UDP消息的方式进行。在Windows 2000中,L2TP客户机和服务器都使用UDP1701端口。 注:在Windows 2000中,L2TP客户机和服务器始终使用UDP1701端口,但Windows 2000 L2TP服务器也支持使用非1701 UDP端口的L2TP客户机。 IP网上的L2TP控制消息以UDP数据报形式发送。在Windows 2000实现中,L2TP控制消息即UDP数据报经过IPSec ESP的加密,见下图:

图一、L2TP控制消息

由于UDP提供的是无连接的数据包服务,因此L2TP采用将消息序列化的方式来保证L2TP消息的按序递交。在L2TP控制消息中,Next- Received字段(类似于TCP中的确认字段)和Next-Sent字段(类似于TCP中序列号字段)用于维持控制消息的序列化。无序数据包将被丢 弃。Next-Received字段和Next-Sent

字段同样用于用户传输数据的按序递交和流控制。

L2TP支持一条隧道内的多路呼叫。在L2TP的控制消息中以及L2TP数据帧的报头内,Tunnel ID标识了一条隧道而Call ID标识了该隧道内的一路呼叫。 下表列出了一些主要的L2TP控制消息。 消息类型 用途

Start-Control-Connection-Request 由L2TP客户机发出,请求建立控制连接。L2TP隧道要求在其他任何L2TP消息发送之前首先建立控制连接。该消息包含一个隧道标识Tunnel- ID。

Start-Control-Connection-Reply L2TP服务器对Start-Control-Connection-Request消息的应答。 Start-Control-Connection-Connected 对

Start-Control-Connection-Reply消息的应答,表示隧道建立成功。 Outgoing-Call-Request 由L2TP客户机发出,请求建立一路呼叫,该消息包含一个Call ID用于标识特定隧道中的一路呼叫。

Outgoing-Call-Reply L2TP服务器对Outgoing-Call-Request消息的应答。

Start-Control-Connection-Connected 对Outgoing-Call-Reply消息的应答,表示呼叫建立成功。 Hello 作为保持连线机制,可由L2TP客户机或服务器任一方发出。如果Hello消息得不到确认,则L2TP隧道逐渐终止。

WAN-Error-Notify 由L2TP服务器向所有VPN客户机发出,指示服务器的PPP接口处于错误状态。

Set-Link-Info 可由L2TP客户机或服务器任一方发出,设置PPP协商选项。

Call-Disconnect-Notify 由L2TP客户机或服务器任一方发出,指示隧道内一路呼叫将被终止。

Stop-Control-Connection-Notification 由L2TP客户机或服务器任一方发出,指示隧道将被终止。

L2TP 控制消息的确切格式,请参阅L2TP Internet 草案。 表二、L2TP控制消息 三、L2TP数据封装

L2TP用户传输数据的隧道化过程采用多层封装的方法。图二显示了封装后在隧道中传输的基于IPSec的L2TP数据包格式。

图二、L2TP数据包封装 1)L2TP封装

初始PPP有效载荷如IP数据报、IPX数据报或NetBEUI帧等首先经过PPP报头和L2TP报头的封装。 2)UDP封装

L2TP帧进一步添加UDP报头进行UDP封装,在UDP报头中,源端和目的端端口号均设置为1701。 3)IPSec封装

基于IPSec安全策略,UDP消息通过添加IPSec封装安全负载ESP报头、报尾和IPSec认证报尾(Auth trailer),进行IPSec加密封装。

4)IP封装

在IPSec数据报外再添加IP报头进行IP封装,IP报头中包含VPN客户机和服务器的源端和目的端IP地址。 5)数据链路层封装

数据链路层封装是L2TP帧多层封装的的最后一层,依据不同的外发物理网络再添加相应的数据链路层报头和报尾。例如,如果L2TP帧将在以太网上传输,则 用以太网报头和报尾对L2TP帧进行数据链路层封装;如果L2TP帧将在点-点WAN上传输,如模拟电话网或ISDN等,则用PPP报头和报尾对L2TP 帧进行数据链路层封装。

6)基于IPSec的L2TP隧道化数据的解封装过程

在接收到L2TP帧后,L2TP客户机或服务器将做如下解封装处理: 1.处理并去除数据链路层报头和报尾 2.处理并去除IP报头

3.用IPSec ESP认证报尾对IP有效载荷和IPSec ESP报头进行认证 4.用IPSec ESP报头对数据报的加密部分进行解密 5.处理UDP报头并将数据报提交给L2TP协议

6.L2TP协议依据L2TP报头中Tunnel ID和Call ID分解出某条特定的L2TP隧道

7.依据PPP报头分解出PPP有效载荷,并将它转发至相关的协议驱动程序做进一步处理

四、基于IPSec的L2TP数据包和Windows 2000网络体系结构

下图描述了某使用modem进行远程访问的VPN连接中,VPN客户机端L2TP数据包在Windows 2000网络体系结构中的封装流程。

图三、L2TP数据包的封装流程 具体步骤如下:

1.IP数据报、IPX数据报或NetBEUI帧由各自协议提交给对应于VPN连接的虚拟接口。该接口符合网络驱动程序接口规范NDIS。

2.NDIS将数据报提交给NDISWAN,NDISWAN可选择对数据进行压缩处理后,添加PPP报头进行第一步封装。该PPP报头仅含一个PPP协议 标识域,不附加任何帧校正序列FCS或其他标记。

3.NDISWAN将PPP帧提交给L2TP协议驱动程序,该驱动程序负责在PPP帧外添加L2TP报头进行第二步封装。在L2TP报头中,Tunnel ID和Call ID的组合标识了一条隧道。

4.L2TP协议驱动程序再将封装后的数据报提交给TCP/IP协议驱动程序,并告之驱动程序,将L2TP数据报作为UDP消息发送,两端UDP端口号均 为1701。 5.TCP/IP协议驱动程序对报文添加IP报头和UDP报头。然后由IPSec对报文进行分析,选择与之相匹配的安全策略,并在此安全策略的基础上,给 数据报的UDP消息部分添加相应的ESP报头、报尾,进行IPSec加密、封装。

完成IPSec封装后,将原先的IP报头中协议字段值设置为50,同时将该IP报头添加在ESP报文外。之后,TCP/IP协议驱动程序将结果报文提交给 拨往本地ISP的拨号连接接口,该接口符合网络驱动程序接口规范NDIS。 6.NDIS再次将数据报提交给NDISWAN。

7.由NDISWAN提供数据链路层PPP报头、报尾,并将最终形成的PPP帧提交给

与拨号硬件相对应的WAN微端口驱动程序。

我不刻原文在哪里了,请原谅!

[ 本帖最后由 QUSHIQIANG 于 2005-12-14 11:22 编辑 ] 图1.JPG (10.63 KB) 图1 图2.JPG (17.18 KB) 图2 图3.JPG (29.23 KB) 图3

因篇幅问题不能全部显示,请点此查看更多更全内容