深入理解L2TP_VPN/IPSec原理

2018年7月2日22:11:08
L2TP/VPN基本概念
VPDN是承载PPP报文的VPN,可以为企业、小型ISP、移动办公人员提供接入服务。PPP终端接入拨号网络,拨号到NAS。NAS收到PPP报文后进行L2TP封装,最外层的IP报头经过公网路由转发后到达LNSLNS收到报文后解封装,还原PPP报文,完成了PPP报文在公共网络上的透明传输,从而在PPP终端和LNS之间建立了VPDN连接。随着以太网络的普及,PPP终端不再受限于传统的拨号网络,使用PPPoE技术,即可通过以太网络接LAC

VPDN有以下3种常用的隧道技术:

点到点隧道协议PPTP(Point-to-Point Tunneling Protocol)

二层转发L2F(Layer 2 Forwarding)

二层隧道协议L2TP(Layer 2 Tunneling Protocol)

L2TP集合了PPTP和L2F两种协议的优点,目前已被广泛接受,主要应用在单个或少数远程终端通过公共网络接入企业内联网的需要。

PPP终端
L2TP应用中,PPP终端指发起拨号,将数据封装为PPP类型的设备,如远程用户PC、企业分支网关等。
NAS
NAS网络接入服务器(Network Access Server)主要由ISP维护,连接拨号网络,是距离PPP终端地理位置最近的接入点。NAS用于传统的拨号网络中,为远程拨号用户提供VPDN服务,和企业总部建立隧道连接。
L2TP访问集中器LAC(L2TP Access Concentrator)是交换网络上具有PPP和L2TP处理能力的设备。LAC根据PPP报文中所携带的用户名或者域名信息,和LNS建立L2TP隧道连接,将PPP协商延展到LNS。在不同的组网环境中,LAC可以是不同的设备,体现了三种不同的vpn组网结构:
1.在传统的拨号网络中,ISP在NAS上部署LAC。

深入理解L2TP_VPN/IPSec原理

注:图片来源网络,如有侵权请联系删除
2.在企业分支的以太网络中,为PPP终端配备网关设备,网关作为PPPoE服务器,同时部署为LAC。

深入理解L2TP_VPN/IPSec原理

注:图片来源网络,如有侵权请联系删除
3.出差人员使用PC终端接入Internet,在PC上安装L2TP拨号软件,则PC终端为LAC。

深入理解L2TP_VPN/IPSec原理

注:图片来源网络,如有侵权请联系删除
LAC可以发起建立多条L2TP隧道使数据流之间相互隔离,即LAC可以承载多条VPDN连接。LAC在LNS和PPP终端之间传递数据。即LAC从PPP终端收到报文后进行L2TP封装发送至LNS,从LNS收到报文后进行解封装并发送至PPP终端。
LNS
L2TP网络服务器LNS(L2TP Network Server)是终止PPP会话的一端,通过LNS的认证,PPP会话协商成功,远程用户可以访问企业总部的资源。对L2TP协商,LNS是LAC的对端设备,即LAC和LNS建立了L2TP隧道;对PPP,LNS是PPP会话的逻辑终止端点,即PPP终端和LNS建立了一条点到点的虚拟链路。LNS位于企业总部私网与公网边界,通常是企业总部的网关设备。必要时,LNS还兼有网络地址转换(NAT)功能,对企业总部网络内的私有IP地址与公共IP地址进行转换。
隧道和会话
在LAC和LNS的L2TP交互过程中存在两种类型的连接。
隧道(Tunnel)连接:L2TP隧道在LAC和LNS之间建立,一对LAC和LNS可以建立多个L2TP隧道,一个L2TP隧道可以包含多个L2TP会话。
会话(Session)连接:L2TP会话发生在隧道连接成功之后,L2TP会话表示承载在隧道连接中的一个PPP会话过程。
L2TP/VPN基本原理
L2TP协议架构:
L2TP协议包含两种类型的消息,控制消息和数据消息,消息的传输在LAC和LNS之间进行。L2TP协议通过这两种消息,扩展了PPP的应用。
  • 控制消息

    用于L2TP隧道和会话连接的建立、维护和拆除。在控制消息的传输过程中,使用消息丢失重传和定时检测隧道连通性等机制来保证控制消息传输的可靠性,支持对控制消息的流量控制和拥塞控制。

  • 数据消息

    用于封装PPP数据帧并在隧道上传输。数据消息是不可靠的传输,不重传丢失的数据报文,不支持对数据消息的流量控制和拥塞控制。

