产生背景
传统VPN需要接入专线以及长途拨号 费用过于昂贵
L2TP 简介
隧道可以传输PPP的帧 因此他工作在数据链路层 支持IP地址动态分配以及验证 拥有点对网络特性(点到多点) 不过现在基本上不用L2TP,取而代之的是SSL VPN
L2TP的会话以及LAC结构
- 一个L2TP隧道对应一个L2TP控制连接
- 一个L2TP会话,对应多个L2TPTP呼叫
- ISP提供LAC设备
- 可以由LAC设备提供附加的用户控制和管理
- 远程系统不依赖IP接入点
- 通过会话(session)来区别不同用户接入,
客户LAC拓扑结构
- 不需要ISP提供LAC服务
- 用户自建,不依赖IP接入点
- 可由LAC设备提供附附加的用户控制和管理,灵活性比较强
- 在使用人数较多的场景下,LNS的节点压力较大,需要性能较强的设备。
L2TP的封装
L2TP的连接模型
其中,控制连接由PPP触发 LAC用任意的UDP端口向LNS的UDP端口1701发起连接 连接建立完成后,进入会话建立阶段
会话的建立前提就是我们的连接已经建立 会话和PPP的连接一一对应 同一个隧道中可以承载多个会话 会话建立后即可转发PPP帧 通过Tunnel ID和Session ID来区分不同隧道和不同会话
关闭会话和连接的流程
如果还有会话在连接中,则不进行中断 直到所有会话关闭连接之后,再关闭连接
L2TP的验证
L2TP的基本配置
代码语言:javascript复制l2tp enable
/*开启L2TP*/
l2tp-group [id] mode [lnc/lns]
/*创建l2ttp组并指定l2tp组的模式是lnc还是lns*/
tunnel name [id]
/*设置隧道名称*/
user [domain [domain-name] | fullusername [user-name]]
/*配置LAC发起的L2TP连接请求触发的条件*/
lns-ip [ip-address] <number>
/*配置LNS的IP地址*/
interface virtual-template [id]
/*创建虚拟模板*/
[Virtual-template-id]ip address [ip-address] mask [mask] sub
/*配置虚拟模板接口的IP地址*/
[Virtual-template-id]remote address [ip-address | pool [pool-name]]
/*配置为用户侧分配的IP的地址池*/
[Virtual-template-id]ppp authentication-mode {chap | ms-chap | ms-chap-v2 | pap } * [[call-in] domain isp-name]
/*配置PPP验证*/