第210篇:IPsec VPN 原理:IKEv1/v2 与 SA 建立
关键词:IPsec VPN、IKE、IKEv1、IKEv2、SA、Phase 1、Phase 2、IKE SA、IPsec SA、Diffie-Hellman
一、引言
IPsec(Internet Protocol Security)VPN 是实现两个远程站点之间安全通信的行业标准技术。与 SSL VPN 面向单个远程用户的接入场景不同,IPsec VPN 主要面向站点到站点(Site-to-Site)的组网需求,用于保护两个网络之间传输的所有 IP 流量,无论其使用的是哪种上层协议。
IPsec VPN 的核心技术在于密钥协商和安全联盟(Security Association, SA)的建立。IKE(Internet Key Exchange)协议自动化了密钥协商和 SA 建立的全过程,免去了手动配置共享密钥的繁琐和安全隐患。理解 IKEv1 和 IKEv2 的协商流程、SA 的层级结构以及 Diffie-Hellman 密钥交换的数学原理,是掌握 IPsec VPN 的关键。
二、核心概念
2.1 IPsec 协议架构
IPsec VPN 由控制面和数据面两个层面组成:
| 层面 | 协议 | 端口 | 作用 |
|---|---|---|---|
| 控制面 | IKEv1/IKEv2 | UDP 500(ISAKMP)/ UDP 4500(NAT-T) | 协商加密算法、生成共享密钥、建立 SA |
| 数据面 | ESP | 协议号 50 | 加密+认证业务数据 |
| 数据面 | AH | 协议号 51 | 仅认证业务数据(较少使用) |
2.2 安全联盟(SA)的层级
SA 是 IPsec 的最小工作单元,是一条单向的安全传输通道。IPsec 包含两个层级的 SA:
| SA 类型 | 全称 | 作用 | 协商阶段 |
|---|---|---|---|
| IKE SA | Internet Key Exchange SA | 保护 IKE 协商报文本身的安全 | Phase 1 |
| IPsec SA | IP Security SA | 保护实际业务数据的安全 | Phase 2 |
IKE SA 是双向的(一条 IKE SA 保护双向的协商报文),而 IPsec SA 是单向的(一个方向的通信需要一条独立的 IPsec SA,因此一条完整的 VPN 隧道需要两条 IPsec SA)。
2.3 Diffie-Hellman 密钥交换
Diffie-Hellman(DH)密钥交换是 IKE 协议实现安全密钥协商的数学基础。其核心思想是:两个通信方在不安全的信道上,通过交换公开信息,各自独立计算出相同的共享密钥,而窃听者即使截获所有公开信息也无法推算出该密钥。
| DH 组 | 密钥长度 | 安全性 | 性能 |
|---|---|---|---|
| Group 1 | 768 bit | 不推荐 | 快 |
| Group 2 | 1024 bit | 中等 | 较快 |
| Group 5 | 1536 bit | 推荐 | 中等 |
| Group 14 | 2048 bit | 推荐 | 较慢 |
| Group 19 (ECP) | 256 bit | 高 | 快 |
| Group 24 (ECP) | 384 bit | 最高 | 较快 |
三、技术细节
3.1 IKEv1 Phase 1 协商流程(主模式)
IKEv1 Phase 1 建立 IKE SA,主模式(Main Mode)通过六次消息交换完成:

3.2 IKEv1 Phase 2 协商流程(快速模式)
Phase 2 在已建立的 IKE SA 保护下协商 IPsec SA:

