很多企业远程办公场景都会选择部署L2TP与IPsec组合协议,兼顾二层数据透传的灵活性和IPsec的传输加密能力,不少刚接触VPN运维的技术人员很容易混淆两个协议的独立流程,反复调整配置也无法完成连接。本文就以企业常用的分支网关对接远程Windows客户端的实际场景为参照,拆解L2TP与IPsec组合:连接建立过程的全链路细节,clash mate同步给出每一步的验证方式和常见配置误区。
连接建立前的前置配置校验
在发起连接之前,首先要确认两端的基础配置参数匹配,比如作为LNS端的企业网关和远程客户端,IPsec部分的预共享密钥、IKE协商版本、加密算法套件必须完全一致,很多新手上来直接配置L2TP参数,忽略IPsec的基础校验,后续连接会直接卡在初始协商阶段。
这里需要明确一个核心前提:原生L2TP协议本身没有任何加密能力,所有控制报文和后续的用户业务数据都要封装在IPsec的加密隧道里传输,所以前置校验里不能跳过IPsec的感兴趣流配置检查,clash两端的感兴趣流要覆盖本端公网地址到对端公网地址的所有流量,不要只单独放行UDP1701端口,否则IPsec第一阶段协商就会直接失败。

企业网关与远程客户端通过加密链路完成L2TP与IPsec组合协议的协商交互
第一阶段:IPsec IKE SA协商过程
这是整个L2TP与IPsec组合:连接建立过程的第一步,远程客户端首先会向LNS的公网IP发起IKE第一阶段的主模式协商,两端交换加密算法、哈希算法、身份认证方式的相关参数,通过预共享密钥或者部署的数字证书完成设备级身份认证,生成一个用于加密后续协商报文的IKE SA。
这一步的验证方式非常直观,在LNS网关的IKE对等体监控页面查看状态,如果显示“已连接”就说明第一阶段协商顺利完成,如果连接请求一直卡在协商中,大概率是两端的预共享密钥输入错误,或者中间运营商网络封堵了UDP500端口。
IKE第一阶段完成之后,两端会立刻进入IPsec的快速模式协商,生成用于加密后续业务流量的IPsec SA,这一步完成之后,两端之间传输的所有报文都会被ESP协议加密封装,公网链路中的第三方无法截获传输的明文内容。
第二阶段:L2TP隧道的控制连接建立
IPsec隧道完全就绪之后,远程客户端才会向LNS的UDP1701端口发起L2TP的SCCRQ请求报文,这个报文本身已经被IPsec加密封装,外层公网链路只能看到ESP协议的加密报文,不会直接暴露L2TP的端口信息。LNS收到合法请求之后会回复SCCRP报文,两端互相确认L2TP的版本、本地隧道标识、序列号窗口大小,完成L2TP控制隧道的建立。
这里有一个非常普遍的配置误区,很多运维人员以为L2TP的1701端口需要直接对公网开放,实际上因为前面已经有IPsec的加密封装,公网侧只需要放行UDP500和UDP4500端口就足够,1701的流量已经被ESP封装,外层看不到端口号,直接把1701端口暴露在公网反而会带来不必要的扫描攻击风险。
第三阶段:L2TP会话与用户认证完成
L2TP控制隧道建立完成之后,客户端会发起ICRQ请求,申请创建用于传输用户业务数据的专属会话,LNS收到合法请求之后就会触发用户认证的交互流程,通常是调用网关本地存储的账号密码,或者对接企业内部的RADIUS认证服务器做用户身份校验。
很多人会混淆IPsec的设备认证和L2TP的用户认证,前者是两个通信端点之间的设备级身份校验,后者是远程接入用户的身份校验,二者是完全独立的两层验证逻辑,就算IPsec协商全程成功,用户输入的账号密码错误也无法完成最终的接入流程。
用户认证通过之后,LNS会从提前配置好的内网地址池中给客户端分配企业内网的虚拟IP地址,两端完成L2TP会话的参数同步,最终生成可以透传二层数据的虚拟PPP接口,整个L2TP与IPsec组合:连接建立过程就全部完成,用户可以正常访问企业内网的业务资源。
连接异常的常见故障定位思路
如果整个连接流程走到一半意外中断,可以按照之前的阶段逐层排查,先确认IKE第一阶段有没有正常建立,排除中间网络端口封堵、两端密钥不匹配的问题,再检查IPsec SA是否正常生成,排除感兴趣流配置范围错误的问题,最后再查看L2TP隧道和会话的运行状态,排查用户账号过期、LNS内网地址池耗尽的问题。
日常运维的时候不要跳过每一步的状态校验,反复删除配置重连反而会在网关侧积累大量半开的无效SA,占用有限的VPN会话资源,最终导致后续正常接入的用户也无法完成协商。


