VPDN+IPsec完整连接过程笔记
本文最后更新于 2025年9月22日 下午
VPDN+IPsec完整连接过程笔记
一、核心概念与对象定义(含英文缩写)
在理解连接流程前,需明确参与交互的核心设备、协议及组件,避免混淆:
英文缩写/全称 | 中文名称 | 核心作用 |
---|---|---|
VPDN (Virtual Private Dial-up Network) | 虚拟专用拨号网络 | 基于公共网络(互联网/运营商网络),通过拨号建立远程接入企业内网的逻辑通道 |
IPsec (Internet Protocol Security) | 互联网协议安全 | 一套协议组合,通过加密、认证保障IP层数据传输的安全性(机密性、完整性、抗重放) |
Client | 用户终端 | 发起连接的设备(如办公电脑、工业监控终端、物联网设备) |
LAC (L2TP Access Concentrator) | L2TP访问集中器 | 运营商部署的接入设备,接收用户拨号请求,转发至企业侧LNS |
LNS (L2TP Network Server) | L2TP网络服务器 | 企业侧部署的服务器,是VPDN隧道终点,负责终结隧道、对接企业内网 |
RADIUS (Remote Authentication Dial-In User Service) | 远程认证拨号用户服务 | 企业/运营商部署的认证服务器,校验用户身份合法性及权限 |
PPP (Point-to-Point Protocol) | 点对点协议 | 建立用户终端与LAC、LNS之间的基础数据链路,支持认证、IP分配 |
L2TP (Layer 2 Tunnel Protocol) | 第二层隧道协议 | 在LAC与LNS之间建立隧道,封装PPP帧(用户数据),实现跨公网传输 |
IKE (Internet Key Exchange) | 互联网密钥交换协议 | IPsec的“密钥协商工具”,负责生成加密密钥、建立安全关联(SA),不直接加密数据 |
IPsec SA (Security Association) | IPsec安全关联 | IPsec的“通信契约”,记录双方协商的加密算法(如AES)、认证算法(如SHA)、密钥等,单向生效(需 inbound/outbound 成对) |
ESP (Encapsulating Security Payload) | 封装安全载荷 | IPsec核心加密协议,同时实现数据加密和完整性认证(VPDN场景首选) |
AH (Authentication Header) | 认证头 | IPsec协议之一,仅做完整性认证和身份校验,不加密数据(VPDN场景极少用) |
SPI (Security Parameter Index) | 安全参数索引 | 标识IPsec SA的唯一编号,用于接收方快速匹配对应的加密规则 |
ECDH (Elliptic Curve Diffie-Hellman) | 椭圆曲线迪菲-赫尔曼 | IKE协商中用于生成共享密钥的算法,无需传输密钥本身,仅交换公钥即可计算一致密钥 |
二、VPDN+IPsec 完整连接流程(5大阶段)
VPDN+IPsec的连接是“拨号建链路→隧道传数据→加密保安全”的复合过程,需经历5个阶段,各阶段环环相扣:
阶段1:用户终端与LAC建立PPP基础链路
核心目标:通过拨号建立用户终端与运营商LAC之间的点对点数据链路,为后续隧道传输打基础。
sequenceDiagram
participant C as 用户终端(Client)
participant L as LAC(运营商)
C->>L: 拨号请求(账号/密码)
L->>C: LCP 参数协商 (MTU/压缩等)
C->>L: 回应确认
L->>C: CHAP 挑战(随机数)
C->>L: CHAP 响应(加密后的随机数)
L->>C: 认证结果(成功)
Note over C,L: PPP 链路建立成功
参数配置与拨号发起
用户在终端(如电脑)配置VPDN拨号参数:运营商提供的VPDN账号/密码、LAC公网地址,通过本地网络(宽带、4G/5G)向LAC发起拨号请求。PPP链路协商(LCP阶段)
- 终端与LAC通过 LCP(链路控制协议) 协商链路参数:最大传输单元(MTU)、数据压缩方式、链路超时时间等。
- 协商通过后,建立基础数据链路(物理层/数据链路层连通)。
PPP临时认证(CHAP/PAP阶段)
- LAC通过 CHAP(挑战-响应认证协议,优先) 或 PAP(密码认证协议,明文传输,安全性低) 校验用户身份:
- CHAP流程:LAC发送随机“挑战码”→终端用账号密码加密挑战码→LAC解密后比对,确认身份合法。
- 认证通过后,终端与LAC的PPP链路正式激活。
- LAC通过 CHAP(挑战-响应认证协议,优先) 或 PAP(密码认证协议,明文传输,安全性低) 校验用户身份:
阶段2:LAC与LNS建立L2TP隧道
核心目标:在LAC与企业侧LNS之间建立L2TP隧道,封装用户PPP帧,实现跨公网传输(此时数据暂未加密,需后续IPsec保护)。
sequenceDiagram
participant LAC as LAC
participant LNS as LNS
LAC->>LNS: 隧道建立请求 (用户信息、LAC 标识)
LNS->>LAC: 分配 Tunnel ID / Session ID
LAC->>LNS: 确认隧道参数
Note over LAC,LNS: L2TP 隧道建立成功
L2TP隧道协商发起
LAC验证用户拨号请求后,向企业侧LNS发送 L2TP隧道建立请求,携带用户信息(账号、拨号类型)、LAC自身标识(如公网IP)。L2TP隧道参数确认
- LAC与LNS通过L2TP协议协商核心参数:
- 隧道ID(标识唯一隧道,如LAC→LNS为Tunnel ID 100,LNS→LAC为Tunnel ID 200);
- 会话ID(区分同一隧道内不同用户的连接,如用户A为Session ID 5,用户B为Session ID 6);
- 隧道验证(可选,通过预共享密钥确认LAC与LNS身份,防止非法设备接入)。
- LAC与LNS通过L2TP协议协商核心参数:
L2TP隧道激活
协商通过后,LAC与LNS之间形成逻辑隧道,用户终端的PPP帧可通过该隧道传输(此时数据以明文形式封装在L2TP报文中,需进入IPsec阶段加密)。
阶段3:LAC与LNS建立IPsec加密隧道(核心安全环节)
核心目标:通过IKE协商生成加密密钥和安全关联(SA),建立IPsec隧道,加密L2TP隧道的所有流量,防止公网传输中被窃听、篡改。
sequenceDiagram
participant LAC as LAC
participant LNS as LNS
Note over LAC,LNS: 阶段1: 建立 IKE SA
LAC->>LNS: 提供算法列表 + Nonce + ECDH 公钥
LNS->>LAC: 选择算法 + Nonce + ECDH 公钥
Note over LAC,LNS: 双方计算共享密钥
LAC->>LNS: 身份认证(加密)
LNS->>LAC: 身份认证响应
Note over LAC,LNS: IKE SA 建立成功
Note over LAC,LNS: 阶段2: 建立 IPsec SA
LAC->>LNS: 提议 ESP + AES + SHA
LNS->>LAC: 确认参数
Note over LAC,LNS: 双方生成 IPsec 加密/认证密钥<br/>IPsec SA 生效
3.1 IKE协商:生成密钥与安全关联(2个子阶段)
IKE是IPsec的“前置工具”,分两步完成密钥和规则协商,确保后续加密参数一致。
子阶段1:建立IKE SA(保护后续协商安全)
- 目的:建立临时加密通道(IKE SA),避免后续IPsec参数协商被窃听。
- 流程:
- IKE_SA_INIT Request(LAC→LNS):
LAC发送支持的算法列表(加密:AES-256-GCM;哈希:SHA-256;密钥交换:ECDH)、随机数(Nonce)、LAC的ECDH公钥。 - IKE_SA_INIT Response(LNS→LAC):
LNS从LAC的算法列表中选择一套(如确定AES-256+SHA-256+ECDH),返回自身随机数、ECDH公钥,可选附加LNS证书(身份标识)。 - 共享密钥生成:
LAC和LNS分别用自身私钥、对方公钥、双方随机数,通过ECDH算法计算出 共享密钥(Shared Secret),再衍生出IKE SA的加密密钥、认证密钥(双方结果完全一致,无需传输密钥)。 - IKE_AUTH Request/Response(身份认证):
- LAC用IKE SA密钥加密自身身份(如LAC公网IP)和认证数据(私钥签名的哈希值),发送给LNS;
- LNS验证LAC身份后,同样加密自身身份返回;
- 验证通过,IKE SA建立成功(有效期几小时,用于保护后续子SA协商)。
- IKE_SA_INIT Request(LAC→LNS):
子阶段2:建立IPsec SA(确定数据加密规则)
- 目的:在IKE SA保护下,协商IPsec的具体加密规则,生成IPsec SA。
- 流程:
- CREATE_CHILD_SA Request(LAC→LNS):
LAC提出IPsec参数需求:隧道模式(必选,保护原始IP地址)、ESP协议(加密+认证)、加密算法(AES-256-GCM)、认证算法(SHA-256)。 - CREATE_CHILD_SA Response(LNS→LAC):
LNS确认参数,双方基于IKE SA密钥,通过密钥派生算法生成 IPsec SA的加密密钥、认证密钥。 - IPsec SA生效:
双方记录IPsec SA信息(SPI、算法、密钥、有效期:几分钟到1小时),此时IPsec隧道的“加密规则”正式确定。
- CREATE_CHILD_SA Request(LAC→LNS):
3.2 IPsec隧道激活:加密L2TP流量
IPsec SA建立后,LAC与LNS之间的所有L2TP隧道流量(用户PPP数据)会被ESP协议加密,封装流程如下:
- 原始数据:L2TP封装后的报文(含用户PPP帧,源IP:LAC内网IP,目的IP:LNS内网IP);
- ESP加密:用IPsec SA加密密钥(AES-256)加密整个原始数据,同时用认证密钥(SHA-256)计算数据哈希值(存于ESP认证字段,防篡改);
- 添加ESP头/尾:
- 头部:SPI(标识对应的IPsec SA)、序列号(防重放攻击,每次发送递增);
- 尾部:填充信息(确保数据长度符合加密块要求)、Next Header(标识原始协议为L2TP);
- 添加公网IP头:源IP(LAC公网IP)、目的IP(LNS公网IP)、协议字段=50(标识ESP协议);
- 公网传输:加密后的报文通过互联网发送至LNS,即使被截取也无法解密。
阶段4:用户身份二次认证(企业级权限校验)
核心目标:通过企业内部RADIUS服务器,做更严格的身份和权限校验(避免运营商侧认证通过但非企业合法用户的情况)。
LNS发起认证请求
LNS从L2TP报文中提取用户账号/密码,发送至企业内部RADIUS服务器,请求校验。RADIUS认证与权限返回
- RADIUS服务器查询用户白名单、权限配置(如是否允许访问财务系统、可访问的内网网段);
- 认证通过:返回用户权限信息(如可访问的内网网段192.168.1.0/24、VLAN ID=10);
- 认证失败:拒绝用户接入,终止连接。
阶段5:分配内网IP,访问企业资源
核心目标:用户终端获得企业内网IP,通过加密隧道访问内网资源,完成通信闭环。
分配企业内网IP(IPCP阶段)
LNS通过 PPP的IPCP(IP控制协议) 给用户终端分配企业内网IP地址(如192.168.1.100,与企业办公区设备同网段),同时返回DNS服务器地址、子网掩码。用户访问内网资源
- 终端发送请求(如访问OA系统):数据先封装为PPP帧→L2TP隧道封装→IPsec加密→公网传输至LNS;
- LNS处理:解密IPsec流量→解封装L2TP/PPP帧→根据用户权限转发至内网服务器(如OA服务器192.168.1.5);
- 响应返回:服务器响应数据按原路(内网→LNS→IPsec加密→L2TP隧道→用户终端)返回,用户终端接收后解析显示。
密钥更新(无缝保障安全)
IPsec SA到期前(如1小时),LAC与LNS通过IKE的 CREATE_CHILD_SA 消息协商新的IPsec SA(复用已有的IKE SA,无需重新认证),实现密钥“无缝更新”,避免长期使用同一密钥导致安全风险。
三、关键技术总结
3.1 数据封装顺序(从用户到公网)
用户应用数据(如HTTP请求)→ PPP帧封装(含用户标识)→ L2TP隧道封装(跨公网传输)→ IPsec ESP加密(安全保障)→ 公网IP头封装(路由转发)
flowchart TB
App["用户应用数据<br/>(HTTP 请求)"]
PPP["PPP 帧封装<br/>(用户认证信息)"]
L2TP["L2TP 隧道封装<br/>(Tunnel ID / Session ID)"]
ESP["IPsec ESP 加密<br/>(AES+SHA, SPI, 序列号)"]
IP["公网IP头<br/>(LAC公网 → LNS公网)"]
App --> PPP --> L2TP --> ESP --> IP
3.2 IPsec的核心安全保障
安全维度 | 实现机制 |
---|---|
机密性 | AES-256等对称加密算法,加密IP层数据 |
完整性 | SHA-256等哈希算法,生成数据摘要,防止篡改 |
抗重放 | ESP头部序列号,拒绝重复接收的数据包 |
身份认证 | IKE协商中的预共享密钥/证书,确保LAC与LNS为授权设备 |
3.3 适用场景
- 企业员工远程办公(在家/出差访问内网OA、ERP);
- 分支机构互联(如上海分公司通过VPDN+IPsec访问杭州总部内网);
- 物联网设备远程管理(如各地充电桩、ATM机接入企业管理平台);
- 高安全需求行业(金融、政务、医疗),需符合数据传输合规要求。
四、整体流程图
sequenceDiagram
participant Client as 用户终端(Client)
participant LAC as LAC(运营商接入设备)
participant LNS as LNS(企业L2TP服务器)
participant RADIUS as RADIUS(企业认证服务器)
participant Intranet as 企业内网资源
%% 阶段1 PPP 拨号
Client->>LAC: 拨号请求(账号/密码)
LAC->>Client: LCP 参数协商
Client->>LAC: CHAP/PAP 认证响应
LAC->>Client: 认证成功 → PPP 链路建立
%% 阶段2 L2TP 隧道
LAC->>LNS: 请求建立 L2TP 隧道
LNS->>LAC: 分配 Tunnel ID / Session ID
Note over LAC,LNS: L2TP 隧道建立成功
%% 阶段3 IPsec 建立
LAC->>LNS: IKE_SA_INIT (算法/Nonce/ECDH 公钥)
LNS->>LAC: 响应 (选择算法/公钥)
Note over LAC,LNS: 计算共享密钥,建立 IKE SA
LAC->>LNS: CREATE_CHILD_SA (ESP/AES/SHA 提议)
LNS->>LAC: 确认参数
Note over LAC,LNS: IPsec SA 生效,L2TP 流量受保护
%% 阶段4 二次认证
LNS->>RADIUS: 转发用户凭证进行认证
RADIUS->>LNS: 返回认证结果+权限
LNS->>Client: 通知认证通过/拒绝
%% 阶段5 分配内网IP并访问
LNS->>Client: IPCP 分配内网IP/DNS
Client->>Intranet: 访问内网应用(OA/ERP等)
Intranet->>Client: 返回业务数据(通过L2TP+IPsec)