Archive

标签为 ‘L2TP’的文章

L2TP – Radius 认证

在之前的总结中整理过L2TP的两种模式,一个是有LAC,另一个无LAC,详细看《L2TP两种部署方法简述》。在这里,将对L2TP认证这块做详细总结,不过此文只总结LNS的认证(LAC认证类似),而且是通过AAA服务器。

AAA服务器

常见的AAA协议主要分两种,一种是思科专有的TACACS;另一种就是Radius。思科通过ACS服务器支持两种AAA协议,而Radius,根据不同厂商而不同,常见的有freeradius和daloradius。RAdius使用了两套UDP端口:
http://en.wikipedia.org/wiki/RADIUS
1. 1812 for Authentication and 1813 for Accounting that provide by IANA
2. ports 1645 and 1646 (authentication and accounting) were used unofficially in past
传统的1645和1646仍然有客户端在用,所以为了向后兼容,Radius会监控这两套端口。

Daloradius

这个是集成了mysql和php的web客户端,很方便。有两种安装方式,一种是OVA文件,直接用vmware导入既可以用,里面是bundle好的;另一种就是在linux里单独安装daloradius,php和mysql。第二种方法太麻烦,没有使用过,第一种试过,但是遇到了一些问题,不知道为什么不能使用admin账户,为了这个还特意在网上发了帖子,但是暂时没人理:
https://sourceforge.net/p/daloradius/discussion/684102/thread/487fe3b8/

不过在使用中,发现了一些比较有价值的关于VMware的一些技巧:

完整阅读

L2TP – LAC客户端测试分析

Topology

PC—-ISP—-[f0/0]LNS[ server]
本篇仅关注测试,LAC客户端的更多内容,可以看上一篇简述《L2TP两种部署方法简述

你在用PC的L2TP客户端拨号时,要注意Ipsec加密,默认需要修改注册表以关闭Ipsec加密。可以参考官方信息:《Disabling IPSEC Policy Used with L2TP》。如果关闭了Ipsec,那么PC会直接发出L2TP的SCCRQ,但这时如果LNS上配置“l2tp security crypto-profile CCIE”,报以下下错误后断开连接:
“Ignoring SCCRQ, tunnel from “frank” requires security, however the SCCRQ was received unprotected”去掉Ipsec配置后,PC能正常拨入并获得地址,配置跟LAC独立客户端里的LNS差不多。另外在PC上既然已经通过注册表关闭了Ipsec,那么在PC的L2TP拨号的属性配置中,关于Ipsec的相关认证就没有用了,可以忽略掉。如果不修改注册表,那么PC用L2TP拨号时会先协商Ipsec,Ipsec tunnel建立后,再协商L2TP。本文主要测试当PC不修改注册表,也就是开启L2TP/Ipsec时的L2TP拨号过程。我的测试系统是Windows8,其他系统是否默认开启L2TP/Ipsec,请自行确认。另外思科设备跟windows启动L2TP/Ipsec时,仅支持透明模式通道。下面是最初配置,后面跟着TS过程及最终配置,希望能帮助其他人解决问题。

LNS最初配置

完整阅读

L2TP – 独立LAC测试分析

Topology

PC——[f0/0]LAC[f1/0]——ISP——[f1/0]LNS[ server]
本篇仅关注测试,独立LAC的更多说明,可以看上一篇简述《L2TP两种部署方法简述

LAC配置及相关信息

hostname R1-LAC
!—在l2tp拨号中,hostname其实没有什么作用
!
no aaa new-model
!—在独立LAC中,不用开AAA,关于PPPOE的认证方式,可能需要跟AAA配合,此处不做过多介绍
!
vpdn enable
!—开启VPDN
完整阅读

L2TP两种部署方法简述及Radius认证

关于L2TP,一直想找个时间好好总结下,最近同事正好遇到一个问题,所以把整个L2TP的内容研究了下,总算搞的清楚些了。虽然网上L2TP的文档很多,但感觉都不是非常详细。对于L2TP,有两个关键组件,一个是LAC,另一个就是LNS。常说的tunnel是LAC与LNS建立的。两个组件都可以提供认证,在LAC上的认证主要区分客户去那个tunnel,而LNS的认证是验证用户的合法性。对于L2TP的拨号方式,也分两种,一种是独立LAC,另一种是LAC客户端直接连LNS。

独立LAC + Lab

独立LAC模式在国内很少部署,因为此模式需要和运营商配合,而这这种模式主要考虑电话线路,直接提供VPN拨号。此拨号有别于国内的PPPOE,国内的PPPOE仅仅提供了宽带服务,而这里说的独立LAC,PPPOE终结在BRAS后,会向指定的LNS建立tunnel,直接把用户通过tunnel路由到相应的VPN网络中。国内的BRAS其实可以实现LAC,只不过没有这样部署而已。

简单的独立LAC Topology:

PC—-LAC—ISP—LNS—Server

PC建立PPPOE的拨号,LAC仅作第一次认证找到相应的tunnel并终结PPPOE,而PPP终结在LNS中。拨号建立后,PC只知道Server的地址,对于ISP是透明的。
具体的测试内容,可以看我这篇总结:《L2TP – 独立LAC测试分析

