03-L2TP配置
本章节下载: 03-L2TP配置 (512.27 KB)
L2TP(Layer 2 Tunneling Protocol,二层隧道协议)通过在公共网络(如Internet)上建立点到点的L2TP隧道,将PPP(Point-to-Point Protocol,点对点协议)数据帧封装后通过L2TP隧道传输,使得远端用户(如企业驻外机构和出差人员)利用PPP接入公共网络后,能够通过L2TP隧道与企业内部网络通信,访问企业内部网络资源,从而为远端用户接入私有的企业网络提供了一种安全、经济且有效的方式。
图1-1 L2TP典型组网
如图1-1所示,L2TP的典型组网中包括以下三个部分:
· 远端系统
远端系统是要接入企业内部网络的远端用户和远端分支机构,通常是一个拨号用户的主机或私有网络中的一台设备。
· LAC(L2TP Access Concentrator,L2TP访问集中器)
LAC是具有PPP和L2TP协议处理能力的设备,通常是一个当地ISP的NAS(Network Access Server,网络接入服务器),主要用于为PPP类型的用户提供接入服务。
LAC作为L2TP隧道的端点,位于LNS和远端系统之间,用于在LNS和远端系统之间传递报文。它把从远端系统收到的报文按照L2TP协议进行封装并送往LNS,同时也将从LNS收到的报文进行解封装并送往远端系统。
· LNS(L2TP Network Server,L2TP网络服务器)
LNS是具有PPP和L2TP协议处理能力的设备,通常位于企业内部网络的边缘。
LNS作为L2TP隧道的另一侧端点,是LAC通过隧道传输的PPP会话的逻辑终点。L2TP通过在公共网络中建立L2TP隧道,将远端系统的PPP连接由原来的NAS延伸到了企业内部网络的LNS设备。
L2TP协议定义了两种消息:
· 控制消息:用于L2TP隧道和L2TP会话的建立、维护和拆除。控制消息的传输是可靠的,并且支持流量控制和拥塞控制。
· 数据消息:用于封装PPP帧,其格式如图1-2所示。数据消息的传输是不可靠的,若数据消息丢失,不予重传。数据消息支持流量控制,即支持对乱序的数据消息进行排序。
图1-2 L2TP数据消息格式
如图1-3所示,L2TP控制消息和L2TP数据消息均封装在UDP报文中。
图1-3 L2TP消息封装结构图
L2TP隧道是LAC和LNS之间的一条虚拟点到点连接。控制消息和数据消息都在L2TP隧道上传输。在同一对LAC和LNS之间可以建立多条L2TP隧道。每条隧道可以承载一个或多个L2TP会话。
L2TP会话复用在L2TP隧道之上,每个L2TP会话对应于一个PPP会话。当远端系统和LNS之间建立PPP会话时,LAC和LNS之间将建立与其对应的L2TP会话。属于该PPP会话的数据帧通过该L2TP会话所在的L2TP隧道传输。
L2TP隧道包括NAS-Initiated、Client-Initiated和LAC-Auto-Initiated三种模式。
如图1-4所示,Client-Initiated模式L2TP隧道的建立直接由LAC client(指本地支持L2TP协议的远端系统)发起。LAC client具有公网地址,并能够通过Internet与LNS通信后,如果在LAC client上触发L2TP拨号,则LAC client直接向LNS发起L2TP隧道建立请求,无需经过LAC设备建立隧道。
图1-4 Client-Initiated模式L2TP隧道示意图
Client-Initiated模式L2TP隧道具有如下特点:
· L2TP隧道在远端系统和LNS之间建立,具有较高的安全性。
· Client-Initiated模式L2TP隧道对远端系统要求较高(远端系统必须是支持L2TP协议的LAC client,且能够与LNS通信),因此它的扩展性较差。
如图1-5所示,Client-Initiated模式L2TP隧道的建立过程与NAS-Initiated模式类似,此处不再赘述。
图1-5 Client-Initiated模式L2TP隧道的建立流程
采用NAS-Initiated方式建立L2TP隧道时,要求远端系统必须通过PPPoE等拨号方式拨入LAC,且只有远端系统拨入LAC后,才能触发LAC向LNS发起建立隧道的请求。
如图1-6所示,在LAC-Auto-Initiated模式下,不需要远端系统拨号触发,在LAC上通过执行l2tp-auto-client命令即可触发LAC建立L2TP隧道。远端系统访问LNS连接的内部网络时,LAC将通过L2TP隧道转发这些访问数据。
图1-6 LAC-Auto-Initiated模式L2TP隧道示意图
LAC-Auto-Initiated模式L2TP隧道具有如下特点:
· 远端系统和LAC之间可以是任何基于IP的连接,不局限于拨号连接。
· 不需要远端系统上的拨号接入来触发建立L2TP隧道。
· L2TP隧道创建成功后立即建立L2TP会话,然后在LAC和LNS之间进行PPP协商,LAC和LNS分别作为PPP客户端和PPP服务器端。
· LNS为LAC分配企业网内部的IP地址,而不是为远端系统分配。
如图1-7所示,LAC-Auto-Initiated模式L2TP隧道的建立过程与NAS-Initiated模式类似,此处不再赘述。
图1-7 LAC-Auto-Initiated模式L2TP隧道的建立流程
L2TP协议本身并不提供连接的安全性,但它可依赖于PPP提供的认证(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。
L2TP还可以与IPsec结合起来实现数据安全,使得通过L2TP所传输的数据更难被攻击。
L2TP传输PPP数据包,在PPP数据包内可以封装多种协议。
LAC和LNS可以将用户名和密码发往RADIUS服务器,由RADIUS服务器对用户身份进行认证。
LNS可以对远端系统的地址进行动态的分配和管理,可支持私有地址应用(RFC 1918)。为远端系统分配企业内部的私有地址,可以方便地址的管理并增加安全性。
可在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出/入包数、字节数以及连接的起始、结束时间等计费数据,AAA服务器可根据这些数据方便地进行网络计费。
L2TP协议支持备份LNS,当主LNS不可达之后,LAC可以与备份LNS建立连接,增加了L2TP服务的可靠性。
L2TP隧道采用NAS-Initiated模式时,LAC上的L2TP隧道属性可以通过RADIUS服务器来下发。此时,在LAC上只需开启L2TP服务,并配置采用AAA远程认证方式对PPP用户进行身份验证,无需进行其他L2TP配置。
当L2TP用户拨入LAC时,LAC作为RADIUS客户端将用户的身份信息发送给RADIUS服务器。RADIUS服务器对L2TP用户的身份进行验证。RADIUS服务器将验证结果返回给LAC,并将该用户对应的L2TP隧道属性下发给LAC。LAC根据下发的隧道属性,创建L2TP隧道和会话。
目前,RADIUS服务器可以为LAC下发的属性如表1-1所示。
表1-1 RADIUS服务器为LAC下发的属性列表
属性编号 |
属性名称 |
描述 |
64 |
Tunnel-Type |
隧道类型,目前只支持L2TP隧道类型 |
65 |
Tunnel-Medium-Type |
隧道的传输媒介类型,目前只支持IPv4 |
67 |
Tunnel-Server-Endpoint |
LNS的IP地址 |
69 |
Tunnel-Password |
隧道验证密钥 |
81 |
Tunnel-Private-Group-ID |
隧道的Group ID LAC将该值发送给LNS,以便LNS根据该值进行相应的处理 |
82 |
Tunnel-Assignment-ID |
隧道的Assignment ID 用来标识会话承载在哪条隧道上,具有相同Tunnel-Assignment-ID、Tunnel-Server_Endpoint和Tunnel-Password的L2TP用户共用同一条L2TP隧道 |
90 |
Tunnel-Client-Auth-ID |
隧道的名称 用来标识本端隧道 |
目前,仅支持通过RADIUS服务器下发一组L2TP隧道属性,不支持同时下发多组隧道属性。
如果既通过RADIUS服务器为LAC下发了隧道属性,又在LAC上通过命令行手工配置了隧道属性,则以RADIUS服务器下发的属性为准。
如图1-8所示,设备可以同时作为LNS和LAC,终结来自LAC的L2TP报文后,再将其通过L2TP隧道发送给最终的LNS,实现L2TP隧道的交换,即多跳L2TP隧道。同时作为LNS和LAC的设备称为LTS(L2TP Tunnel Switch,L2TP隧道交换)设备。
L2TP隧道交换功能具有如下作用:
· LAC和LNS位于不同的管理域时,可以简化LAC和LNS的配置与部署。所有的LAC都将LTS当作LNS,不需要感知网络中是否存在多个LNS,不需要区分LNS;所有LNS都将LTS当作LAC,不需要感知LAC的新增和删除。
· 不同用户可以共用LAC和LTS之间的L2TP隧道,由LTS将不同用户的数据分发给不同的LNS。
图1-8 L2TP隧道交换组网图
L2TP接入的EAD功能是指,在L2TP身份认证的基础之上,通过和安全策略服务器配合进一步对接入网络的用户终端强制实施企业安全策略,加强网络用户终端的主动防御能力,并严格控制终端用户的网络使用行为,保护网络安全。
具体流程如下:
(1) iNode客户端(即主机)通过L2TP接入到LNS设备,通过PPP认证后,CAMS/iMC服务器给设备下发隔离ACL,对报文进行入方向防火墙过滤;
(2) 通过IPCP协商后,CAMS/iMC服务器通过设备把自己的IP地址(该IP地址可以通过隔离ACL)等信息通知给iNode客户端;
(3) iNode客户端直接和CAMS/iMC服务器进行EAD认证和安全检查,通过安全检查后,CAMS/iMC服务器针对这个用户给设备下发安全ACL,使用户可以正常使用网络资源。
与L2TP相关的协议规范有:
· RFC 1661:The Point-to-Point Protocol (PPP)
· RFC 1918:Address Allocation for Private Internets
· RFC 2661:Layer Two Tunneling Protocol "L2TP"
· RFC 2868:RADIUS Attributes for Tunnel Protocol Support
配置L2TP时,需要执行以下操作:
(1) 根据实际组网环境,判断需要的网络设备。
¡ 对于NAS-Initiated和LAC-Auto-Initiated模式,需要配置LAC和LNS两台网络设备。
¡ 对于Client-Initiated模式,只需要配置LNS一台网络设备。
(2) 规划好设备在网络中的角色,然后分别进行LAC或LNS端的相关配置,使设备具有LAC或LNS端功能。
LAC端配置任务如下:
(1) 配置L2TP基本功能
(2) 配置LAC端
仅NAS-Initiated模式下为必选,LAC-Auto-Initiated模式下不建议配置。
¡ (可选)配置AVP数据的隐藏传输
仅NAS-Initiated模式下为必选,LAC-Auto-Initiated模式下不建议配置。
仅LAC-Auto-Initiated模式下为必选,NAS-Initiated模式下不建议配置。
¡ (可选)配置虚拟PPP接口的轮询功能
¡ (可选)恢复当前虚拟PPP接口的缺省配置
(3) (可选)配置L2TP公共参数
¡ 配置隧道验证
LNS端配置任务如下:
(1) 配置L2TP基本功能
(2) 配置LNS端
¡ 配置虚拟模板接口
¡ (可选)配置VA池
¡ (可选)配置LNS端的用户验证
¡ (可选)配置LNS端的AAA认证
¡ (可选)配置LNS端每秒能处理ICRQ报文的最大数目
(3) (可选)配置L2TP公共参数
¡ 配置隧道验证
(4) 配置基于L2TP接入的EAD功能
当需要在L2TP身份认证的基础之上,通过和安全策略服务器配合进一步对用户进行安全性检查时,需要配置本功能。
L2TP基本功能的配置包括如下内容:
· 启用L2TP功能:只有启用L2TP后,设备上的L2TP功能才能正常发挥作用。
· 创建L2TP组:L2TP组用于配置L2TP的相关参数,它不仅增加了L2TP配置的灵活性,还方便地实现了LAC和LNS之间一对一、一对多的组网应用。L2TP组在LAC和LNS上独立编号,只需要保证LAC和LNS之间关联的L2TP组的相关配置(如隧道对端名称、LNS地址等)保持对应关系即可。
· 配置隧道本端的名称:隧道本端的名称在LAC和LNS进行隧道协商时使用,它用来标识本端隧道,以供对端识别。
(1) 进入系统视图。
system-view
(2) 开启L2TP功能。
l2tp enable
缺省情况下,L2TP功能处于关闭状态。
(3) 创建L2TP组,指定L2TP组的模式,并进入L2TP组视图。
l2tp-group group-number mode { lac | lns }
在LAC端需要指定L2TP组的模式为lac;在LNS端需要指定L2TP组的模式为lns。
(4) 配置隧道本端的名称。
tunnel name name
缺省情况下,隧道本端的名称为设备的名称。
LAC端配置的隧道本端名称要与LNS端配置的允许接受的L2TP隧道请求的隧道对端名称保持一致。
本配置用来指定LAC向LNS发起隧道建立请求的触发条件。只有PPP用户的信息与指定的触发条件匹配时,LAC才认为该PPP用户为L2TP用户,向LNS发起L2TP隧道建立请求。
触发条件分为如下两种:
· 完整的用户名(fullusername):只有PPP用户的用户名与配置的完整用户名匹配时,才会向LNS发起L2TP隧道建立请求。
· 带特定域名的用户名(domain):PPP用户的ISP域名与配置的域名匹配时,即向LNS发起L2TP隧道建立请求。
(1) 进入系统视图。
system-view
(2) 进入LAC模式的L2TP组视图。
l2tp-group group-number [ mode lac ]
(3) 配置向LNS发起隧道建立请求的触发条件。
user { domain domain-name | fullusername user-name }
缺省情况下,没有指定本端作为LAC端时向LNS发起隧道建立请求的触发条件。
LAC上最多可以配置五个LNS地址,即允许存在备用LNS。LAC按照LNS配置的先后顺序依次向每个LNS发送建立L2TP隧道的请求。LAC接收到某个LNS的接受应答后,该LNS就作为隧道的对端;否则,LAC向下一个LNS发起隧道建立请求。
(1) 进入系统视图。
system-view
(2) 进入LAC模式的L2TP组视图。
l2tp-group group-number [ mode lac ]
(3) 配置LNS的IP地址。
lns-ip { ip-address }&<1-5>
缺省情况下,没有指定LNS的IP地址。
在LAC上配置了L2TP隧道的源端地址后,LAC会将该地址作为封装后L2TP隧道报文的源IP地址。
建议将L2TP隧道的源端地址配置为设备上某LoopBack接口的IP地址,以减小物理接口故障对L2TP业务造成的影响。但当LAC和LNS之间存在等价路由时,必须将L2TP隧道的源端地址通过source-ip命令配置或通过RADIUS服务器授权为设备上某LoopBack接口的IP地址。
(1) 进入系统视图。
system-view
(2) 进入LAC模式的L2TP组视图。
l2tp-group group-number [ mode lac ]
(3) 配置L2TP隧道的源端地址。
source-ip ip-address
缺省情况下,L2TP隧道的源端地址为本端隧道出接口的IP地址。
L2TP协议通过AVP(Attribute Value Pair,属性值对)来传输隧道协商参数、会话协商参数和用户认证信息等。如果用户不希望这些信息(如用户密码)被窃取,则可以使用本配置将AVP数据的传输方式配置成为隐藏传输,即利用隧道验证密钥(通过tunnel password命令配置)对AVP数据进行加密传输。
只有使能了隧道验证功能,本配置才会生效。隧道验证功能的详细配置,请参见“1.7.1 配置隧道验证”。
(1) 进入系统视图。
system-view
(2) 进入LAC模式的L2TP组视图。
l2tp-group group-number [ mode lac ]
(3) 配置隧道采用隐藏方式传输AVP数据。
tunnel avp-hidden
缺省情况下,隧道采用明文方式传输AVP数据。
本配置用来通过AAA对远端拨入用户的身份信息(用户名、密码)进行认证。用户身份认证通过后,LAC才能发起建立隧道的请求,否则不会为用户建立隧道。
设备支持的AAA认证包括本地和远程两种认证方式:
· 如果选择本地认证方式,则需要在LAC端配置本地用户名和密码。LAC通过检查拨入用户的用户名/密码是否与本地配置的用户名/密码相符来验证用户身份。
· 如果选择远程认证方式,则需要在RADIUS/HWTACACS服务器上配置用户名和密码。LAC将拨入用户的用户名和密码发往服务器,由服务器对用户身份进行认证。
AAA相关的配置请参见“安全配置指导”中的“AAA”。
配置LAC端的AAA认证时,接入用户的接口上需要配置PPP用户的验证方式为PAP或CHAP,配置方法请参见“二层技术-广域网接入配置指导”中的“PPP”。
(1) 进入系统视图。
system-view
(2) 创建虚拟PPP接口,并进入虚拟PPP接口视图。
interface virtual-ppp interface-number
(3) 配置虚拟PPP接口的IP地址或IP地址可协商属性。
¡ 配置虚拟PPP接口的IP地址。
ip address address mask
缺省情况下,未配置接口的IP地址。
¡ 配置虚拟PPP接口的IP地址可协商属性,使该接口接受PPP协商产生的由对端分配的IP地址。
ip address ppp-negotiate
缺省情况下,未配置接口的IP地址可协商属性。
(4) 配置PPP验证的被验证方。
通过ppp pap或ppp chap命令指定PPP用户支持的验证方法、PPP用户的用户名和密码,LNS对该PPP用户进行身份验证。配置方法请参见“二层技术-广域网接入命令参考”中的“PPP”。
(5) (可选)配置当前接口的描述信息。
description text
缺省情况下,接口的描述信息为“该接口的接口名 Interface”,比如:Virtual-PPP254 Interface。
(6) (可选)配置接口的MTU值。
mtu size
缺省情况下,虚拟PPP接口的MTU值为1500字节。
(7) (可选)配置接口的期望带宽。
bandwidth bandwidth-value
缺省情况下,接口的期望带宽=接口的波特率÷1000(kbit/s)。
(8) (可选)打开当前接口。
undo shutdown
缺省情况下,接口处于打开状态。
(9) 触发LAC自动建立L2TP隧道。
l2tp-auto-client l2tp-group group-number
缺省情况下,LAC没有建立L2TP隧道。
触发LAC建立L2TP隧道后,该隧道将始终存在,直到通过undo l2tp-auto-client或undo l2tp-group group-number命令拆除该隧道。
虚拟PPP接口使用轮询机制来确认链路状态是否正常。
虚拟PPP接口会周期性地向对端发送keepalive报文(可以通过timer-hold命令修改keepalive报文的发送周期)。如果接口在retry个(可以通过timer-hold retry命令修改该个数)keepalive周期内无法收到对端发来的keepalive报文,链路层会认为对端故障,上报链路层Down。
如果将keepalive报文的发送周期配置为0秒,则不发送keepalive报文。
在速率非常低的链路上,keepalive周期和retry值不能配置过小。因为在低速链路上,大报文可能会需要很长的时间才能传送完毕,这样就会延迟keepalive报文的发送与接收。而接口如果在retry个keepalive周期之后仍然无法收到对端的keepalive报文,它就会认为链路发生故障。如果keepalive报文被延迟的时间超过接口的这个限制,链路就会被认为发生故障而被关闭。
(1) 进入系统视图。
system-view
(2) 创建虚拟PPP接口,并进入虚拟PPP接口视图。
interface virtual-ppp interface-number
(3) 配置接口发送keepalive报文的周期。
timer-hold seconds
缺省情况下,接口发送keepalive报文的周期为10秒。
(4) 配置接口在多少个keepalive周期内没有收到keepalive报文的应答就拆除链路。
timer-hold retry retries
缺省情况下,接口在5个keepalive周期内没有收到keepalive报文的应答就拆除链路。
接口下的某些配置恢复到缺省情况后,会对设备上当前运行的业务产生影响。建议您在执行该命令前,完全了解其对网络产生的影响。
您可以在执行default命令后通过display this命令确认执行效果。对于未能成功恢复缺省的配置,建议您查阅相关功能的命令手册,手工执行恢复该配置缺省情况的命令。如果操作仍然不能成功,您可以通过设备的提示信息定位原因。
(1) 进入系统视图。
system-view
(2) 进入虚拟PPP接口视图。
interface virtual-ppp interface-number
(3) 恢复当前接口的缺省配置。
default
L2TP会话建立之后,LNS需要创建一个VA(Virtual Access,虚拟访问)接口用于和LAC交换数据。VA接口基于VT(Virtual Template,虚拟模板)接口上配置的参数动态创建。因此,配置LNS时需要首先创建VT接口,并配置该接口的参数。
VT接口的参数主要包括:
· 接口的IP地址
· 对PPP用户的验证方式
· LNS为PPP用户分配的IP地址
关于VT接口配置的详细介绍,请参见“二层技术-广域网接入配置指导”中的“PPP和MP”以及“三层技术-IP业务配置指导”中的“IP地址”。
VA池是在建立L2TP连接前事先创建的VA接口的集合。VA池可以用来解决大量用户同时上线/下线,无法及时创建/删除VA接口,以至于影响L2TP连接建立和拆除性能的问题。
创建VA池后,当需要创建VA接口时,直接从VA池中获取一个VA接口,加快了L2TP连接的建立速度。当用户下线后,直接把VA接口放入VA池中,不需要删除VA接口,加快了L2TP连接的拆除速度。当VA池中的VA接口耗光后,仍需在建立L2TP连接时再创建VA接口,在用户下线后删除VA接口。
每个虚拟模板接口只能关联一个VA池。如果想要修改使用的VA池的大小,只能先删除原来的配置,然后重新配置VA池。
创建/删除VA池需要花费一定的时间,请用户耐心等待。在VA池创建/删除过程中(还没创建/删除完成)允许用户上线/下线,但正在创建/删除的VA池不生效。
系统可能由于资源不足不能创建用户指定容量的VA池,用户可以通过display l2tp va-pool命令查看实际可用的VA池的容量以及VA池的状态。
VA池会占用较多的系统内存,请用户根据实际情况创建大小合适的VA池。
删除VA池时,如果已有在线用户使用该VA池中的VA接口,不会导致这些用户下线。
(1) 进入系统视图。
system-view
(2) 配置VA池。
l2tp virtual-template template-number va-pool va-volume
接收到LAC发来的隧道建立请求后,LNS需要检查LAC的隧道本端名称是否与本地配置的隧道对端名称相符合,从而决定是否与对端建立隧道,并确定创建VA接口时使用的VT接口。
(1) 进入系统视图。
system-view
(2) 进入LNS模式的L2TP组视图。
l2tp-group group-number [ mode lns ]
(3) 配置LNS接受来自指定LAC的隧道建立请求,并指定建立隧道时使用的虚拟模板接口。请选择其中一项进行配置。
¡ L2TP组号不为1。
allow l2tp virtual-template virtual-template-number remote remote-name
¡ L2TP组号为1。
allow l2tp virtual-template virtual-template-number [ remote remote-name ]
缺省情况下,LNS不接受任何LAC的隧道建立请求。
使用L2TP组号1时,可以不指定隧道对端名,即在组1下LNS可以接受任何名称的隧道对端的隧道建立请求。
当LAC对用户进行验证后,为了增强安全性,LNS可以再次对用户进行验证。在这种情况下,将对用户进行两次验证,第一次发生在LAC端,第二次发生在LNS端,只有两次验证全部成功后,L2TP隧道才能建立。
在L2TP组网中,LNS端对用户的验证方式有三种:
· 代理验证:由LAC代替LNS对用户进行验证,并将用户的所有验证信息及LAC端本身配置的验证方式发送给LNS。LNS根据接收到的信息及本端配置的验证方式,判断用户是否合法。
· 强制CHAP验证:强制在LAC代理验证成功后,LNS再次对用户进行CHAP验证。
· LCP重协商:忽略LAC端的代理验证信息,强制LNS与用户间重新进行LCP(Link Control Protocol,链路控制协议)协商。
验证方式的优先级从高到底依次为:LCP重协商、强制CHAP验证和代理验证。
· 如果在LNS上同时配置LCP重协商和强制CHAP验证,L2TP将使用LCP重协商。
· 如果只配置强制CHAP验证,则在LAC代理验证成功后,LNS再次对用户进行CHAP验证。
· 如果既不配置LCP重协商,也不配置强制CHAP验证,则对用户进行代理验证。
强制CHAP验证和LCP重协商两种验证方式仅对NAS-Initiated模式的L2TP隧道有效。
配置强制CHAP验证时,需要在LNS的VT接口下配置PPP用户的验证方式为CHAP认证。
在某些特定的情况下(如LNS不接受LAC的LCP协商参数,希望和用户重新进行参数协商),需要强制LNS与用户重新进行LCP协商,并采用相应的虚拟模板接口上配置的验证方式对用户进行验证时可配置LCP重协商验证方式。
(1) 进入系统视图。
system-view
(2) 进入LNS模式的L2TP组视图。
l2tp-group group-number [ mode lns ]
(3) 强制LNS重新对用户进行CHAP验证。
mandatory-chap
缺省情况下,LNS不会重新对用户进行CHAP验证。
对于不支持进行第二次验证的用户,不建议配置本功能,否则将因LNS端的CHAP重新验证失败而导致L2TP隧道无法建立。
(4) 退回系统视图。
quit
(5) 进入VT接口并在该接口下配置PPP用户的验证方式为CHAP认证。
关于VT接口配置的详细介绍,请参见“二层技术-广域网接入配置指导”中的“PPP”。
(1) 进入系统视图。
system-view
(2) 进入LNS模式的L2TP组视图。
l2tp-group group-number [ mode lns ]
(3) 配置强制LNS与用户重新进行LCP协商。
mandatory-lcp
缺省情况下,LNS不会与用户重新进行LCP协商。
启用LCP重协商后,如果相应的虚拟模板接口上没有配置验证,则LNS将不对用户进行二次验证(这时用户只在LAC端接受一次验证)。
本配置用来通过AAA对远端拨入用户的身份信息(用户名、密码)进行认证。认证通过后,远端系统可以通过LNS访问企业内部网络。
对于NAS-Initiated隧道模式,当LNS端没有配置强制LCP重新协商时,必须在LNS端配置AAA认证;或者当LNS端配置了强制LCP重新协商,并且虚拟模板接口上配置了需要对PPP用户进行验证时,也必须在LNS端配置AAA认证。对于Client-Initiated和LAC-Auto-Initiated隧道模式,当虚拟模板接口上配置了需要对PPP用户进行验证时,必须在LNS端配置AAA认证。其他情况下无需在LNS端配置AAA认证。
LNS端支持的AAA配置与LAC端的相同,具体介绍及配置方法请参见“1.5.5 配置LAC端的AAA认证”。
为避免大量L2TP用户的突发上线请求对设备性能造成影响,同时又确保L2TP用户能够平稳上线,可以通过本节配置调整设备接收处理ICRQ报文的速率。
(1) 进入系统视图。
system-view
(2) 配置LNS端每秒能处理ICRQ报文的最大数目。
l2tp icrq-limit number
缺省情况下,未限制LNS端每秒能处理ICRQ报文的最大数目。
隧道验证请求可由LAC或LNS任何一端发起。
如果LAC和LNS两端都开启了隧道验证功能,则两端密钥(通过tunnel password命令配置)不为空并且完全一致的情况下,二者之间才能成功建立L2TP隧道。
如果LAC和LNS中的一端开启了隧道验证功能,则另一端可不开启隧道验证功能,但需要两端密钥(通过tunnel password命令配置)不为空并且完全一致,二者之间才能成功建立L2TP隧道。
如果LAC和LNS两端都禁用隧道验证功能,则无论两端是否配置密钥、密钥是否相同,都不影响隧道建立。
为了保证隧道安全,建议用户不要禁用隧道验证功能。
隧道建立成功后,修改隧道验证的密钥不影响当前隧道的正常通信;当隧道断开后重新建立时使用修改后的密钥进行隧道验证。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 开启L2TP的隧道验证功能。
tunnel authentication
缺省情况下,L2TP隧道验证功能处于开启状态。
(4) 配置隧道验证密钥。
tunnel password { cipher | simple } password
缺省情况下,未配置隧道验证密钥。
为了检测LAC和LNS之间隧道的连通性,LAC和LNS会定期向对端发送Hello报文,接收方接收到Hello报文后会进行响应。当LAC或LNS在指定时间间隔内未收到对端的Hello响应报文时,重复发送,如果重复发送5次仍没有收到对端的响应信息则认为L2TP隧道已经断开。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 配置隧道中Hello报文的发送时间间隔。
tunnel timer hello hello-interval
缺省情况下,隧道中Hello报文的发送时间间隔为60秒。
L2TP会话的流控功能是指在L2TP会话上传递的报文中携带序列号,通过序列号检测是否丢包,并根据序列号对乱序报文进行排序。
L2TP会话的流控功能应用在L2TP数据报文的接收与发送过程中。只要LAC和LNS中的一端开启了流控功能,二者之间建立的L2TP会话就支持流控功能。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 开启L2TP会话的流控功能。
tunnel flow-control
缺省情况下,L2TP会话的流控功能处于关闭状态。
DSCP(Differentiated Services Code Point,区分服务编码点)携带在IP报文中的ToS字段,用来体现报文自身的优先等级,决定报文传输的优先程度。
通过本配置指定隧道报文的DSCP优先级后,当流量经过L2TP隧道转发时,L2TP将其封装为IP报文并将IP报文头中的DSCP优先级设置为指定的值。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 配置隧道报文的DSCP优先级。
ip dscp dscp-value
缺省情况下,L2TP隧道报文的DSCP优先级为0。
缺省情况下,设备在公网上发送L2TP控制消息和数据消息。通过本配置指定隧道对端所属的VPN后,设备将在指定的VPN内发送L2TP控制消息和数据消息,即在指定VPN内查找到达控制消息和数据消息目的地址的路由,根据指定VPN的路由转发控制消息和数据消息。
当L2TP隧道的一个端点位于某个VPN中时,需要在L2TP隧道的另一个端点上通过本配置指定隧道对端属于该VPN,以便正确地在L2TP隧道端点之间转发报文。
隧道对端所属的VPN必须与本端设备连接L2TP隧道对端的物理接口所属的VPN(通过ip binding vpn-instance命令配置)相同。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 配置隧道对端所属的VPN。
vpn-instance vpn-instance-name
缺省情况下,L2TP隧道对端属于公网。
在L2TP隧道交换组网中,LTS通过ICRQ(Incoming Call Request,入呼叫请求)报文中的TSA(Tunnel Switching Aggregator,隧道交换聚合)ID AVP来避免环路。
LTS接收到ICRQ报文后,将报文中携带的所有TSA ID AVP中的TSA ID逐一与本地配置的TSA ID进行比较。如果TSA ID AVP中存在与本地相同的TSA ID,则表示存在环路,LTS立即拆除会话。否则,LTS将自己的TSA ID封装到新的TSA ID AVP中,LTS向它的下一跳LTS发送ICRQ报文时携带接收到的所有TSA ID AVP及本地封装的TSA ID AVP。
需要为不同LTS设备配置的不同的TSA ID,否则会导致环路检测错误。
(1) 进入系统视图。
system-view
(2) 配置LTS设备的TSA ID,并开启LTS设备的L2TP环路检测功能。
l2tp tsa-id tsa-id
缺省情况下,未指定LTS设备的TSA ID,且LTS设备的L2TP环路检测功能处于关闭状态。
如果乱序报文过多,可以通过调整L2TP接收窗口的大小进行缓解。当出现乱序报文的时候,如果乱序报文NS(L2TP报文中用于标识当前报文序列号的字段)在接收窗范围内,设备会先将报文缓存起来,等待NS等于接收窗下沿的报文到达。当收到NS等于接收窗下沿的报文时,则对其(NS等于接收窗下沿的报文)进行处理,处理完该报文后,接收窗下沿加1;如果此时缓存中存在NS等于接收窗下沿的报文,则继续处理;如不存在,则继续等待NS等于接收窗下沿的报文到达;依次类推。对于超过接收窗范围的报文进行丢弃。
在L2TP隧道建立时,接收窗口大小以L2TP组视图下配置的接收窗口大小为准。隧道建立完成后通过本特性修改L2TP隧道接收窗口的大小对已经建立的隧道接收窗口的大小无影响。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 配置L2TP隧道接收窗口的大小。
tunnel window receive size
缺省情况下,L2TP隧道接收窗口的大小为1024。
在某些组网中可能出现对端的报文接收处理能力和对端接收窗口的大小不匹配的情况(例如:对端实际的报文接收处理能力为10,但接收窗口的大小为20),此时可以通过本特性调整本端L2TP隧道发送窗口的大小来适配对端的实际报文接收处理能力,以保证L2TP用户平稳上线。
在L2TP隧道建立时会获取L2TP组视图下配置的发送窗口大小。如果配置的发送窗口大小为0,则按缺省情况处理;如果配置的发送窗口大小非0,则以配置的发送窗口大小为准。隧道建立完成后通过本配置修改L2TP隧道发送窗口的大小对已经建立的隧道发送窗口的大小无影响。
(1) 进入系统视图。
system-view
(2) 进入L2TP组视图。
l2tp-group group-number [ mode { lac | lns } ]
(3) 配置L2TP隧道发送窗口的大小。
tunnel window send size
缺省情况下,L2TP隧道发送窗口的大小为0,即本端发送窗口的大小以隧道建立过程中对端携带的接收窗口大小的属性值为准,如果隧道建立过程中对端没有携带接收窗口大小属性,则本端隧道发送窗口的大小为4。
在一些安全性要求比较高的网络环境中,可通过配置本功能并和安全策略服务器配合对L2TP认证通过的用户做进一步的安全性检查。只有通过安全检查,用户才可以正常访问网络资源;否则,用户将只能访问隔离区的资源。
如果LNS设备上开启了基于L2TP接入的EAD功能,但未配置认证服务器下发的ACL号或未准确配置ACL规则,会导致认证不通过。
不同的主机用户ACL可以不同,设备根据不同的ACL对不同的用户进行报文过滤。
建议只在跨越Internet的远端客户端使用此功能,局域网用户不建议使用此功能,应该使用Portal认证。
完成L2TP、Portal、AAA、RADIUS及安全策略服务器的相关配置。
关于Portal的相关内容,请参见“安全配置指导”中的“Portal”。
关于AAA和RADIUS的相关内容,请参见“安全配置指导”中的“AAA”。
关于安全策略服务器的配置,请参见“CAMS EAD安全策略组件联机帮助”以及“iMC EAD安全策略组件联机帮助”。
(1) 进入系统视图。
system-view
(2) 创建并进入虚拟模板接口。
interface virtual-template interface-number
(3) 开启基于L2TP接入的EAD功能。
ppp access-control enable
缺省情况下,基于L2TP接入的EAD功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令可以显示配置后L2TP的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以强制断开指定的L2TP隧道。
表1-2 L2TP显示和维护
操作 |
命令 |
显示当前L2TP隧道的信息 |
display l2tp tunnel [ statistics ] |
显示当前L2TP会话的信息 |
display l2tp session [ statistics ] |
显示当前L2TP非稳态会话的信息 |
display l2tp session temporary |
显示虚拟PPP接口的相关信息 |
display interface [ virtual-ppp [ interface-number ] ] [ brief [ description | down ] ] |
显示L2TP的VA池信息 |
display l2tp va-pool |
显示VT接口产生的PPP会话的动态防火墙的统计信息 |
display ppp access-control interface virtual-template interface-number |
强制断开指定的L2TP隧道 |
reset l2tp tunnel { id tunnel-id | name remote-name } |
清除虚拟PPP接口的统计信息 |
reset counters interface [ virtual-ppp [ interface-number ] ] |
PPP用户直接与LNS建立L2TP隧道,通过L2TP隧道访问公司总部。
图1-9 Client-Initiated模式L2TP隧道配置组网图
需要将LNS设备的虚拟模板接口加入安全域,并放行Untrust域到Trust域、Untrust域到Local安全域的相关流量。
(1) LNS侧的配置
# 配置接口IP地址、路由、安全域及域间策略保证网络可达,具体配置步骤略。
# 配置路由,使得LNS与用户侧主机之间路由可达。(略)
# 创建本地PPP用户vpdnuser,设置密码为Hello。
[LNS] local-user vpdnuser class network
[LNS-luser-network-vpdnuser] password simple Hello
[LNS-luser-network-vpdnuser] service-type ppp
[LNS-luser-network-vpdnuser] quit
# 配置ISP域system对PPP用户采用本地验证。
[LNS] domain system
[LNS-isp-system] authentication ppp local
[LNS-isp-system] quit
# 开启L2TP功能。
[LNS] l2tp enable
#配置PPP地址池。
[LNS] ip pool aaa 192.168.0.10 192.168.0.20
[LNS] ip pool aaa gateway 192.168.0.1
# 创建接口Virtual-Template1,PPP认证方式为CHAP,并使用地址池aaa为Client端分配IP地址。
[LNS] interface virtual-template 1
[LNS-Virtual-Template1] ppp authentication-mode chap domain system
[LNS-Virtual-Template1] remote address pool aaa
[LNS-Virtual-Template1] quit
# 将Virtual-Template1加入Untrust安全域,并创建Untrust域到Local域的域间实例,应用包过滤策略,允许相关流量通过。
[LNS] security-zone name Untrust
[LNS -security-zone-Untrust] import interface Virtual-Template 1
[LNS -security-zone-Untrust] quit
[LNS] acl basic 2000
[LNS-acl-ipv4-basic-2000] rule permit source any
[LNS-acl-ipv4-basic-2000] quit
[LNS] zone-pair security source untrust destination local
[LNS-zone-pair-security-Untrust-Local] packet-filter 2000
[LNS-zone-pair-security-Untrust-Local] quit
# 创建LNS模式的L2TP组1,配置隧道本端名称为LNS,指定接收呼叫的虚拟模板接口为VT1。
[LNS] l2tp-group 1 mode lns
[LNS-l2tp1] tunnel name LNS
[LNS-l2tp1] allow l2tp virtual-template 1
# 关闭L2TP隧道验证功能。
[LNS-l2tp1] undo tunnel authentication
[LNS-l2tp1] quit
(2) Remote host侧的配置
配置IP地址为2.1.1.1,并配置路由,使得Remote host与LNS(IP地址为1.1.2.2)之间路由可达。
利用Windows系统创建虚拟专用网络连接,或安装L2TP客户端软件,如WinVPN Client。
在Remote host上进行如下L2TP配置(设置的过程与相应的客户端软件有关,以下为设置的内容):
¡ 设置PPP用户名为vpdnuser,密码为Hello。
¡ 将LNS的IP地址设为安全网关的Internet接口地址(本例中LNS端与隧道相连接的以太网接口的IP地址为1.1.2.2)。
¡ 修改连接属性,将采用的协议设置为L2TP,将加密属性设为自定义,并选择CHAP验证。
# 在Remote host上触发L2TP拨号。拨号连接成功后,Remote host获取到IP地址192.168.0.2,并可以Ping通LNS的私网地址192.168.0.1。
# 在LNS侧,通过命令display l2tp session可查看建立的L2TP会话。
[LNS] display l2tp session
LocalSID RemoteSID LocalTID State
39945 1 37263 Established
# 在LNS侧,通过命令display l2tp tunnel可查看建立的L2TP隧道。
[LNS] display l2tp tunnel
LocalTID RemoteTID State Sessions RemoteAddress RemotePort RemoteName
37263 4 Established 1 2.1.1.1 1701 PC
# 在Remote host上Ping公司总部内的服务器10.1.0.200,可以成功Ping通。
C:\> ping 10.1.0.200
Pinging 10.1.0.200 with 32 bytes of data:
Reply from 10.1.0.200: bytes=32 time<1ms TTL=254
Reply from 10.1.0.200: bytes=32 time<1ms TTL=254
Reply from 10.1.0.200: bytes=32 time<1ms TTL=254
Reply from 10.1.0.200: bytes=32 time<1ms TTL=254
Ping statistics for 10.1.0.200:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
PPP用户接入之前,在LAC和LNS之间采用LAC-Auto-Initiated模式建立L2TP隧道。PPP用户接入后,通过已经建立的L2TP隧道访问公司总部。
图1-10 LAC-Auto-Initiated模式L2TP隧道配置组网图
需要将LNS设备的虚拟模板接口加入安全域,并放行Untrust域到Trust域、Untrust域到Local安全域的相关流量。
(1) LAC侧的配置
# 配置接口IP地址、路由保证网络可达,具体配置步骤略。
# 开启L2TP功能。
<LAC> system-view
[LAC] l2tp enable
# 创建LAC模式的L2TP组1。
[LAC] l2tp-group 1 mode lac
# 配置LAC侧本端名称为LAC,并指定LNS的IP地址为3.3.3.2。
[LAC-l2tp1] tunnel name LAC
[LAC-l2tp1] lns-ip 3.3.3.2
# 开启隧道验证功能,并设置隧道验证密钥为aabbcc。
[LAC-l2tp1] tunnel authentication
[LAC-l2tp1] tunnel password simple aabbcc
[LAC-l2tp1] quit
# 创建虚拟PPP接口Virtual-PPP 1,配置PPP用户的用户名为vpdnuser、密码为Hello,并配置PPP验证方式为PAP。
[LAC] interface virtual-ppp 1
[LAC-Virtual-PPP1] ip address ppp-negotiate
[LAC-Virtual-PPP1] ppp pap local-user vpdnuser password simple Hello
[LAC-Virtual-PPP1] quit
# 配置私网路由,访问公司总部的报文将通过L2TP隧道转发。
[LAC] ip route-static 10.1.0.0 16 virtual-ppp 1
# 触发LAC发起L2TP隧道建立请求。
[LAC] interface virtual-ppp 1
[LAC-Virtual-PPP1] l2tp-auto-client l2tp-group 1
[LAC-Virtual-PPP1] quit
(2) LNS侧的配置
# 配置接口IP地址、路由、安全域及域间策略保证网络可达,具体配置步骤略。
# 创建本地PPP用户vpdnuser,配置密码为Hello。
<LNS> system-view
[LNS] local-user vpdnuser class network
[LNS-luser-network-vpdnuser] password simple Hello
[LNS-luser-network-vpdnuser] service-type ppp
[LNS-luser-network-vpdnuser] quit
# 创建接口Virtual-Template1,配置VT口IP地址,PPP认证方式为PAP,并指定为Client端分配IP地址为192.168.0.10。
[LNS] interface virtual-template 1
[LNS-virtual-template1] ip address 192.168.0.1 24
[LNS-Virtual-Template1] ppp authentication-mode pap
[LNS-Virtual-Template1] remote address 192.168.0.10
[LNS-Virtual-Template1] quit
# 将Virtual-Template1加入Untrust安全域,并创建Untrust域到Local域的域间实例,应用包过滤策略,允许相关流量通过。
[LNS] security-zone name Untrust
[LNS-security-zone-Untrust] import interface Virtual-Template 1
[LNS-security-zone-Untrust] quit
[LNS] acl basic 2000
[LNS-acl-ipv4-basic-2000] rule permit source any
[LNS-acl-ipv4-basic-2000] quit
[LNS] zone-pair security source untrust destination local
[LNS-zone-pair-security-Untrust-Local] packet-filter 2000
[LNS-zone-pair-security-Untrust-Local] quit
# 配置ISP域system对PPP用户采用本地验证。
[LNS] domain system
[LNS-isp-system] authentication ppp local
[LNS-isp-system] quit
# 开启L2TP功能,并创建LNS模式的L2TP组1。
[LNS] l2tp enable
[LNS] l2tp-group 1 mode lns
# 配置LNS侧本端名称为LNS,指定接收呼叫的虚拟模板接口为VT1,并配置隧道对端名称为LAC。
[LNS-l2tp1] tunnel name LNS
[LNS-l2tp1] allow l2tp virtual-template 1 remote LAC
# 启用隧道验证功能,并设置隧道验证密钥为aabbcc。
[LNS-l2tp1] tunnel authentication
[LNS-l2tp1] tunnel password simple aabbcc
[LNS-l2tp1] quit
# 配置私网路由,下一跳指定为LNS为LAC分配的私网IP地址192.168.0.10使得访问PPP用户的报文将通过L2TP隧道转发。
[LNS] ip route-static 10.2.0.0 16 192.168.0.10
(3) Remote host侧的配置
Remote host上应将LAC设置为网关。
# 在LNS侧,通过命令display l2tp session可查看建立的L2TP会话。
[LNS] display l2tp session
LocalSID RemoteSID LocalTID State
21073 11183 52525 Established
# 在LNS侧,通过命令display l2tp tunnel可查看建立的L2TP隧道。
[LNS] display l2tp tunnel
LocalTID RemoteTID State Sessions RemoteAddress RemotePort RemoteName
52525 33375 Established 1 3.3.3.1 1701 LAC
# 在Remote host上Ping公司总部内的服务器10.1.0.200,可以成功Ping通。
C:\> ping 10.1.0.200
Pinging 10.1.0.200 with 32 bytes of data:
Reply from 10.1.0.200: bytes=32 time<1ms TTL=253
Reply from 10.1.0.200: bytes=32 time<1ms TTL=253
Reply from 10.1.0.200: bytes=32 time<1ms TTL=253
Reply from 10.1.0.200: bytes=32 time<1ms TTL=253
Ping statistics for 10.1.0.200:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
远端系统无法访问企业内部网络。
主要有以下几种原因:
· 可能是如下原因导致Tunnel建立失败:
¡ 在LAC端,LNS的地址设置不正确。
¡ LNS端没有设置可以接收该隧道对端的L2TP组。
¡ 只有一端启用Tunnel验证或两端均启用Tunnel验证但验证密码不一致。
· 可能是如下原因导致PPP协商不通过:
¡ LAC端设置的用户名与密码有误,或者是LNS端没有设置相应的用户。
¡ 密码验证类型不一致。
(1) 检查在LAC端配置的LNS的IP地址是否正确,具体可以查看lns-ip命令的说明。
(2) 检查在LNS端配置的接受来自LAC的L2TP隧道建立请求是否正确,具体可查看allow l2tp命令的说明。
(3) 如果配置了验证,检查并保证双方都启用了隧道验证并且配置相同的验证密钥。
(4) 检查LAC端配置的用户名和密码是否正确,以及LNS端是否配置了相应的用户。
(5) 检查远端系统和LNS对IP地址协商相关的配置是否正确。
(6) 检查密码验证类型是否一致。例如,Windows 2000所创建的VPN连接缺省的验证类型为MSCHAP,如果对端不支持MSCHAP,建议改为CHAP。
数据传输失败,在隧道建立后数据不能传输,如Ping不通对端。
可能有如下原因:
· 路由问题:LAC和LNS上需要存在到达对端私网的路由,否则会导致数据传输失败。
· 网络拥挤:Internet主干网产生拥挤,丢包现象严重。L2TP是基于UDP进行传输的,UDP不对报文进行差错控制。如果是在线路质量不稳定的情况下进行L2TP应用,有可能会产生Ping不通对端的情况。
(1) 在LAC和LNS上执行display ip routing-table命令,查看设备上是否存在到达对端私网的路由。若不存在,则需要配置静态路由或动态路由协议,在设备上添加该路由。
(2) 增加链路带宽,提高线路质量。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!