3.3 IKEv1 与 IKEv2 对比
| 对比项 | IKEv1 | IKEv2 |
|---|---|---|
| 协商消息数 | Phase 1: 6次 + Phase 2: 3次 | IKE SA: 4次 + IPsec SA: 2次 |
| SA 结构 | Phase 1/Phase 2 两阶段 | Child SA 模型 |
| ID 保护 | 仅在认证消息中加密 | 从第一条消息开始加密 |
| NAT 穿越 | 需要额外扩展(NAT-T) | 原生支持 |
| MOBIKE | 不支持 | 支持(移动性) |
| 碎片处理 | 不支持 | 原生支持 |
| 实现复杂度 | 低 | 中等 |
| 兼容性 | 广泛 | 较新设备 |
四、实战配置/案例分析
4.1 华为 USG IPsec VPN 完整配置
# ============================================
# 场景:总部与分公司之间建立IPsec VPN
# 总部外网IP:203.0.113.1
# 分公司外网IP:198.51.100.1
# 总部内网:10.1.0.0/16
# 分公司内网:10.2.0.0/16
# ============================================
# 总部防火墙配置
# ============================================
system-view
sysname HQ-VPN-GW
# 1. 配置IKE对等体(Phase 1参数)
ike proposal 1
encryption-algorithm aes-cbc-256
hash-algorithm sha256
authentication-method pre-shared-key
dh-group group14
quit
ike peer branch-office
version 2
pre-shared-key cipher ShareKey@2024
proposal 1
peer-ip 198.51.100.1
quit
# 2. 配置IPsec变换集(Phase 2参数)
ipsec proposal 1
encapsulation-mode tunnel
auth-algorithm sha256
encrypt-algorithm aes-cbc-256
encrypt-algorithm aes-gcm-256
lifetime 3600
pfs
dh-group group14
quit
quit
# 3. 配置安全策略(ACL定义保护流量)
acl 3000
rule 5 permit ip source 10.1.0.0 0.0.255.255 destination 10.2.0.0 0.0.255.255
quit
# 4. 配置IPsec策略
ipsec policy branch-vpn 10 isakmp
security-domain system
# 触发IPsec的条件(保护流量)
selector ip-acl 3000
# Phase 1对等体
ike-peer branch-office
# Phase 2变换集
proposal 1
quit
quit
# 5. 在出接口应用IPsec策略
interface GigabitEthernet 0/0/0
description To-Internet
ip address 203.0.113.1 255.255.255.0
ipsec policy branch-vpn
quit
# ============================================
# 分公司防火墙配置(镜像配置)
# ============================================
system-view
sysname Branch-VPN-GW
# 1. IKE对等体
ike proposal 1
encryption-algorithm aes-cbc-256
hash-algorithm sha256
authentication-method pre-shared-key
dh-group group14
quit
ike peer headquarter
version 2
pre-shared-key cipher ShareKey@2024
proposal 1
peer-ip 203.0.113.1
quit
# 2. IPsec变换集
ipsec proposal 1
encapsulation-mode tunnel
auth-algorithm sha256
encrypt-algorithm aes-cbc-256
encrypt-algorithm aes-gcm-256
lifetime 3600
pfs
dh-group group14
quit
quit
# 3. 保护流量ACL
acl 3000
rule 5 permit ip source 10.2.0.0 0.0.255.255 destination 10.1.0.0 0.0.255.255
quit
# 4. IPsec策略
ipsec policy hq-vpn 10 isakmp
selector ip-acl 3000
ike-peer headquarter
proposal 1
quit
quit
# 5. 出接口应用
interface GigabitEthernet 0/0/0
description To-Internet
ip address 198.51.100.1 255.255.255.0
ipsec policy hq-vpn
quit
4.2 诊断与排障命令
# 查看IKE SA状态
display ike peer
# 输出示例:
# Peer: branch-office
# State: UP
# Version: IKEv2
# Mode: Main Mode
# Encryption: AES-256-CBC
# Hash: SHA256
# DH Group: Group14
# 查看IPsec SA状态
display ipsec sa
# 输出示例:
# Security Associations Current Number: 2
# Tunnel Mode
# SPI(In): 0x1A2B3C4D
# SPI(Out): 0x5E6F7A8B
# Protocol: ESP
# Encrypt: AES-256-CBC
# Auth: SHA256
# PFS: Group14
# Lifetime: 3456 seconds remaining
# 查看IPsec协商失败日志
display ipsec error-statistics
# 常见错误:
# 1. IKE协商超时:检查NAT穿越和防火墙策略
# 2. SA不匹配:检查两端变换集参数是否一致
# 3. 认证失败:检查Pre-Shared Key或证书
# 清除SA(用于重新协商)
reset ipsec sa
reset ike sa
4.3 故障案例:IPsec VPN 协商失败
故障现象:总部与新建分公司之间的 IPsec VPN 无法建立,两端防火墙均显示 IKE 协商失败。
排查过程:
- 检查两端 IKE 状态:
# 总部
display ike peer
# State: DOWN
# Error: No response from peer
# 分公司
display ike peer
# State: DOWN
# Error: SA mismatch
- 检查网络连通性:
# 从总部ping分公司公网IP
ping 198.51.100.1
# Ping 成功,说明网络层连通
# 检查UDP 500端口
telnet 198.51.100.1 500
# 连接超时,说明UDP 500端口被中间防火墙阻断
-
根因分析:分公司部署在云服务提供商的 VPC 中,其安全组规则未放行 UDP 500(IKE)和 UDP 4500(NAT-T)端口,导致 IKE 协商报文被云安全组拦截。
-
修复措施:
# 在云安全组中添加以下入站规则:
# 协议:UDP,端口:500,源:203.0.113.1/32
# 协议:UDP,端口:4500,源:203.0.113.1/32
# 协议:ESP(协议号50),源:203.0.113.1/32
# 协议:AH(协议号51),源:203.0.113.1/32
- 修复后验证:
display ike peer
# State: UP ✓
display ipsec sa
# Security Associations Current Number: 2 ✓
经验总结:IPsec VPN 协商失败常见原因: - NAT 穿越问题(UDP 4500 端口未放行) - 两端 IKE 参数不匹配(加密算法、HASH、DH 组) - Pre-Shared Key 不一致 - 保护流量 ACL 不匹配 - 中间防火墙/安全组拦截 UDP 500/4500 或 ESP/AH 协议
五、总结
| 知识点 | 核心要点 |
|---|---|
| IPsec 架构 | IKE(控制面)+ ESP/AH(数据面) |
| IKE SA | 保护协商报文安全,双向,Phase 1 建立 |
| IPsec SA | 保护业务数据安全,单向,Phase 2 建立 |
| Phase 1 | 主模式6次交互/野蛮模式3次交互 |
| Phase 2 | 快速模式3次交互,协商IPsec参数 |
| IKEv2 改进 | 减少消息数、原生NAT-T、ID保护 |
| DH 密钥交换 | 在不安全信道上协商共享密钥 |
| 排障要点 | 网络连通→端口放行→参数匹配→Key一致→ACL匹配 |
思考
- 为什么 IPsec SA 是单向的,而 IKE SA 是双向的?这种设计对隧道建立和运维有什么影响?
- PFS(完美前向保密)在 Phase 2 中的作用是什么?如果禁用了 PFS,对已经建立的 IPsec SA 会有什么安全隐患?
- IKEv2 相比 IKEv1 减少了协商消息数,这是如何实现的?IKEv2 的 Child SA 模型与 IKEv1 的 Phase 1/Phase 2 模型在概念上有什么对应关系?
下篇预告:第211篇:IPsec VPN 隧道模式与传输模式