图1说明了PPP报文、控制消息和数据消息在L2TP协议架构中的位置和关系。

深入理解L2TP_VPN/IPSec原理

图1 L2TP协议架构 (注:图片来源网络,如有侵权请联系删除)

控制消息承载在L2TP控制通道上,控制通道实现了控制消息的可靠传输,将控制消息封装在L2TP报头内,再经过IP网络传输。数据消息携带PPP帧承载在不可靠的数据通道上,对PPP帧进行L2TP封装,再经过IP网络传输。

L2TP协议使用UDP端口1701,这个端口号仅用于初始隧道的建立。L2TP隧道发起方任选一个空闲端口向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲端口,给发起方的选定的端口回送报文。至此,双方的端口选定,并在隧道连通的时间内不再改变。

L2TP报文结构

远程用户拨号产生的PPP报文经L2TP封装后的报文格式如图2所示。

深入理解L2TP_VPN/IPSec原理

图2 L2TP报文格式 (注:图片来源网络,如有侵权请联系删除)
L2TP报文进行了多次封装,比原始报文多出38个字节(如果需要携带序列号信息,则比原始报文多出42个字节),封装后报文的长度可能会超出接口的MTU值,而L2TP协议本身不支持报文分片功能,这时需要设备支持对IP报文的分片功能。当L2TP报文长度超出发送接口的MTU值时,在发送接口进行报文分片处理,接收端对收到分片报文进行还原,重组为L2TP报文。

L2TP报文封装

L2TP是PPP的扩展,使PPP报文可以通过隧道方式在公网网络中传输。如果组网中只应用PPP,则PPP终端发起的拨号,最远只能到达拨号网络的边缘节点NAS,此时NAS可以称为PPP会话的终止节点。而应用L2TP,则可以使PPP报文在公网透传,到达企业总部的LNS,此时LNS相当于PPP会话的终止节点。

深入理解L2TP_VPN/IPSec原理

图3 
L2TP报文封装图(注:图片来源网络,如有侵权请联系删除)
如图3所示,企业分支发送报文到企业总部,有以下过程:
  1. PPP终端:IP数据报文进行PPP(链路层)封装,发送报文。
  2. LAC:收到PPP报文后,根据报文携带的用户名或者域名判断接入用户是否为VPDN用户。
    • 是VPDN用户:对PPP报文进行L2TP封装,根据LNS的公网地址,再对L2TP报文进行UDP和IP封装。封装后的报文最外层为公网IP地址,经过公网路由转发到达LNS。
    • 非VPDN用户:对PPP报文进行PPP解封装,此时LAC为PPP会话的终止节点。
  3. LNS:收到L2TP报文后,依次解除外层的IP封装、L2TP封装、PPP封装,得到PPP承载的信息,即PPP终端发送的IP数据报文。根据报文中的目的地址,查找路由表使报文达到企业总部的目的主机。

企业总部回应分支用户时,回应报文到达LNS后查找路由表,根据转发接口进行L2TP处理,报文封装的过程和分支到总部一致。

L2TP报文传输

L2TP传输PPP报文前,需要建立L2TP隧道和会话的连接。对于首次发起的L2TP连接,有如下流程:

  1. 建立L2TP隧道连接

    LAC收到远程用户的PPP协商请求时,LAC向LNS发起L2TP隧道请求。LAC和LNS之间通过L2TP的控制消息,协商隧道ID、隧道认证等内容,协商成功后则建立起一条L2TP隧道,由隧道ID进行标识。

  2. 建立L2TP会话连接

    如果L2TP隧道已存在,则在LAC和LNS之间通过L2TP的控制消息,协商会话ID等内容,否则先建立L2TP隧道连接。会话中携带了LAC的LCP协商信息和用户认证信息,LNS对收到的信息认证通过后,则通知LAC会话建立成功。L2TP会话连接由会话ID进行标识。

  3. 传输PPP报文

    L2TP会话建立成功后,PPP终端将数据报文发送至LAC,LAC根据L2TP隧道和会话ID等信息,进行L2TP报文封装,并发送到LNS,LNS进行L2TP解封装处理,根据路由转发表发送至目的主机,完成报文的传输。

