第210篇:IPsec VPN 原理:IKEv1 与 IKEv2

关键词

IPsec VPN、IKEv1、IKEv2、SA、ISAKMP、安全联盟、DH 交换、身份认证、加密算法


一、IPsec 协议族概述

1.1 IPsec 的功能

IPsec(Internet Protocol Security)是 IP 层的安全协议族,提供:

IPsec 提供的安全服务:

认证(Authentication) 验证通信对端的身份,防止假冒 AH 协议(Authentication Header) 加密(Encryption) 对数据进行加密,防止窃听 ESP 协议(Encapsulating Security Payload) 完整性(Integrity) 确保数据在传输中不被篡改 HMAC-SHA256 等 防重放(Anti-Replay) 防止攻击者截获并重放数据包 序列号 + 滑动窗口

1.2 IPsec 的协议组成

IPsec 协议族主要由三部分组成:

1. 安全协议
   AH(Authentication Header):仅认证,不加密(已很少使用)
   ESP(Encapsulating Security Payload):认证 + 加密(主流)

2. 密钥交换
   IKE(Internet Key Exchange):自动协商密钥和 SA
   IKEv1(RFC 2409):传统版本,仍然广泛使用
   IKEv2(RFC 7296):改进版本,功能更强

3. 加密算法
   认证:MD5、SHA1、SHA256、SHA384
   加密:DES、3DES、AES-128、AES-256
   DH 组:DH Group 1/2/5/14/19/21

二、IPsec 安全联盟(SA)

2.1 什么是 SA

SA(Security Association,安全联盟)是 IPsec 通信双方协商的安全参数集合:

SA 的核心参数:

SA 参数 SPI(Security Parameter Index):唯一标识 协议:ESP 或 AH 目的 IP:对端地址 加密算法:AES-256 认证算法:SHA-256 封装模式:隧道模式 / 传输模式 密钥:加密密钥 + 认证密钥 生存周期:3600 秒或 10MB 流量 防重放窗口大小:64

2.2 IKE SA vs IPsec SA

IKE 分两个阶段创建 SA:

第一阶段(IKE SA): 目的:保护 IKE 协商本身的安全 方向:双向(一个 IKE SA 保护双方通信) 顾名思义:控制面隧道

第二阶段(IPsec SA): 目的:保护实际数据传输 方向:单向(需要两个方向两个 SA) 顾名思义:数据面隧道

SA 关系图: | IKE SA(阶段 1) 保护协商过程 ┌──────────────────────────────┐ └──────────────────────────────┘ ┌──────────────────────────────┐ | IPsec SA(阶段 2,方向 A→B) IPsec SA(阶段 2,方向 B→A) | | | --- | --- | --- |


三、IKEv1 工作流程

3.1 IKEv1 阶段 1:建立 IKE SA

IKEv1 阶段 1 有两种模式:

主模式(Main Mode):6 个消息,更安全
野蛮模式(Aggressive Mode):3 个消息,更快

主模式(Main Mode)6 步交互:

消息 1-2:算法协商
  Initiator → Responder: SA 提议(加密、认证、DH 组)
  Responder → Initiator: SA 接受(选择一个提议)

消息 3-4:DH 交换
  Initiator → Responder: DH 公钥 + Nonce
  Responder → Initiator: DH 公钥 + Nonce
  ── 双方计算相同的共享密钥 ──

消息 5-6:身份认证(加密保护下)
  Initiator → Responder: 身份信息 + 认证数据
  Responder → Initiator: 身份信息 + 认证数据
  ── IKE SA 建立完成 ──

野蛮模式(Aggressive Mode):3 个消息
  消息 1:Initiator → Responder: SA 提议 + DH 公钥 + 身份
  消息 2:Responder → Initiator: SA 接受 + DH 公钥 + 身份 + 认证
  消息 3:Initiator → Responder: 认证信息
  → 更快但安全性略低(身份在加密前暴露)

3.2 IKEv1 阶段 2:建立 IPsec SA

阶段 2 使用快速模式(Quick Mode),受 IKE SA 保护:

发起方 响应方
│ │
│ 消息 1: 哈希 + 提议 (加密协议+IP) │
│────────────────────────────────────→│
│ │
│ 消息 2: 哈希 + 接受 + 新密钥材料 │
│←────────────────────────────────────│
│ │
│ 消息 3: 哈希确认 │
│────────────────────────────────────→│
│ │
│ IPsec SA 建立完成 │
│ 单向 SA (A→B) + 单向 SA (B→A) │
│ │

3.3 配置示例

# IKE 提议(阶段 1 参数)
ike proposal 1
 encryption-algorithm aes-256              # 加密:AES-256
 dh group14                                 # DH 组:Group 14 (2048-bit)
 authentication-algorithm sha256            # 认证:SHA-256
 authentication-method pre-share            # 预共享密钥
 integrity-algorithm hmac-sha256           # 完整性
 sa duration 86400                          # IKE SA 生存期 24 小时

# IKE 对等体
ike peer PEER_A
 ike-proposal 1
 pre-shared-key Huawei@123                  # 共享密钥
 remote-address 202.1.1.2                   # 对端地址

# IPsec 提议(阶段 2 参数)
ipsec proposal PROPOSAL_A
 esp authentication-algorithm sha256        # ESP 认证
 esp encryption-algorithm aes-256           # ESP 加密

