收藏 分销(赏)

L2TP协议笔记.doc

上传人:pc****0 文档编号:7769667 上传时间:2025-01-16 格式:DOC 页数:20 大小:222.50KB 下载积分:10 金币
下载 相关 举报
L2TP协议笔记.doc_第1页
第1页 / 共20页
L2TP协议笔记.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
L2TP协议笔记---L2TP主要协议报文分析 窗体顶端 一、L2TP实现的两种方式 名词解释: LAC(L2TP Access Concentrator L2TP访问集中器)        是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备。LAC一般是一个网络接入服务器NAS,主要用于通过PSTN/ISDN网络为用户提供接入服务。 LNS(L2TP Network Server L2TP网络服务器)        是PPP端系统上用于处理L2TP协议服务器端部分的设备。 VPDN(Virtual Private Dial Network,虚拟私有拨号网)         指利用公共网络(如ISDN和PSTN)的拨号功能及接入网来实现虚拟专用网。   注:如下示例中使用的防火墙(Firewall,FW)既可以当做LAC也可以作为LNS使用。   1、PC直接拨号到LNS,组网如图1所示 图1  2、PC通过LAC拨号连接到LNS,组网如图2所示 图2          因为一般都使用用PC---LAC---LNS组网,且此种组网包含了PC---LNS的组网形态,故后续描述均已PC---LAC---LNS为例。         LAC位于LNS和主机之间,用于在LNS和主机之间传递信息包,把从主机收到的信息包按照L2TP协议进行封装并送往LNS,将从LNS收到的信息包进行解封装并送往远端系统。LAC与主机之间可以采用本地连接或PPP链路,VPDN应用中通常为PPP链路。LNS作为L2TP隧道的另一侧端点,是LAC的对端设备,是被LAC进行隧道传输的PPP会话的逻辑终止端点。 二、L2TP封装位置分析        如下图3所示,从图中至上而下的分析,为PC的报文在PPP内网环境中发送到LAC,由LAC封装L2TP,再通过外网的报文正常转发给LNS的报文封装过程。   注:设计的网络环境为PC---LAC为内网使用PPP协议,LAC---LNS为外网使用协议由服务供应商自定。 图3  三、理解L2TP几个重要的概念   1、隧道和会话的概念           在一个LNS和LAC对之间存在着两种类型的连接,一种是隧道(Tunnel)连接,一对LAC和LNS中可以有多个L2TP隧道;另一种是会话(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。         隧道由一个控制连接和一个或多个会话(Session)组成。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。 · L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,该隧道连接将被断开。 · L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。          隧道(tunnel)和会话(session)的关系,如图4所示;可以形象的理解为会话是建立在隧道之中的,隧道想成一个有10个车道的高速公路,一台拨号PC的数据流为一个会话,相当于占用了一个车道(告诉公路有多少车道是设备规定好的),这个车道只能跑这个运载这个PC的报文的卡车。(比如某型号设备每条隧道最多支持1000个会话)。 图4   2、控制消息和数据消息的概念     L2TP中存在两种消息:控制消息和数据消息。 ·  控制消息:用于隧道和会话连接的建立、维护以及传输控制;控制消息的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制。   · 数据消息:用于封装PPP帧并在隧道上传输;数据消息的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。    控制消息和数据消息共享相同的报文头。    四、L2TP隧道的呼叫建立流程  1、L2TP隧道的呼叫建立流程 图5 (1) 用户端PC机发起呼叫连接请求; (2) PC机和LAC端进行PPP LCP协商; (3) LAC对PC机提供的用户信息进行PAP或CHAP认证; (4) LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证; (5) RADIUS服务器认证该用户,如果认证通过则返回该用户对应的LNS地址等相关信息,并且LAC准备发起Tunnel连接请求; (6) LAC端向指定LNS发起Tunnel连接请求; (7) LAC端向指定LNS发送CHAP challenge信息,LNS回送该challenge响应消息CHAP response,并发送LNS侧的CHAP challenge,LAC返回该challenge的响应消息CHAP response; (8) 隧道验证通过; (9) LAC端将用户CHAP response、response identifier和PPP协商参数传送给LNS; (10) LNS将接入请求信息发送给RADIUS服务器进行认证; (11) RADIUS服务器认证该请求信息,如果认证通过则返回响应信息; (12) 若用户在LNS侧配置强制本端CHAP认证,则LNS对用户进行认证,发送CHAP challenge,用户侧回应CHAP response; (13) LNS再次将接入请求信息发送给RADIUS服务器进行认证; (14) RADIUS服务器认证该请求信息,如果认证通过则返回响应信息; (15) 验证通过,用户访问企业内部资源。 注:此节如下附加内容涉及到报文协商,前面没有介绍,可以先了解L2TP笔记2中关于报文格式与协商的相关内容,再回头深入分析此节,此节放在这里是为了便于对于整体协商过程进行深入分析。  附加:2、针对流程中步骤7、步骤12的Challenge验证过程的分析  (1)LAC向LNS发SCCRQ请求消息时,会产生一个随机的字符串做为本端CHAP Challenge发给LNS。 (2)LNS收到这个Challenge后,再加上本端配置的密码及SCCRP产生一个新的字符串,用MD5算出一个16个字节的Response,在SCCRP消息中发给LAC。    同时也产生一个随机的字符串(LNS Challenge)放在SCCRP中一起发给LAC。 (3)LAC将自己的CHAP Challenge加上本端配置的密码,再加上SCCRP产生一个新字符串,用MD5算出一个16字节的字符串,并与LNS发来的SCCRP中带的LNS CHAP Response比较,相同通过,不同断掉。 (4)同理LNS也要验证LAC,LAC用在SCCRP中发现的LNS CHAP Challenge加上本端密码和SCCCN组合,再用MD5算出一个16字节的字符串做为LAC CHAP Response在SCCCN中发给LNS。 (5)LNS用自己发的Challenge+本端密码+SCCCN用MD5算出一个16字节字符串,与收到的作比较,相同通过,不同断掉。 附加:3、LAC代LNS与PC协商LCP(即认证代理)和用于认证的AVPS 正常用户认证方式:         当LAC检测到有用户拨入电话的时候,向LNS发送ICRQ,请求在已经建立的tunnel中开始session的建立,LAC可以一直等到接收到了LNS回应的ICRP后,表明session可以建立的时候再回答远端(拨号用户)的呼叫,这样LNS可获得足够的信息来决定是否回答这个远端的呼叫。   LAC代LNS与PC协商LCP(即认证代理):         LAC在接收到ICRP之前,自行先回答远端(拨号用户)的呼叫,代替LNS与其进行LCP协商和PPP认证,用获得的信息来决定选择哪个LNS(此处对应流程图中步骤5),这种情况下LAC对呼叫的指示和呼叫的回答只是哄骗性质的。在session可以建立时,LAC向LNS发送ICCN时会携带着先前与呼叫用户进行的LCP协商和PPP认证涉及的特性信息(此处对应流程图中步骤9),包含这些信息的AVP如下: ①Inital Received LCP CONFREQ(ICCN\属性26):为LNS提供LAC从PPP对端(即拨号用户)接收到初始的conf-request。 ②Last Sent LCP CONFREQ(ICCN\属性27):提供LAC发送到PPP对端最后的conf-request。 ③Last Received LCP CONFREQ(ICCN\属性28):提供LAC从PPP对端接收到的最后的conf-request。 ④Proxy Authen Type(ICCN\属性29):标识是否使用验证代理,验证的类型 0---Reserved                       1---Textual username/password exchange 2---PPP CHAP                     3---PPP PAP 4---No Authentication        5---Microsoft CHAP Version 1(MSCHAPv1) ⑤Proxy Authen Name(ICCN\属性30):验证时客户端响应的名称。 ⑥Proxy Authen Challenge(ICCN\属性31):LAC发送到PPP对端的Challenge。 ⑦Proxy Authen ID(ICCN\属性32):为LAC和PPP对端的验证定了一个ID。 ⑧Proxy Authen Response(ICCN\属性33):LAC从PPP对端接收到的PPP Authentication Response。  五、L2TP的Tunnel和Session建立过程  ① 1(SCCRQ)Start-Control-Connection-Request       控制链接发起请求,由LAC或LNS向对端发送,用来初始化LAC和LNS之间的tunnel,开始tunnel的建立过程。 ②  2(SCCRP)Strat-Control-Connection-Reply       表示接受了对端的连接请求,tunnel的建立过程可以继续。 ③  3(SCCCN)Start-Control-Connection-Connected        对SCRRP的回应,完成tunnel的建立。 ④  ZLB 零长度消息报文,一般为查询报文,LAC可以用Hello报文进行恢复,也可以直接丢弃。 ⑤ 10(ICRQ)Incoming-Call-Request 当LAC检测到有用户拨入电话的时候,向LNS发ICRQ,请求在已建立的tunnel中建立session。 ⑥  11(ICRP)Incoming-Call-Reply       用来回应ICRQ,表示ICRQ成功,LNS也会在ICRP中标识L2TP session必要的参数。 ⑦  12(ICCN)Incoming-Call-Connected       用来回应ICRP,L2TP session建立完成。  六、其它主要控制消息了解 控制报文: 0(reserved)                        1(SCCRQ)                        2(SCCRP)                        3(SCCCN)                        4(STOPCCN)Stop-Control-Connection-Notification                        由LAC或LNS发出,通知对端tunnel将要停止,控制链接将要关闭。另外,所有活动的会话都会悄悄的被清除,原因会显示在Result Code AVP中。                        5(reserved)                        6(HELLO)  会话报文:                         8(OCRP)Outgoing-Call-Reply                         9(OCCN)Outgoing-Call-Connected                         10(ICRQ)                         11(ICRP)                         12(ICCN)                         13(reserved)                         14(CDN)Call-Disconnect-Notify                         由LAC或LNS发出,通知对端session将要停止。   错误报告报文:15(WEN)WAN-Error-Notify  PPP链接控制报文:16(SLI)Set-Link-Info 7(OCRQ)Outgoing-Call-Request                                       LNS发向LAC用来设置PPP协商的选项,这些选项在call的生存周期中可以随时变化,因此LAC有能力在活动的PPP session上更新内部的呼叫信息和行为。  七、L2TP报文头格式  Type(T):标识消息的类型,0表示是数据消息,1表示控制消息。 Length(L):置1时,说明Length域的值是存在的,对于控制消息L位必须置1。 X bit:保留位,所有保留位均置0。 Sequence(S):置1时,说明Ns和Nr是存在的,对于控制消息S必须置1。 Offset(O):置1时,说明Offset Size域是存在的,对于控制消息O必须置0。 Priority(P):只用于数据消息,对于控制消息P位置0,当数据消息此位置1时,说明该消息在本列队和传输时应得到优先处理。 Ver:必须是2,表示L2TP数据报头的版本。 Length:标识整个报文的长度(以字节为单位)。  Tunnel ID:标识L2TP控制链接,L2TP Tunnel标识符只有本地意义,一个Tunnel两端被分配的Tunnel ID可能会不同,报头中的Tunnel是指接收方的Tunnel ID,而不是发送方的。本端的Tunnel ID在创建Tunnel时分配。通过Tunnel ID AVPs和对端交换Tunnel ID信息。 Session ID:标识Tunnel中的一个session,只有本地意义,一个session两端Session ID可能不同。 Ns:标识发送数据或控制消息的序号,从0开始,以1递增,到216再从0开始。 Nr:标识下一个期望接收到的控制消息。Nr的值设置成上一个接收到的控制消息的Ns+1。这样是对上一个接收到的控制消息的确认。数据消息忽略Nr。 Offset Size:如果值存在的话,标识有效载荷数据的偏移。  八、 AVP介绍及其格式  1、AVP介绍     控制消息中要携带的相关参数,使用AVP(Attribute Value Pair,属性值对)的形式来表示,使协议具有很好的扩展性。  2、AVP格式 ● 开始的6个bit是一个位掩码,用来描述AVP的普通属性,RFC2661定义了前2位,其余被保留。 ● (M)命令位:用来控制收到不认识的AVP时必须执行的动作。如果在一个关联特殊的会话消息中M位被置为不认识的AVP,这个会话一定会被终止。如果在一个关联全部通道的消息中M位被置为不认识的AVP,整个通道包括通道内的会话一定会被终止。如果M为没有被设置,这个不认识的AVP会被忽略掉。  ● (H)隐藏位:用来识别一个AVP的属性域里的隐藏数据。  ● 保留位一定要置0,收到一个保留位为1的AVP,会把收到的AVP当做不认识。 九、部分主要AVP含义  (1)   Control Connection Management AVP (2)   Protocol Version AVP :标识L2TP协议的版本。 (3)   Framing Capabilities AVP :倒数第二bit位A置1,标识支持帧异步;倒数第二bit位S置1,标识支持帧同步。 (4)   Beaer Capabilities AVP : (5)   Tie Breaker AVP 标识发送者希望在LAC和LNS之间只存在一个tunnel;如果LAC和LNS同时都发起了SCCRQ,那么需要选择一个单一的tunnel。接收到SCCRQ端检查自己是不是向对端发送了SCCRQ,如果已经发送了,就比较Tie Breaker值的大小,值小的继续tunnel建立,值大的必须放弃tunnel。如果两个值相等,都放弃。 (6)   Host name AVP :标识发送端的主机名称。 (7)   Assigned Tunnel ID :本端(发送端)分配的tunnel ID。 (8)   Receive Window Size : 标识接收窗口的大小:如果没有发送这个AVP,对端必须假设接收窗口是4,远端在发送指定数量的控制消息后,必须等待对方确认。 (9)   Challenge :标识发送端希望对tunnel对端进行CHAP认证。 (10) Challenge Response :对接收到Challenge的响应。 (11) Assigned Session ID : 本端分配的Session ID,当LAC检测到用户呼叫的时候,向LNS发送ICRQ,请求在已经 存在的tunnel中建立session链接,LAC在本端为需要建立的session分配一个session ID,这个session ID只具有本地意义。LNS接收ICRQ后回应ICRP,在ICRP中也包含了LNS为这个session分配的一个具有本地意义的session ID。通过ICRQ和ICRP,本地就可以获得对端为这条session分配的session ID了。 注意:在L2TP包头中的session ID是指对端对session分配的session ID。 (12)Minimum BPS :标识呼叫链接可接受的最低的连接速率。 (13)Maximum BPS :标识呼叫链接可接受的最高的连接速率。 (14)Bearer Type :标识呼叫连接的是模拟信道还是数字信道。 (15)Framing Type :标识支持帧同步还是帧异步,如果A和S都置位说明都支持或者是不清除。 (16)Called Number :被呼叫方的电话号码。 (17)Calling Number :呼叫方的电话号码。 (18)Rx Connect Speed :LAC的接收速率,可能和发送速率是不对称的。 (19)Private Group ID :LAC用来标识客户属于某个特定的组织。 十 基于华为系设备的L2TP配置 一、PC直连LNS配置 1、 配置LNS链接PC的接口Ethernet 2/0/0的IP地址 [FW2] interface Ethernet 2/0/0 [FW2-Ethernet2/0/0] ip address 192.168.1.1  24   2、把Ethernet 2/0/0加入untrust域中(实际加到那个域中根据自己的需求决定)  [FW2] firewall zone untrust [FW2-zone-untrust] add interface Ethernet2/0/0  3、设置域间的包过滤(此处以允许全部包过滤为例,实际根据需求决定) [FW2] firewall packet-filter default permit all  4、配置本地用户及为用户分配地址用的地址池(此处只建立一个用户为例) [FW2] aaa [FW2-aaa] local-user user1 password simple password1 [FW2-aaa] local-user user1 service-type ppp [FW2-aaa] ip pool 1 192.168.1.2 192.168.1.100  5、配置虚拟接口模板(简称VT,主要就是配置一些作为L2TP拨号网关的内容) [FW2] interface Virtual-Template 1 [FW2-Virtual-Template1] ppp authentication-mode chap      //PPP认证方式,可以试PAP或CHAP [FW2-Virtual-Template1] ip address 192.168.1.1 24   //ip地址,即用户拨号后,分配的网关地址 [FW2-Virtual-Template1] remote address pool 1   //指定给用户分配地址的地址池,刚刚在aaa中建立的  6、把虚拟接口模板VT1加入到trust域 [FW2] firewall zone trust [FW2-zone-trust] add interface virtual-template 1  7、打开防火墙的L2TP功能 [FW2]L2TP enable  8、创建L2TP组并绑定VT1 [FW2] l2tp-group 1 [FW2-l2tp1]allow  l2tp  virtual-template  1  remote name 注:(1) name:为PC时为PC名                (2) 使用组1时可以不写retome名字,其它组必须写 [FW2-l2tp1]undo tunnel authentication    //关闭tunnel认证(默认开启),当然也可以开启,在后续LAC-LNS模式中使用隧道认证为例  9、VPN Client(PC上使用的L2TP拨号客户端,也可用系统自带的) 当FW使用group1且没设置remote name时,主机客户端上不写隧道名称,当group1设置了remote name时,或使用其他group时(除1以外的任何组均必须写remote name),客户端上必须设置隧道名称为主机名。   二、PC---LAC---LNS配置   LAC端配置(前提是PC---LAC---LNS之间的基本通信可以保证(包括基本的路由),即可以ping通) 1、 配置链接主机的接口IP(LAC与LNS之间的通信已实现,相关的接口IP、加入的域等配置此处不再说明)  [FW1] interface Ethernet 2/0/0 [FW1-Ethernet2/0/0] ip address 192.168.1.1  24  2、把Ethernet 2/0/0加入untrust域中(实际加到那个域中根据自己的需求决定)  [FW1] firewall zone untrust [FW1-zone-untrust] add interface Ethernet2/0/0  3、设置域间的包过滤(此处以允许全部包过滤为例,实际根据需求决定) [FW1] firewall packet-filter default permit all  4、配置本地用户(此处只建立一个用户为例) [FW1] aaa [FW1-aaa] local-user user1 password simple password1 [FW1-aaa] local-user user1 service-type ppp  5、配置虚拟接口模板(简称VT,主要就是配置一些作为L2TP拨号网关的内容) [FW1] interface Virtual-Template 1 [FW1-Virtual-Template1] ppp authentication-mode chap      //PPP认证方式,可以试PAP或CHAP  6、把虚拟接口模板VT1加入到trust域(不加入域也可以建立L2TP,但业务是不通的) [FW1] firewall zone trust [FW1-zone-trust] add interface virtual-template 1  7、链接主机的接口的虚拟模板VT1上使能PPPoE(实际上LAC此接口可以不配置IP,只要主机上有缺省路由到此设备即可) [FW1-Ethernet2/0/0] pppoe-server bind virtual-template 1  8、打开防火墙的L2TP功能 [FW1]L2TP enable  9、l2tp组配置 [FW1] l2tp-group 1 [FW1-l2tp1] Start l2tp ip 3.2.1.1 fullname pc1 //配置对端LNS地址,鉴别用户是否是VPN用户,此处也可以指定域名,指定域名后,此域中的用户都会触发L2TP隧道建立 [FW1-l2tp1] Tunnel   authentication          //启动隧道认证 [FW1-l2tp1] Tunnel  password simple hello    //设置l2tp隧道认证密码,与LNS端一致 [FW1-l2tp1] Tunnel  name  lac    //设置隧道名,与LNS端设置的通道对端名一致  LNS端配置 1、LAC与LNS之间的通信已实现,相关的接口IP、加入的域等配置此处不再说明 2、设置域间的包过滤(此处以允许全部包过滤为例,实际根据需求决定) [FW1] firewall packet-filter default permit all  3、配置本地用户及为用户分配地址用的地址池(此处只建立一个用户为例) [FW2] aaa [FW2-aaa] local-user user1 password simple password1   //用户与lac中相同 [FW2-aaa] local-user user1 service-type ppp [FW2- aaa] ip pool 1 192.168.1.2 192.168.1.100  4、配置虚拟接口模板(简称VT,主要就是配置一些作为L2TP拨号网关的内容) [FW2] interface Virtual-Template 1 [FW2-Virtual-Template1] ppp authentication -mode chap      //可选,PPP认证方式,可以试PAP或CHAP,与强制LCP重协商结合使用 [FW2-Virtual-Template1] mandatory-lcp  //可选,强制本端CHAP验证,使PC在L2TP拨号过程中,在LNS处再次CHAP认证。 [FW2-Virtual-Template1] mandatory-chap  //可选,使PC在L2TP拨号过程中,在LNS处再次以LNS VT中指定的chap或pap进行一次认证。 注: (1) LNS如果以上两种均没配置,则使用代理认证,即LAC将它从用户得到的所有验证信息和LAC配置的验证方式传给LNS,LNS会利用这些信息和LAC端传来的验证方式对用户进行验证,并不是不验证了。 (2)代理认证和VT上配置的验证方式也存在关系,如果LAC发过来的验证方式是PAP,而LNS得VT上位CHAP,此时会认证不通过(PPP认为这样不合理)。 [FW2-Virtual-Template1] ip address 192.168.1.1 24   //ip地址,即用户拨号后,分配的网关地址 [FW2-Virtual-Template1] remote address pool 1   //指定给用户分配地址的地址池,刚刚在aaa中建立的 注:此地址池只为非域用户指定地址,域用户不需要此命令,FW会自动从域中的地址池按顺序分配地址  5、打开防火墙的L2TP功能 [FW2]L2TP enable   6、 l2tp组配置 [FW2]l2tp-group 1 [FW2-l2tp1] allow l2tp virtual-template 1 [remote lac]         //指定接收呼叫时隧道对端的名字(与LAC端配置的隧道名称对应)和使用的VT [FW2-l2tp1] Tunnel   authentication          //启动隧道认证  [FW2-l2tp1] Tunnel  password simple hello    //设置l2tp隧道认证密码,与LAC端一致 [FW2-l2tp1] Tunnel  name  lns   //设置隧道名,只用作显示用
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服