华为路由器下配置L2TP举例:
拨号软件充当LAC时LNS服务器端:
l2tp enable
#
interface GigabitEthernet1/0/0
ip address 202.1.1.1 255.255.255.0
#
aaa
local-user huawei password cipher huawei
local-user huawei privilege level 0
local-user huawei server-type ppp
#
l2tp-group 1
undo tunnel authentication
allow l2tp virtual-template 1
#
interface Virtual-Template1
ppp authentication-mode chap
remote address pool lns
ip address 192.168.1.1 255.255.255.0
#
ip pool lns
network 192.168.1.0 mask 255.255.255.0
gateway-list 192.168.1.1
#
ip route-static 0.0.0.0 0.0.0.0 202.1.1.2
当路由器充当LAC时只需修改LNS上得L2TP-GROUP:
l2tp-group 1
allow l2tp virtual-template 1 remote LAC
tunnel password cipher huawei
tunnel name LNS
LAC设备路由器上配置:
l2tp-group 1
tunnel password simple
huawei
tunnel name lac
start l2tp ip 23.1.1.3 fullusername huawei
ip route-static 192.168.1.0 255.255.255.0 Virtual-Template1----引流VPN流量到隧道虚接口
L2TP可选参数
1.LCP重协商:
LAC对接入用户认证,认证通过后,将认证信息发送给LNS,LNS根据认证信息判断用户是否合法。
如果LNS不信任LAC,需要对远程用户二次认证,则可以使用LCP重协商功能。远程用户和LNS重新开始PPP协商,协商成功后才能建立L2TP连接。LCP重协商和CHAP强制认证无法同时生效,LCP重协商优先级高,如果同时配置,则设备进行LCP重协商。
2.强制CHAP认证:
LNS收到LAC所传递的认证信息后,如果LNS对安全性要求较高,可使用强制CHAP认证功能,LNS只对远程用户进行CHAP认证。如果此时LAC使用了PAP的认证方式,就无法通过LNS的认证,不能建立L2TP会话。LCP重协商和CHAP强制认证无法同时生效,LCP重协商优先级高,如果同时配置,则设备进行LCP重协商。
3.主备LNS:
对可靠性要求较高的企业,在总部部署双网关,一主一备。当主网关故障时,业务切换到备份网关,则LAC发起的L2TP连接请求无法到达主LNS,此时可以在LAC上同时配置总部备份网关的IP地址,当第一个地址不可达时,按配置的顺序向第二个地址发起L2TP连接请求,在LAC上实现LNS的主备功能。
4.AVP参数加密:
L2TP连接的建立是通过在LAC和LNS之间交换控制消息,而控制消息中则携带了各种AVP参数,包含了用户名、密码等关键信息。此时通过部署AVP参数加密功能,在L2TP连接期间,对AVP参数加密,提高安全性。
部署AVP参数加密功能,需要先部署L2TP隧道认证功能。
5.L2TP隧道认证:
对安全要求较高时,可部署L2TP隧道认证功能,LAC和LNS上需要配置相同的认证字。
L2TP隧道建立过程时,互相验证对端的密钥是否和本端相同,达到简单的安全验证要求。
6.L2TP隧道连通性:
Hello报文用于检测LAC和LNS之间隧道的连通性。Hello报文超时,则自动拆除建立的L2TP隧道,及时释放资源。企业可以根据实际需要,部署Hello报文的时间参数。如果网络稳定,则可以加长Hello报文的发送时间间隔,减轻网络负担。如果网络不稳定,则可以减少Hello报文的发送时间间隔,及时检测隧道状态。如果LAC上配置了主备LNS地址,当使用Hello报文检测到隧道不通时,自动向配置的第二个LNS的IP地址发起L2TP连接求。
另外,设备作为LAC时,和某个LNS尝试建立隧道时发现无法与该LNS进行建立,可以将该LNS标记为不可用,并在一段时间(称为LNS锁定时间)内不再使用该LNS建立隧道。直到LNS锁定期结束,设备才尝试重新和该LNS建立隧道。
L2TP数据抓包截图

深入理解L2TP_VPN/IPSec原理

LAC为路由器设备时数据包情况

深入理解L2TP_VPN/IPSec原理

L2TP主机拨号软件充当LAC时的数据抓包
关于IPSec部分后续补充!

  • 更新时间:2018年7月2日22:11:08 ,共 5147 字。