第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)通过六次消息交换完成:

IKEv1 Phase 1 协商流程(主模式) - 图示

3.2 IKEv1 Phase 2 协商流程(快速模式)

Phase 2 在已建立的 IKE SA 保护下协商 IPsec SA:

IKEv1 Phase 2 协商流程(快速模式) - 图示

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 协商失败。

排查过程:

  1. 检查两端 IKE 状态:
# 总部
display ike peer
# State: DOWN
# Error: No response from peer

# 分公司
display ike peer
# State: DOWN
# Error: SA mismatch
  1. 检查网络连通性:
# 从总部ping分公司公网IP
ping 198.51.100.1
# Ping 成功,说明网络层连通

# 检查UDP 500端口
telnet 198.51.100.1 500
# 连接超时,说明UDP 500端口被中间防火墙阻断
  1. 根因分析:分公司部署在云服务提供商的 VPC 中,其安全组规则未放行 UDP 500(IKE)和 UDP 4500(NAT-T)端口,导致 IKE 协商报文被云安全组拦截。

  2. 修复措施:

# 在云安全组中添加以下入站规则:
# 协议: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
  1. 修复后验证:
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匹配

思考

  1. 为什么 IPsec SA 是单向的,而 IKE SA 是双向的?这种设计对隧道建立和运维有什么影响?
  2. PFS(完美前向保密)在 Phase 2 中的作用是什么?如果禁用了 PFS,对已经建立的 IPsec SA 会有什么安全隐患?
  3. IKEv2 相比 IKEv1 减少了协商消息数,这是如何实现的?IKEv2 的 Child SA 模型与 IKEv1 的 Phase 1/Phase 2 模型在概念上有什么对应关系?

下篇预告:第211篇:IPsec VPN 隧道模式与传输模式