09-L2TP配置
本章节下载 (459.72 KB)
目 录
VPDN(Virtual Private Dial-up Network,虚拟私有拨号网)是指利用公共网络(如ISDN或PSTN)的拨号功能,接入公共网络,实现虚拟专用网,从而为企业、小型ISP、移动办公人员等提供接入服务。
VPDN采用专用的网络加密通信协议,在公共网络上为企业建立安全的虚拟专网。企业驻外机构和出差人员可从远程经由公共网络,通过虚拟加密隧道实现和企业总部之间的网络连接,而公共网络上其它用户则无法穿过虚拟隧道访问企业网内部的资源。
VPDN有下列两种实现方式:
(1) NAS(Network Access Server,网络接入服务器)通过使用L2F(Layer 2 Forwarding,二层转发)、L2TP(Layer 2 Tunneling Protocol,二层隧道协议)等隧道协议,将客户的PPP连接直接连到企业的网关上,从而与VPDN网关建立隧道。这些对于用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和地址分配,而不占用公共地址。该方式需要NAS支持VPDN协议、认证系统支持VPDN属性。
(2) 客户机与VPDN网关建立隧道。这种方式由客户机先建立与Internet的连接,再通过专用的客户软件(如Windows 2000支持的L2TP客户端)与网关建立隧道连接。用户上网的方式和地点没有限制,不需ISP介入。但是,用户需要安装专用的软件(一般都是Windows 2000平台),限制了用户使用的平台。
网关一般使用路由器或VPN专用服务器。VPDN隧道协议可分为PPTP、L2F和L2TP三种,目前使用最广泛的是L2TP。
PPP协议定义了一种封装技术,可以在二层的点到点链路上传输多种协议数据包,当用户与NAS之间运行PPP协议时,二层链路端点与PPP会话点驻留在相同硬件设备上。
L2TP协议提供了对PPP链路层数据包的隧道(Tunnel)传输支持,允许二层链路端点和PPP会话点驻留在不同设备上,并且采用包交换网络技术进行信息交互,从而扩展了PPP模型。L2TP协议结合了L2F协议和PPTP协议的各自优点,成为IETF有关二层隧道协议的工业标准。
使用L2TP协议构建的VPDN应用的典型组网如图1-1所示。
其中,LAC(L2TP Access Concentrator,L2TP访问集中器)是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备。LAC一般是一个网络接入服务器NAS,主要用于通过PSTN/ISDN网络为用户提供接入服务。LNS(L2TP Network Server,L2TP网络服务器)是PPP端系统上用于处理L2TP协议服务器端部分的设备。
LAC位于LNS和远端系统(远地用户和远地分支机构)之间,用于在LNS和远端系统之间传递信息包。它把从远端系统收到的信息包按照L2TP协议进行封装并送往LNS,同时也将从LNS收到的信息包进行解封装并送往远端系统。LAC与远端系统之间采用本地连接或PPP链路,VPDN应用中通常为PPP链路。LNS作为L2TP隧道的另一侧端点,是LAC的对端设备,是LAC进行隧道传输的PPP会话的逻辑终止端点。
(1) L2TP协议结构
图1-2描述了PPP帧和控制通道以及数据通道之间的关系。PPP帧在不可靠的L2TP数据通道上进行传输,控制消息在可靠的L2TP控制通道内传输。
图1-3 L2TP报文封装结构图
图1-3描述了LAC与LNS之间的L2TP数据报文的封装结构。通常L2TP数据以UDP报文的形式发送。L2TP注册了UDP 1701端口,但是这个端口仅用于初始的隧道建立过程中。L2TP隧道发起方任选一个空闲的端口(未必是1701)向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲的端口(未必是1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道保持连通的时间段内不再改变。
(2) 隧道和会话的概念
在一个LNS和LAC对之间存在着两种类型的连接。
l 隧道(Tunnel)连接,它对应了一个LNS和LAC对。
l 会话(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。
在同一对LAC和LNS之间可以建立多个L2TP隧道,隧道由一个控制连接和一个或多个会话连接组成。
l 会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。
l 控制消息和PPP数据报文都在隧道上传输。
l L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,隧道断开。
(3) 控制消息和数据消息的概念
L2TP中存在两种消息:控制消息和数据消息。
l 控制消息用于隧道和会话连接的建立、维护以及传输控制。它的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制。
l 数据消息用于封装PPP帧,并在隧道上传输。它的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。
控制消息和数据消息共享相同的报文头。L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上。报文头中的隧道标识符与会话标识符由对端分配。
如图1-4所示,远端系统或LAC客户端(运行L2TP协议的主机)与LNS之间的两种典型隧道模式如下:
l 远端系统与LNS之间建立隧道
l LAC客户端与LNS之间建立隧道
(1) 由远程拨号用户发起。远程系统通过PSTN/ISDN拨入LAC,由LAC通过Internet向LNS发起建立隧道连接请求。拨号用户地址由LNS分配;对远程拨号用户的验证与计费既可由LAC侧的代理完成,也可在LNS侧完成。
(2) 直接由LAC客户(指可在本地支持L2TP协议的用户)发起。此时LAC客户可直接向LNS发起隧道连接请求,无需再经过一个单独的LAC设备。LAC客户地址的分配由LNS来完成。
L2TP应用的典型组网如图1-5所示:
L2TP隧道的呼叫建立流程如图1-6所示:
L2TP隧道的呼叫建立流程过程为:
(1) 客户端PC机发起呼叫连接请求;
(2) PC机和LAC端(RouterA)进行PPP LCP协商;
(3) LAC对PC机提供的用户信息进行PAP或CHAP认证;
(4) LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证;
(5) RADIUS服务器认证该用户,如果认证通过,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) 验证通过,LNS端会给远端用户分配一个企业网内部IP地址,用户即可以访问企业内部资源。
(1) 灵活的身份验证机制以及高度的安全性
L2TP协议本身并不提供连接的安全性,但它可依赖于PPP提供的认证(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。L2TP可与IPSec结合起来实现数据安全,这使得通过L2TP所传输的数据更难被攻击。L2TP还可根据特定的网络安全要求在L2TP之上采用隧道加密技术、端对端数据加密或应用层数据加密等方案来提高数据的安全性。
L2TP传输PPP数据包,这样就可以在PPP数据包内封装多种协议。
(3) 支持RADIUS服务器的验证
LAC端将用户名和密码发往RADIUS服务器进行验证申请,RADIUS服务器负责接收用户的验证请求,完成验证。
(4) 支持内部地址分配
LNS可放置于企业网的防火墙之后,它可以对远端用户的地址进行动态的分配和管理,可支持私有地址应用(RFC1918)。为远端用户所分配的地址不是Internet地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。
(5) 网络计费的灵活性
可在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出入包数、字节数以及连接的起始、结束时间等计费数据,可根据这些数据方便地进行网络计费。
(6) 可靠性
L2TP协议支持备份LNS,当主LNS不可达之后,LAC可以与备份LNS建立连接,增加了VPN服务的可靠性和容错性。
下面从LAC、LNS两侧分别介绍L2TP的配置。
表1-1 L2TP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置LAC端 |
配置LAC |
必选 |
|
配置用户名、密码及本地验证 |
可选 |
||
配置LNS端 |
配置LNS |
必选 |
|
配置强制本端CHAP验证 |
可选 |
||
配置强制LCP重新协商 |
可选 |
||
配置本端地址及分配的地址池 |
可选 |
||
配置用户名、密码及本地验证 |
可选 |
||
配置ACCM消息发送 |
可选 |
在L2TP的配置中,LAC端和LNS端的配置有所不同,本节介绍LAC端的配置。在各项配置任务中,必须先启动L2TP、创建L2TP组,然后再进行其它功能特性的配置。
表1-2 配置LAC
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启用L2TP功能 |
l2tp enable |
必选 缺省情况下,L2TP功能处于关闭状态 |
创建L2TP组,并进入L2TP组视图 |
l2tp-group group-number |
必选 缺省情况下,没有创建任何L2TP组 |
配置本端作为L2TP LAC端时发起呼叫的触发条件 |
start l2tp ip ip-address&<1-5> { domain domain-name | fullusername user-name } |
必选 |
配置隧道本端的名称 |
tunnel name name |
可选 缺省情况下,隧道的本端的名称为系统的名称 |
启用L2TP的隧道验证功能 |
tunnel authentication |
可选 缺省情况下,L2TP隧道进行验证功能处于开启状态 |
配置隧道验证时的密码 |
tunnel password { simple | cipher } password |
必选 缺省情况下,系统的隧道验证密码为空 |
配置将AVP(Attribute Value Pair,属性值对)数据采用隐藏的方式进行传输 |
tunnel avp-hidden |
可选 缺省情况下,隧道采用明文方式传输AVP数据 |
配置隧道Hello报文发送时间间隔 |
tunnel timer hello hello-interval |
可选 缺省情况下,隧道中Hello报文的发送时间间隔为60秒 |
配置用户名、密码及配置用户验证 |
必选 |
|
开启L2TP隧道流控功能 |
tunnel flow-control |
可选 缺省情况下,L2TP隧道流控功能处于关闭状态 |
退回用户视图 |
quit |
- |
强制断开指定的隧道连接 |
reset l2tp tunnel { remote-name | tunnel-id } |
可选 |
注意:
l 只有启用L2TP后,语音网关上L2TP功能才能正常发挥作用;如果禁止L2TP,则即使配置了L2TP的参数,语音网关也不会提供相关功能。
l 为了进行L2TP的相关参数配置,还需要增加L2TP组,这不仅可以在语音网关上灵活的配置L2TP各项功能,而且方便地实现了LAC和LNS之间一对一、一对多的组网应用。L2TP组在LAC和LNS上独立编号,只需要保证LAC和LNS之间关联的L2TP组的相关配置(如隧道对端名称、LNS地址等)保持对应关系即可。
l 只有在满足一定的条件下,LAC端才会向LNS服务器发出建立L2TP连接的请求。通过配置对接入用户信息的判别条件,并指定相应的LNS端的IP地址,语音网关可以鉴定用户是否为VPN用户,并决定是否向LNS发起连接。最多可以设置五个LNS,即允许存在备用LNS。正常运行时,本语音网关(LAC)按照LNS配置的先后顺序,依次向对端(LNS)进行L2TP连接请求,直到某个LNS接受连接请求,该LNS就成为L2TP隧道的对端。发起L2TP连接请求的触发条件共支持两种:完整的用户名(fullusername)、带特定域名的用户(domain)。
l LAC侧隧道名称要与LNS侧配置的接收隧道对端名称保持一致。
l 用户可根据实际需要,决定是否在创建隧道连接之前启用隧道验证。隧道验证请求可由LAC或LNS任何一侧发起。只要有一方启用了隧道验证,则只有在对端也启用了隧道验证,两端密码完全一致并且不为空的情况下,隧道才能建立;否则本端将自动将隧道连接断开。若隧道两端都配置了禁止隧道验证,隧道验证的密码一致与否将不起作用。为了保证隧道安全,建议用户最好不要禁用隧道验证的功能。
l 为了检测LAC和LNS之间隧道的连通性,LAC和LNS会定期向对端发送Hello报文,接收方接收到Hello报文后会进行响应。当LAC或LNS在指定时间间隔内未收到对端的Hello响应报文时,则重复发送Hello报文,如果重复发送超过3次仍没有收到对端的响应信息则认为L2TP隧道已经断开,需要在LAC和LNS之间重新建立隧道连接。
l 当用户数为零、网络发生故障或当管理员主动要求断开连接时,都会使隧道连接断开。LAC和LNS任何一端都可主动发起断开连接的请求,连接断开后,该隧道上的所有控制连接与会话连接也将被清除;当有新用户拨入时,需要重新建立连接。
在LAC侧配置AAA认证时,如果选择了local(本地认证)方式,则需要在LAC侧配置本地用户名和密码。
LAC通过检查远程拨入用户名与密码是否与本地注册用户名/密码相符合来进行用户身份验证,以检查用户是否为合法VPN用户。验证通过后才能发起建立隧道连接的请求,否则将该用户转入其它类型的服务。
在LAC端进行用户身份验证,用户名采用VPN用户全名,密码为VPN用户注册密码。
相关命令的具体含义请参见“安全分册”中的“AAA RADIUS HWTACACS命令”。
表1-3 配置用户名、密码及本地验证
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
添加本地用户并进入本地用户视图 |
local-user username |
必选 缺省情况下,LAC侧未配置本地用户名和密码 |
设置本地用户的密码 |
password { simple | cipher } password |
|
授权用户可以使用PPP服务 |
service-type ppp |
必选 |
退回系统视图 |
quit |
- |
创建一个ISP域,并进入ISP域视图 |
domain isp-name |
必选 |
配置PPP域用户的AAA方法 |
authentication ppp local |
必选 缺省情况下,采用local认证/授权/计费方案 |
authorization ppp local |
||
accounting ppp local |
注意:
l 如果要使LAC端成功对用户进行认证,还需要在相应的LAC端的接口(例如接入用户的异步串口)下进行PPP的相关配置。
l 配置本地验证的接口应该是接入用户的接口。
在LNS的各项配置任务中,必须先启动L2TP、创建L2TP组,然后再进行其它功能特性的配置。在L2TP支持多实例配置中,必须启用L2TP多实例功能。
表1-4 配置LNS
配置步骤 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
启用L2TP功能 |
l2tp enable |
必选 缺省情况下,L2TP功能处于关闭状态 |
|
启用L2TP多实例功能 |
l2tpmoreexam enable |
可选 缺省情况下,L2TP多实例功能处于关闭状态 |
|
配置虚接口模板Virtual-Template的相关信息 |
必选 |
||
退回到系统视图 |
quit |
- |
|
创建L2TP组,并进入L2TP组视图 |
l2tp-group group-number |
必选 缺省情况下,没有创建任何L2TP组 |
|
设置隧道对端的名称(L2TP组不为1) |
allow l2tp virtual-template virtual-template-number remote remote-name [ domain domain-name ] |
二者必选其一 缺省情况下,为禁止接受呼入,LNS可以使用不同的虚拟接口模板接收不同的LAC创建隧道的请求。在接收到LAC发来的创建隧道请求后,LNS需要检查LAC的名称是否与合法隧道对端名称相符合,从而决定是否允许隧道对方进行隧道的创建 |
|
设置隧道对端的名称(L2TP组为1) |
allow l2tp virtual-template virtual-template-number [ remote remote-name ] [ domain domain-name ] |
||
配置隧道本端的名称 |
tunnel name name |
可选 缺省情况下,隧道本端的名称为系统的名称 |
|
启用L2TP的隧道验证功能 |
tunnel authentication |
可选 缺省情况下,L2TP隧道进行验证功能处于开启状态 |
|
配置隧道验证时的密码 |
tunnel password { simple | cipher } password |
必选 缺省情况下,系统的隧道验证密码为空 |
|
配置隧道Hello报文发送时间间隔 |
tunnel timer hello hello-interval |
可选 缺省情况下,隧道中Hello报文的发送时间间隔为60秒 |
|
配置强制本端CHAP验证 |
可选 |
||
配置强制LCP重新协商 |
请参见1.4.3 配置强制LCP重新协商 |
可选 |
|
配置用户名、密码及配置用户验证 |
可选 |
||
开启L2TP隧道流控功能 |
tunnel flow-control |
可选 缺省情况下,关闭L2TP隧道流控功能 |
|
强制断开指定的隧道连接 |
reset l2tp tunnel { remote-name | tunnel-id } |
可选 |
注意:
l 只有启用L2TP后,语音网关上L2TP功能才能正常发挥作用;如果禁止L2TP,则即使配置了L2TP的参数语音网关也不会提供相关功能。
l 只有启用L2TP多实例功能,语音网关才能为多个企业做LNS。L2TP多实例功能的实现丰富了VPN组网方式,主要应用在MPLS-VPN组网中。在实际组网应用中,企业的私网路由需要通过配置VPN实例来实现。在L2TP多实例应用中,此配置在LNS侧必须配置。
l 命令start l2tp和allow l2tp是互斥的,配了一条命令之后另一条就自动失效。
l 为了进行L2TP的相关参数配置,还需要增加L2TP组,这不仅可以在语音网关上灵活的配置L2TP各项功能,而且方便地实现了LAC和LNS之间一对一、一对多的组网应用。L2TP组在LAC和LNS上独立编号,只需要保证LAC和LNS之间关联的L2TP组的相关配置(如隧道对端名称、LNS地址等)保持对应关系即可。
l LAC侧隧道名称要与LNS侧配置的接收隧道对端名称保持一致。
l 用户可根据实际需要,决定是否在创建隧道连接之前启用隧道验证。隧道验证请求可由LAC或LNS任何一侧发起。只要有一方启用了隧道验证,则只有在对端也启用了隧道验证,两端密码完全一致并且不为空的情况下,隧道才能建立;否则本端将自动将隧道连接断开。若隧道两端都配置了禁止隧道验证,隧道验证的密码一致与否将不起作用。为了保证隧道安全,建议用户最好不要禁用隧道验证的功能。如果用户需要修改隧道验证的密码,请在隧道完全拆除后进行,否则修改的密码不生效。
l 为了检测LAC和LNS之间隧道的连通性,LAC和LNS会定期向对端发送Hello报文,接收方接收到Hello报文后会进行响应。当LAC或LNS在指定时间间隔内未收到对端的Hello响应报文时,重复发送,如果重复发送超过3次都没有收到对端的响应信息则认为L2TP隧道已经断开,需要在LAC和LNS之间重新建立隧道连接。
l 如果既不配置LCP重协商,也不配置强制CHAP验证,则LNS对用户进行代理验证。在这种情况下,LAC将它从用户得到的所有验证信息及LAC端本身配置的验证方式发送给LNS,LNS侧会默认接受LAC侧对用户的验证结果。
l 当用户数为零、网络发生故障或当管理员主动要求时,都会产生断开连接的过程。LAC和LNS任何一端都可主动发起断开连接的请求,连接断开后,该隧道上的所有控制连接与会话连接也将被清除;当有新用户拨入时,还可重新建立连接。
当LAC对用户进行验证后,LNS可再次对用户进行验证。此时将对用户进行两次验证,第一次发生在LAC侧,第二次发生在LNS侧,只有两次验证全部成功后,L2TP隧道才能建立。
在L2TP组网中,LNS侧对用户的验证方式有三种:代理验证、强制CHAP验证和LCP重协商。
如果既不配置LCP重协商,也不配置强制CHAP验证,则LNS对用户进行的是代理验证。在这种情况下,LAC将它从用户得到的所有验证信息及LAC端本身配置的验证方式发送给LNS。
这三种验证方式中,LCP重协商的优先级最高,如果在LNS上同时配置LCP重协商和强制CHAP验证,L2TP将使用LCP重协商,并采用相应的虚拟模板接口上配置的验证方式。
如果只配置强制CHAP验证,则LNS对用户进行CHAP验证。
表1-5 配置强制本端CHAP验证
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启用L2TP功能 |
l2tp enable |
必选 缺省情况下,L2TP功能处于关闭状态 |
创建L2TP组,并进入L2TP组视图 |
l2tp-group group-number |
必选 缺省情况下,没有创建任何L2TP组 |
配置强制LNS与用户端之间重新进行CHAP验证 |
mandatory-chap |
必选 缺省情况下,系统不进行CHAP的重新验证 |
注意:
在LNS使用代理验证时,如果虚拟模板接口配置的验证方式为PAP,并且验证通过,则允许建立会话;如果虚拟模板接口配置的验证方式为CHAP,而LAC端配置的验证方式为PAP,则由于LNS要求的CHAP验证级别高于LAC能够提供的PAP验证,验证将无法通过,会话也就不能正确建立。
对由NAS发起的VPN服务请求(NAS-Initialized VPN),在PPP会话开始时,用户先和NAS进行PPP协商。若协商通过,则由NAS初始化L2TP隧道连接,并将用户信息传递给LNS,由LNS根据收到的代理验证信息,判断用户是否合法。
但在某些特定的情况下(如需在LNS侧也要进行验证与计费),需要强制LNS与用户间重新进行LCP协商,此时将忽略NAS侧的代理验证信息。
启用LCP重协商后,如果相应的虚拟接口模板上不配置验证,则LNS将不对接入用户进行二次验证(这时用户只在LAC侧接受一次验证),直接将全局地址池的地址分配给Client端。
表1-6 配置强制本端LCP重新协商
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启用L2TP功能 |
l2tp enable |
必选 缺省情况下,L2TP功能处于关闭状态 |
创建L2TP组,并进入L2TP组视图 |
l2tp-group group-number |
必选 缺省情况下,没有创建任何L2TP组 |
配置强制LNS与用户端之间重新进行链路控制协议(Link Control Protocol)的协商 |
mandatory-lcp |
必选 缺省情况下,系统不重新进行LCP协商 |
当LAC与LNS之间的L2TP隧道连接建立之后,LNS需要从地址池中为VPN用户分配IP地址。在指定地址池之前,需要在系统视图或域视图下用ip pool命令先定义一个地址池(关于ip pool命令的详细描述请参见“安全分册”中的“AAA RADIUS HWTACACS命令”)。系统使用域视图下的地址池给用户分配IP地址。
表1-7 配置本端地址及分配的地址池
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建虚接口模板,并进入虚接口模板视图 |
interface virtual-template virtual-template-number |
必选 缺省情况下,系统没有创建虚接口模板 虚拟接口模板主要用于配置语音网关在运行过程中动态创建的虚接口的工作参数,如MP捆绑逻辑接口和L2TP逻辑接口等 |
配置本端IP地址 |
ip address ip-address { mask | mask-length } [ sub ] |
必选 |
配置对PPP用户进行验证 |
ppp authentication-mode { chap | pap } [ call-in | domain isp-name ] |
必选 缺省情况下,不对PPP用户进行验证 |
指定给对方分配地址所用的地址池 |
remote address { pool [ pool-number ] | ip-address } |
可选 缺省情况下,从地址池0(缺省地址池)中给对方分配地址 |
在LNS侧,如果配置了强制CHAP认证,则需要在LNS侧配置本地注册用户名和密码。
LNS通过检查远程拨入用户名与密码是否与本地注册用户名/密码相符合来进行用户身份验证,以检查用户是否为合法VPN用户。验证通过后就可以进行VPN用户和LNS的通信,否则将通知L2TP清除这个L2TP链接。
在LNS端进行用户身份验证,用户名可以采用两种形式:
l 用户名为VPN用户全名,密码为VPN用户注册密码。
l 用户名为用户名+域名,密码为VPN用户注册密码。
这些配置在LNS侧为可选配置。具体配置方法请参考1.3.2 配置用户名、密码及本地验证。
RFC2661中提到,LNS可以通过ACCM消息,将LNS与PPP对端协商的ACCM情况通知LAC。
实际应用中,各设备制造商的LAC对ACCM要求可能不同,LNS需要根据LAC的要求配置是否发送ACCM消息。
缺省情况下,LNS发送ACCM消息。如果LAC要求不能收到ACCM,需要设置LNS端不发送ACCM消息。
表1-8 配置ACCM消息发送
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启用L2TP的ACCM消息发送功能 |
l2tp sendaccm enable |
必选 缺省情况下,L2TP的ACCM消息发送功能处于开启状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后L2TP的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示当前L2TP隧道的信息 |
display l2tp tunnel |
显示当前L2TP会话的信息 |
display l2tp session |
L2TP的呼叫可以由NAS(网络接入服务器)主动发起,也可以由客户端发起。下面将分别针对这两种情况举例说明。
VPN用户访问公司总部过程如下:
(1) 用户以普通的上网方式进行拨号上网。
(2) 在接入服务器(NAS)处对此用户进行验证,发现是VPN用户,则由接入服务器向LNS发起隧道连接的请求。
(3) 在接入服务器与LNS建立隧道后,接入服务器把与VPN用户已经协商的内容作为报文内容传给LNS。
(4) LNS再根据预协商的内容决定是否接受此连接。
(5) 用户与公司总部间的通信都通过接入服务器与LNS之间的隧道进行传输。
(1) 用户侧的配置
在用户侧,在拨号网络窗口中输入VPN用户名vpdnuser,密码Hello,拨入号码为170。在拨号后弹出的拨号终端窗口中输入RADIUS验证的用户名username和密码userpass。
(2) LAC侧的配置
# 在RADIUS服务器上:设置一个用户名为username、密码为userpass的VPN用户,并设置相应的LNS侧设备的IP地址(本例中LNS侧与隧道相连接的以太口的IP地址为1.1.2.2)。
在NAS上配置:
# 配置各接口的IP地址(略)。
# 设置用户名及口令。
[LAC] local-user vpdnuser
[LAC-luser-vpdnuser] password simple Hello
[LAC-luser-vpdnuser] service-type ppp
[LAC-luser-vpdnuser] quit
# 在Async1/0接口上配置IP地址。
[LAC] interface async 1/0
[LAC-Async1/0] ip address 1.1.1.1 255.255.255.0
[LAC-Async1/0] ppp authentication-mode chap
[LAC-Async1/0] quit
# 启用L2TP服务。
[LAC] l2tp enable
# 设置一个L2TP组,并配置相关属性。
[LAC] l2tp-group1
[LAC-l2tp1] tunnel name LAC
[LAC-l2tp1] start l2tp ip 1.1.2.2 fullusername vpdnuser
# 启用通道验证并设置通道验证密码。
[LAC-l2tp1] tunnel authentication
[LAC-l2tp1] tunnel password simple aabbcc
(3) 安全网关(LNS侧)的配置
# 配置各接口的IP地址(略)。
# 设置用户名及密码(应与用户侧的设置一致)。
<LNS> system-view
[LNS] local-user vpdnuser
[LNS-luser-vpdnuser] password simple Hello
[LNS-luser-vpdnuser] service-type ppp
[LNS-luser-vpdnuser] quit
# 对VPN用户采用本地验证。
[LNS] domain system
[LNS-isp-system] authentication ppp local
[LNS-isp-system] ip pool 1 192.168.0.2 192.168.0.100
[LNS-isp-system] quit
# 启用L2TP服务。
[LNS] l2tp enable
# 配置虚模板Virtual-Template的相关信息。
[LNS] interface virtual-template 1
[LNS-virtual-template1] ip address 192.168.0.1 255.255.255.0
[LNS-virtual-template1] ppp authentication-mode chap domain system
[LNS-virtual-template1] remote address pool 1
[LNS-virtual-template1] quit
# 设置一个L2TP组,指定接收呼叫的虚拟接口模板,配置LNS侧的隧道对端名称。
[LNS] l2tp-group 1
[LNS-l2tp1] allow l2tp virtual-template 1 remote LAC
# 启用隧道验证并设置隧道验证密码。
[LNS-l2tp1] tunnel authentication
[LNS-l2tp1] tunnel password simple aabbcc
VPN用户访问公司总部过程如下:
l 用户首先连接Internet,之后直接由用户向LNS发起Tunnel连接的请求。
l 在LNS接受此连接请求之后,VPN用户与LNS之间就建立了一条虚拟的L2TP tunnel。
l 用户与公司总部间的通信都通过VPN用户与LNS之间的隧道进行传输。
图1-8 Client-Initialized VPN组网图
(1) 用户侧的配置
在用户侧主机上必须装有L2TP的客户端软件,如WinVPN Client,并且用户通过拨号方式连接到Internet。然后再进行如下配置(设置的过程与相应的客户端软件有关,以下为设置的内容):
# 在用户侧设置VPN用户名为vpdnuser,密码为Hello。
# 将LNS的IP地址设为安全网关的Internet接口地址(本例中LNS侧与隧道相连接的以太口的IP地址为1.1.2.2)。
# 修改连接属性,将采用的协议设置为L2TP,将加密属性设为自定义,并选择CHAP验证,进行隧道验证,隧道的密码为:aabbcc。
(2) 安全网关(LNS侧)的配置
# 设置用户名及密码(应与用户侧的设置一致)。
<LNS> system-view
[LNS] local-user vpdnuser
[LNS-luser-vpdnuser] password simple Hello
[LNS-luser-vpdnuser] service-type ppp
[LNS-luser-vpdnuser] quit
# 对VPN用户采用本地验证。
[LNS] domain system
[LNS-isp-system] authentication ppp local
[LNS-isp-system] ip pool 1 192.168.0.2 192.168.0.100
[LNS-isp-system] quit
# 启用L2TP服务。
[LNS] l2tp enable
# 配置虚模板Virtual-Template的相关信息。
[LNS] interface virtual-template 1
[LNS-virtual-template1] ip address 192.168.0.1 255.255.255.0
[LNS-virtual-template1] ppp authentication-mode chap domain system
[LNS-virtual-template1] remote address pool 1
[LNS-virtual-template1] quit
# 设置一个L2TP组,指定接收呼叫的虚拟接口模板。
[LNS] l2tp-group 1
[LNS-l2tp1] allow l2tp virtual-template 1
# 启用隧道验证并设置隧道验证密码。
[LNS-l2tp1] tunnel authentication
[LNS-l2tp1] tunnel password simple aabbcc
l 多个企业共用一个LNS,不同的企业用户需要与自己的总部进行通讯,网络的地址采用的是私有地址。
l 一般情况下,用户无法通过Internet直接访问企业内部的服务器。通过建立VPN并支持多域,用户就可以访问自己企业内部网络的数据。
企业1的域名为aaa.net,Host A为企业1用户;
企业2的域名为bbb.net,Host B为企业2用户。
(1) 用户侧的配置
在用户侧配置拨号连接,拨号号码为LAC的接入号码,拨号用户接受由LNS分配的地址。
对于Host A而言,在弹出的拨号终端窗口中输入用户名vpdn1@aaa.net,密码为11111(此用户名与密码已在LNS中注册)。
对于Host B而言,在弹出的拨号终端窗口中输入用户名vpdn2@bbb.net,密码为22222(此用户名与密码已在LNS中注册)。
(2) 安全网关VG1(LAC侧)的配置
(本例中LAC侧的Ethernet1/0和Ethernet1/1是用户接入接口,LAC侧与隧道相连接的Ethernet1/2的IP地址为1.1.2.1,LNS侧与隧道相连接的Ethernet1/0的IP地址为1.1.2.2。)
# 设置用户名及密码。
<LAC> system-view
[LAC] local-user vpdn1
[LAC-luser-vpdn1] password simple 11111
[LAC-luser-vpdn1] service-type ppp
[LAC-luser-vpdn1] quit
[LAC] local-user vpdn2
[LAC-luser-vpdn2] password simple 22222
[LAC-luser-vpdn2] service-type ppp
[LAC-luser-vpdn2] quit
# 配置域用户采用本地认证。
[LAC] domain aaa.net
[LAC-isp-aaa.net] authentication ppp local
[LAC-isp-aaa.net] quit
[LAC] domain bbb.net
[LAC-isp-bbb.net] authentication ppp local
[LAC-isp-bbb.net] quit
# 在Ethernet1/0和Ethernet1/1接口上配置PPPoE server。
[LAC] interface ethernet 1/0
[LAC-Ethernet1/0] pppoe-server bind virtual-template 100
[LAC-Ethernet1/0] quit
[LAC] interface ethernet 1/1
[LAC-Ethernet1/1] pppoe-server bind virtual-template 101
[LAC-Ethernet1/1] quit
# 在Ethernet1/2接口上配置IP地址。
[LAC] interface ethernet 1/2
[LAC-Ethernet1/2] ip address 1.1.2.1 255.255.255.0
[LAC-Ethernet1/2] quit
# 在虚模板上启动CHAP认证。
[LAC] interface virtual-template 100
[LAC-Virtual-Template100] ppp authentication-mode chap domain aaa.net
[LAC-Virtual-Template100] quit
[LAC] interface virtual-template 101
[LAC-Virtual-Template101] ppp authentication-mode chap domain bbb.net
[LAC-Virtual-Template101] quit
# 设置两个L2TP组并配置相关属性。
[LAC] l2tp enable
[LAC] l2tp-group 1
[LAC-l2tp1] tunnel name LAC
[LAC-l2tp1] start l2tp ip 1.1.2.2 domain aaa.net
[LAC-l2tp1] quit
[LAC] l2tp-group 2
[LAC-l2tp2] tunnel name LAC
[LAC-l2tp2] start l2tp ip 1.1.2.2 domain bbb.net
# 启用隧道验证并设置隧道验证密码。
[LAC-l2tp2] tunnel authentication
[LAC-l2tp2] tunnel password simple 12345
[LAC-l2tp2] quit
[LAC] l2tp-group 1
[LAC-l2tp1] tunnel authentication
[LAC-l2tp1] tunnel password simple 12345
(3) 安全网关VG2(LNS侧)的配置。
<VG2> system-view
[VG2] l2tp enable
# 创建两个用户名及密码
[LNS] local-user vpdn1
[LNS-luser-vpdn1] password simple 11111
[LNS-luser-vpdn1] service-type ppp
[LNS-luser-vpdn1] quit
[LNS] local-user vpdn2
[LNS-luser-vpdn2] password simple 22222
[LNS-luser-vpdn2] service-type ppp
[LNS-luser-vpdn2] quit
# 配置LNS侧与隧道相连接的Ethernet1/0的IP地址为1.1.2.2。
[LNS] interface ethernet 1/0
[LNS-Ethernet1/0] ip address 1.1.2.2 255.255.255.0
[LNS-Ethernet1/0] quit
# 创建两个地址池。
[LNS] domain bbb.net
[LNS-isp-bbb.net] authentication ppp local
[LNS-isp-bbb.net] ip pool 1 10.0.1.10 10.0.1.100
[LNS-isp-bbb.net] quit
[LNS] domain aaa.net
[LNS-isp-aaa.net] authentication ppp local
[LNS-isp-aaa.net] ip pool 1 10.0.2.10 10.0.2.100
[LNS-isp-aaa.net] quit
# 创建两个相应的virtual template。
[LNS]interface virtual-template 1
[LNS-Virtual-Template1] ip address 202.38.161.1 255.255.255.0
[LNS-Virtual-Template1] remote address pool 1
[LNS-Virtual-Template1] ppp authentication-mode chap domain bbb.net
[LNS-Virtual-Template1] quit
[LNS] interface virtual-template 2
[LNS-Virtual-Template2] ip address 1.1.2.2 255.255.255.0
[LNS-Virtual-Template2] remote address pool 1
[LNS-Virtual-Template2] ppp authentication-mode chap domain aaa.net
[LNS-Virtual-Template2] quit
# 创建两个相应的L2TP-group组。
[LNS] l2tp-group 3
[LNS-l2tp3] tunnel authentication
[LNS-l2tp3] allow l2tp virtual-template 1 remote LAC domain aaa.net
[LNS-l2tp3] tunnel password simple 12345
[LNS-l2tp3] quit
[LNS] l2tp-group 4
[LNS-l2tp4] tunnel authentication
[LNS-l2tp4] allow l2tp virtual-template 2 remote LAC domain bbb.net
[LNS-l2tp4] tunnel password simple 12345
上述配置中,如果LNS端需要采用RADIUS验证,请修改AAA配置即可。关于AAA的具体配置请参考“安全分册”中的“AAA RADIUS HWTACACS配置”。
安全网关支持同时作为LAC及LNS,并支持同时有多路用户呼入;只要内存及线路不受限制,L2TP可以同时接收和发起多个呼叫。这些复杂组网的需求及配置可以综合参考以上的几种组网情况,综合应用。
特别需要注意的是静态路由的配置,许多应用是依靠路由来发起的。
VPN创建连接的过程比较复杂,这里就几种常见的情况进行分析。在进行VPN排错之前,请先确认LAC与LNS已在公共网上建立了正确的连接。
用户登录失败
用户登录失败主要有以下几种原因:
l Tunnel建立失败,Tunnel不能建立的原因有:
(1) 在LAC端,LNS的地址设置不正确。
(2) LNS(通常为路由器)端没有设置可以接收该隧道对端的L2TP组,具体可以查看allow命令的说明。
(3) Tunnel验证不通过,如果配置了验证,应该保证双方的隧道密码一致。
(4) 如果是本端强制挂断了连接,而由于网络传输等原因,对端还没有收到相应的Disconnect报文,此时对端发起了一个隧道连接,会连不上,因为对端必须相隔一定的时间才能侦测到链路被挂断。
l PPP协商不通过,可能原因有:
(1) LAC端设置的用户名与密码有误,或者是LNS端没有设置相应的用户。
(2) LNS端不能分配地址,比如地址池设置的较小,或没有进行设置。
(3) 密码验证类型不一致。如Windows 2000所创建的VPN连接缺省的验证类型为MSCHAP,如果对端不支持MSCHAP,建议改为CHAP。
数据传输失败,在建立连接后数据不能传输,如Ping不通对端。
可能有如下原因。
l 用户设置的地址有误:一般情况下,由LNS分配地址,而用户也可以指定自己的地址。如果指定的地址和LNS所要分配的地址不属于同一个网段,就会发生这种情况,建议由LNS统一分配地址。
l 网络拥挤:Internet主干网产生拥挤,丢包现象严重。L2TP是基于UDP(用户数据报文)进行传输的,UDP不对报文进行差错控制;如果是在线路质量不稳定的情况下进行L2TP应用,有可能会产生Ping不通对端的情况。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!