2013-5-16 更新:路由模拟PC拨号
在某些情况下,不方便直接连PC拨号,索性直接用路由器拨号,那么路由器怎么拨号呢?根据网上的大部分配置,基本都是路由器用serial口封装PPP拨号,这个很好理解。那么如果现实没有V35线又想拿真实设备做实验,怎么办呢?只要是PPP不就ok了么,那么就用PPPOE吧,其实路由器很容易实现,只是类似的配置模板比较少,下面是配置:

bba-group pppoe global
!
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet3/0
 no ip address
 duplex full
 pppoe enable group global
 pppoe-client dial-pool-number 1
!
interface Dialer1
 mtu 1492
 ip address negotiated
 encapsulation ppp
 dialer pool 1
 ppp chap hostname test@cisco.com ppp chap password 0 test

所有相关的PPPOE拨号属性都在Dialer里配置,另外此处直接用bba-group feature,全局PPPOE的属性可以在这下面配置。配上这个后,他会自动出发并发送PPPOE报文。老的配置中,PPPOE是借用VPDN的拨号方式来实现的,现在已经不用了,只有在L2TP时才会用到VPDN的拨号命令。

LAC客户端 + Lab

在日常应用中,大多数都是采用LAC客户端(此时PC就集成了LAC的角色)直接连LNS。这种方式的前提是LNS的地址可路由,相当于先获得internet访问,再进行L2TP拨号。

简单的LAC客户端Topology:

PC—ISP—LNS—Server

在这种环境下,PC可以到达ISP上其他的网络,包括LNS。所以此时PC会建立L2TP拨号,拨号里面的地址就是LNS的地址,此时PC相当于LAC的角色。
具体的测试内容,可以看我这篇总结:《L2TP – LAC客户端测试分析

2014-1-16 更新:
“Requester is not authorized to establish a control channel”

在LAC客户端测试分析中,我用到了这条命令:”no l2tp tunnel authentication”,当时也是测试很长时间,查了很多资料才发现的,由于PC上没有tunnel的认证,所以需要关闭他。在有LAC的情况下,是需要tunnel认证的,但是如果不需要,常见的手法是去掉”l2tp tunnel password 0 cisco”,看上去没什么问题,因为已经不配置password了,但事实上他仍然需要去认证,由于没有password,认证一直失败,并一直报错(ASR1k的debug):

L2TP tnl   0803D:00004297: Requester is not authorized to establish a control channel

下面是抓包信息:

No. Source           Destination     Protocol Length Info                                                           
1   10.10.10.1       10.10.10.2      L2TP     187    Control Message - SCCRQ (tunnel id=0, session id=0)
2   10.10.10.2       10.10.10.1      L2TP     188    Control Message - SCCRP (tunnel id=3, session id=0)  
3   10.10.10.1       10.10.10.2      L2TP     106    Control Message - StopCCN (tunnel id=28305, session id=0)
4   10.10.10.2       10.10.10.1      L2TP     54     Control Message - ZLB      (tunnel id=3, session id=0)

Frame 3: 106 bytes on wire (848 bits), 106 bytes captured (848 bits)
Ethernet II, Src: Cisco_40:35:79 (68:bd:ab:40:35:79), Dst: Cisco_72:bb:11 (00:22:55:72:bb:11)
Internet Protocol Version 4, Src: 10.10.10.1 (10.10.10.1), Dst: 10.10.10.2 (10.10.10.2)
User Datagram Protocol, Src Port: l2f (1701), Dst Port: l2f (1701)
Layer 2 Tunneling Protocol
    Packet Type: Control Message Tunnel Id=28305 Session Id=0
    Length: 64
    Tunnel ID: 28305
    Session ID: 0
    Ns: 1
    Nr: 1
    Control Message AVP
    Result-Error Code AVP
        1... .... .... .... = Mandatory: True
        .0.. .... .... .... = Hidden: False
        .... ..00 0010 0100 = Length: 36
        Vendor ID: Reserved (0)
        Type: Result-Error Code (1)
        Result code: 4 - Requester is not authorized to establish a control connection
        Error code: 0 - No General Error
        Error Message: Invalid challenge response
    Assigned Tunnel ID AVP

所以两边都no掉认证才可以,如”no l2tp tunnel authentication”。

Radius认证 + Lab

根据L2tp的环境,AAA认证可以部署在多个环节,我对LNS环节认证做了总结。
具体的测试内容,可以看我这篇总结:《L2TP – 独立LAC测试分析

L2TP Establish Step

每次复习L2TP的东西,都要找总结中l2tp建立过程的link,实在是累,这次把建立过程的图放到这个汇总贴中,方便复习:
下面的图是从网上找到的,应该是CCO文档中的,算是逻辑的建立过程:
l2tp-topology-logic
为了更能方便理解每一步的详细过程,在另一篇文档中找到了这个图,结合上面的图,看后添加的标记:
注:摘自《Cisco ISG Design and Deployment Guide: ATM to ISG LNS Aggregation
l2tp-topology-pak