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建立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 [email protected] 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。所以此时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文档中的,算是逻辑的建立过程:
为了更能方便理解每一步的详细过程,在另一篇文档中找到了这个图,结合上面的图,看后添加的标记:
注:摘自《Cisco ISG Design and Deployment Guide: ATM to ISG LNS Aggregation》