# IPsec 策略
ipsec policy POLICY_A 10 isakmp
 security acl 3001                          # 需要保护的流量
 ike-peer PEER_A
 proposal PROPOSAL_A
 sa duration traffic-based 1024000           # IPsec SA 生存期 1GB 流量
 sa duration time-based 3600                 # IPsec SA 生存期 1 小时

四、IKEv2 改进

4.1 IKEv2 vs IKEv1

IKEv2 相比 IKEv1 的主要改进:

对比维度             IKEv1                    IKEv2
────────────────────────────────────────────────────
阶段数              2 阶段(6+3 消息)        1 轮(4 消息)
消息数(最小)       9 个消息                 4 个消息
NAT 穿透            需要额外 RFC             原生支持
MOBIKE             不支持                    支持(移动场景)
EAP 认证            有限                     原生支持
DPD(Dead Peer)    可选                     必须支持
SA 管理             复杂                     简化

4.2 IKEv2 的消息交换

IKEv2 只需 4 个消息完成密钥交换:

请求 1 (IKE_SA_INIT):
  Initiator → Responder: SA 提议 + DH 公钥 + Nonce

响应 1 (IKE_SA_INIT):
  Responder → Initiator: SA 接受 + DH 公钥 + Nonce
  ── 至此已计算出共享密钥 ──

请求 2 (IKE_AUTH):
  Initiator → Responder: 身份 + 认证 + 第一对 IPsec SA 的提议
  (此消息已加密保护)

响应 2 (IKE_AUTH):
  Responder → Initiator: 身份 + 认证 + IPsec SA 参数
  ── IKE SA + IPsec SA 同时建立完成 ──

4.3 IKEv2 配置示例

# IKEv2 提议
ike proposal 2
 version 2                                  # IKEv2
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha256
 authentication-method pre-share
 integrity-algorithm hmac-sha256

# IKEv2 对等体
ike peer PEER_B
 ike-proposal 2
 version 2
 pre-shared-key Huawei@123
 remote-address 202.1.2.2
!
ipsec policy POLICY_B 10 isakmp
 security acl 3002
 ike-peer PEER_B
 proposal PROPOSAL_A

五、IPsec 封装模式

5.1 传输模式(Transport Mode)

传输模式:只保护 IP 载荷,不保护原始 IP 头

原始 IP 头 TCP/UDP 数据 | 原始 IP 头 | | TCP 头 | | 数据 | | --- | --- | --- | --- | --- |

ESP 传输模式: | 原始 IP 头 | | ESP 头 | | TCP 头 | | 数据 | | ESP尾 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | ↑ 不保护 ↑ 加密 ↑ 认证

适用场景:终端到终端(端到端加密)

5.2 隧道模式(Tunnel Mode)

隧道模式:保护整个 IP 报文(包括原始 IP 头)

ESP 隧道模式: | 新 IP 头 | | ESP 头 | | 原始 IP 头 | | TCP 头 | | 数据 | | ESP尾 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | GW 地址 ↑ 整个受保护

适用场景:站点到站点 VPN(网关到网关) 远程访问 VPN(客户端到网关)


六、NAT 穿越(NAT-T)

6.1 NAT-T 原理

NAT 对 IPsec 的挑战:

问题:ESP 协议(IP 协议号 50)无法穿越 NAT
      因为 NAT 需要修改 TCP/UDP 端口,ESP 没有端口

NAT-T(NAT Traversal)解决方案:
  将 ESP 报文封装在 UDP 中(UDP 4500)

             NAT 设备                 ┌──────┐
  IPsec 发起方 ───── ESP(协议50) ────→│  NAT  │──→ 无法识别,丢弃
  (10.0.0.1)  │                      └──────┘
               │
               │  封装为 UDP 4500      ┌──────┐
               └── UDP(4500)ESP ──────→│  NAT  │──→ UDP 端口映射 ✓
                                       └──────┘

# 启用 NAT-T
ike proposal 1
 nat-traversal enable                    # 默认已启用
 nat-keepalive 20                        # NAT 保活间隔 20 秒

七、总结

知识点 核心要点
IPsec 功能 认证 + 加密 + 完整性 + 防重放
SA 安全联盟,包含 SPI/算法/密钥/生存期
IKEv1 2 阶段:阶段 1 IKE SA + 阶段 2 IPsec SA
IKEv2 1 轮 4 消息,更高效,原生支持 NAT-T/MOBIKE
主模式 vs 野蛮模式 主模式 6 消息更安全,野蛮模式 3 消息更快
传输模式 vs 隧道模式 传输模式保护载荷,隧道模式保护整个 IP
NAT-T ESP over UDP 4500 解决 NAT 穿越

八、思考

  1. IKEv1 的主模式和野蛮模式有什么区别?什么场景下会选择野蛮模式?
  2. IKE SA 和 IPsec SA 分别保护什么数据?它们的生存周期怎么管理?
  3. IKEv2 相比 IKEv1 在哪些方面做了改进?4 个消息如何完成 IKEv1 的 9 个消息的工作?
  4. IPsec 的传输模式和隧道模式有什么区别?站点到站点 VPN 应该用哪种模式?
  5. 为什么 ESP 协议无法穿越 NAT?NAT-T 是如何解决这个问题的?

下篇预告:第211篇《IPsec VPN 隧道模式与传输模式》——深入对比 IPsec 的两种封装模式,详解数据包结构变化和适用场景。