一、IPsec 核心基础与安全机制
1. 定义与本质
IPsec(互联网协议安全)并非单一协议,而是一套网络层安全协议簇,通过组合加密、认证、密钥交换等技术,为 IP 报文提供端到端或私网间的安全传输保障。其核心目标是解决 IP 协议原生缺乏的保密性、完整性、身份认证问题。
2. 核心安全机制
-
对称加密:用于对数据载荷加密,确保保密性。
常用算法:AES(128/256 位)、3DES 等,特点是加密效率高,适合大量数据传输。
原理:通信双方使用相同密钥进行加解密,密钥需通过安全方式(如 IKE)协商。 -
完整性校验:通过 HMAC(哈希消息认证码)实现,确保数据未被篡改。
常用算法:HMAC-SHA256、HMAC-MD5 等,原理是发送方对数据计算哈希值(结合密钥),接收方重新计算并比对,不一致则判定数据被篡改。 -
安全服务:
- 数据源鉴别:通过预共享密钥、证书等验证发送方身份,防止伪装。
- 不可否认性:通过数字签名等技术,防止发送方否认已发送的数据。
- 抗重放攻击:通过序列号标识每个报文,接收方拒绝重复序列号的报文。
二、IPsec 协议簇与封装方式
1. 安全协议:AH 与 ESP
AH(认证头协议,协议号 51)

-
核心功能:仅提供完整性校验、数据源认证、抗重放,不支持加密。
-
协议结构(字段详解):
- 下一头部:标识 AH 后的负载类型(如传输模式下为 TCP/UDP,隧道模式下为原始 IP)。
- 负载长度:AH 头部长度(以 32 位为单位)减 2,默认值为 4(即 16 字节)。
- SPI(安全参数索引):唯一标识对应的 SA(安全联盟),类似 “通道 ID”。
- 序列号:从 1 开始递增,用于抗重放,不可重复。
- 认证数据:HMAC 计算的摘要值(ICV),用于完整性校验。
-
验证范围:
- 传输模式:原始 IP 头(不含可变字段如 TTL)+ 上层数据。
- 隧道模式:新 IP 头(公网)+ 原始 IP 头 + 上层数据。
- 缺陷:因验证包含 IP 头,NAT 修改 IP 后会导致验证失败,不支持 NAT 穿越。
ESP(封装安全载荷协议,协议号 50)

-
核心功能:支持加密(核心)、完整性校验、数据源认证、抗重放、NAT 穿越,是 IPsec 中最常用的协议。
-
协议结构(字段详解):
- ESP 头部:含 SPI 和序列号(功能同 AH)。
- 负载数据:原始 IP 报文或上层数据(被加密)。
- ESP 尾部:含填充字段(因对称加密要求分组长度固定,填充至满足算法要求)、填充长度(标识填充字节数)、下一头部(同 AH)。
- 认证数据:HMAC 摘要(不加密,用于验证完整性)。
-
加密与认证范围:
- 加密范围:负载数据 + ESP 尾部(不含 ESP 头部和认证数据)。
- 认证范围:ESP 头部 + 负载数据 + ESP 尾部(不含最外层 IP 头)。
- 优势:因认证不含外层 IP 头,可支持 NAT 场景(配合 NAT-T 技术)。
2. 封装方式(工作模式)
传输模式
- 应用场景:主机到主机的端到端通信(如私网内服务器直接通信)。
- 封装过程:
原始报文:[IP头(私网)][TCP/UDP][数据]
封装后:[IP头(私网)][ESP/AH头][TCP/UDP][数据][ESP尾部/认证数据]
特点:不修改原始 IP 头,仅在 IP 头后插入 ESP/AH 头,不建立隧道,适用于无需穿越公网的场景。
隧道模式
- 应用场景:私网间通过公网通信(如总部与分支互联),需建立 VPN 隧道。
- 封装过程:
原始报文:[IP头(私网)][TCP/UDP][数据]
封装后:[新IP头(公网)][ESP/AH头][原始IP头(私网)][TCP/UDP][数据][ESP尾部/认证数据]
特点:新增公网 IP 头(源目为 VPN 网关公网地址),原始报文被完整封装,通过隧道穿越公网,隐藏私网拓扑。
三、安全联盟(SA):IPsec 通信的基础
1. 定义与作用
SA 是通信双方对安全服务参数的约定,包括:安全协议(AH/ESP)、加密 / 认证算法、密钥、封装模式、SPI 等。只有建立 SA 后,IPsec 才能实现安全通信。
2. 唯一标识:三元组
- SPI(安全参数索引):32 位整数,由接收方分配,用于标识特定 SA。
- 目的 IP 地址:SA 对端的 IP 地址(公网或私网)。
- 安全协议号:AH(51)或 ESP(50)。
三者结合唯一确定一个 SA。
3. 特性与数量
- 单向性:一个 SA 仅保护一个方向的数据流,双向通信需成对建立。
- 数量计算:
- 单协议(如仅 ESP):2 个 SA(入站 + 出站)。
- 双协议(AH+ESP):4 个 SA(每个方向各 2 个)。
4. 建立方式
手工方式
- 适用场景:小型网络、对端 IP 固定(如 2 个网关互联)。
- 配置要点:需手动指定 SPI、密钥、对端 IP 等,两端参数必须严格一致(如本端出站 SPI 需等于对端入站 SPI)。
- 缺点:密钥需人工维护,扩展性差(节点增多时配置量呈指数增长)。
IKE 方式
- 适用场景:中大型网络、对端 IP 动态(如分支通过公网拨号接入)。
- 优势:通过 IKE 协议自动协商 SA 参数(SPI、密钥等),支持密钥动态更新,减少人工干预。
四、手工配置 IPsec VPN:详细步骤与原理
1. 配置前提
- 公网路由可达:VPN 网关公网接口能互相 ping 通。
- 安全策略放行:需允许受保护数据流(私网网段)和 IKE 协商报文(UDP 500)通过。
2. 详细配置步骤(以华为设备为例)
步骤 1:定义保护数据流(ACL)
[FW1]acl 3000 # 高级ACL,用于匹配需保护的流量
[FW1-acl-adv-3000]rule permit ip source 10.1.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255 # 源:本端私网,目的:对端私网
- 原理:ACL 精确匹配需要进入 VPN 隧道的流量,仅匹配的流量会被 IPsec 处理。
- 注意:需配置双向规则(对端设备 ACL 需反向,即源为 192.168.1.0/24,目的为 10.1.1.0/24)。
步骤 2:创建 IPsec 安全提议
[FW1]ipsec proposal aa # 提议名称为aa
[FW1-ipsec-proposal-aa]encapsulation-mode tunnel # 隧道模式(公网场景必选)
[FW1-ipsec-proposal-aa]transform esp # 选用ESP协议(支持加密)
[FW1-ipsec-proposal-aa]esp authentication-algorithm sha2-256 # 认证算法
[FW1-ipsec-proposal-aa]esp encryption-algorithm aes-256 # 加密算法
- 原理:提议定义 IPsec 的安全参数,两端提议需完全一致才能协商成功。
步骤 3:配置手工 IPsec 策略
[FW1]ipsec policy map_1 10 manual # 策略名称map_1,序号10,手工模式
[FW1-ipsec-policy-manual-map_1-10]security acl 3000 # 绑定ACL(指定保护流量)
[FW1-ipsec-policy-manual-map_1-10]proposal aa # 绑定安全提议
[FW1-ipsec-policy-manual-map_1-10]tunnel local 1.1.1.1 # 本端公网IP
[FW1-ipsec-policy-manual-map_1-10]tunnel remote 1.1.2.1 # 对端公网IP
[FW1-ipsec-policy-manual-map_1-10]sa spi inbound esp 12345678 # 入站ESP的SPI
[FW1-ipsec-policy-manual-map_1-10]sa spi outbound esp 87654321 # 出站ESP的SPI
[FW1-ipsec-policy-manual-map_1-10]sa string-key inbound esp abc # 入站密钥(字符串形式)
[FW1-ipsec-policy-manual-map_1-10]sa string-key outbound esp cba # 出站密钥
- 关键参数说明:
- SPI:入站 SPI 需与对端出站 SPI 一致(如 FW1 入站 12345678 ← FW2 出站 12345678)。
- 密钥:字符串形式时,设备会自动生成加密密钥;16 进制形式需手动指定加密 / 认证密钥。
步骤 4:应用策略到接口
[FW1]interface GigabitEthernet 1/0/0 # 公网接口
[FW1-GigabitEthernet1/0/0]ipsec policy map_1 # 接口启用IPsec策略
- 原理:公网接口接收 / 发送的流量会触发 IPsec 策略检查,匹配 ACL 的流量将被加密 / 解密。
步骤 5:配置私网路由
[FW1]ip route-static 192.168.1.0 24 1.1.1.2 # 对端私网路由,下一跳指向公网网关
- 原理:引导私网流量进入公网接口,触发 IPsec 处理(否则流量可能直接丢弃)。
五、IKE 协议:动态建立 SA 的核心
1. 定义与作用
IKE(互联网密钥交换协议)是 IPsec 的 “密钥管理器”,通过 UDP 500 端口通信,负责动态协商 IPsec SA 的参数(密钥、算法等),避免手工配置的繁琐。
- 组成:
- ISAKMP:定义 SA 建立的框架(报文格式、协商流程)。
- Oakley:提供密钥交换的逻辑(如 DH 算法应用)。
- SKEME:定义密钥生成与更新机制。
2. 安全机制
-
身份认证:验证对等体身份,支持 3 种方式:
- 预共享密钥(PSK):双方预配置相同密钥,适合小型网络。
- 数字证书:通过 CA 签发的证书验证身份,适合大型网络。
- 数字信封:符合国密标准,仅 IKEv1 主模式支持。
-
DH 算法:无需传输密钥即可生成对称密钥。
原理:双方各自生成私钥和公钥,交换公钥后,结合自身私钥计算出相同的 “共享密钥”(Z),用于后续密钥派生。 -
PFS(完善前向安全性):额外执行 DH 交换,确保 IPsec SA 密钥与 IKE SA 密钥独立,即使 IKE 密钥泄露,IPsec 密钥仍安全。
3. IKEv1:两阶段协商

阶段 1:建立 IKE SA(安全通道)
- 目标:协商 IKE SA 参数(加密 / 认证算法、DH 组等),生成共享密钥,认证身份。
- 两种模式:
-
主模式(6 个报文):
1-2 报文:协商 IKE SA 参数(算法、生命周期等)。
3-4 报文:交换 DH 公钥,生成共享密钥 Z。
5-6 报文:加密传输身份信息(IP 地址)和 HMAC 摘要,完成身份认证。
特点:身份信息加密,安全性高,仅支持 IP 地址作为身份标识。 -
野蛮模式(3 个报文):
1 报文:发送方携带 IKE 参数、DH 公钥、身份信息(明文)。
2 报文:接收方回复匹配的参数、DH 公钥。
3 报文:确认身份(加密)。
特点:协商速度快,身份信息明文,支持非固定 IP 场景(如拨号)。
-
阶段 2:建立 IPsec SA(数据通道)
- 模式:仅快速模式(3 个报文),在 IKE SA 保护下进行。
- 协商内容:IPsec SA 参数(加密 / 认证算法、封装模式、SPI 等),生成 IPsec 密钥。
- 密钥生成:基于阶段 1 的共享密钥 Z,通过 PRF 算法派生 IPsec 加密 / 认证密钥。
4. IKEv2:优化与改进
- 协商效率:4 个报文完成基础 IKE SA 和首个 IPsec SA 建立,新增 SA 仅需 2 个报文(较 IKEv1 的 6+3=9 个报文大幅提升)。
- 新特性:
- 支持 EAP 认证(适合远程用户接入)。
- 内置 NAT-T 支持(无需额外配置)。
- 协商被保护数据流(流量选择器),确保两端 ACL 匹配。
- 兼容性:默认同时支持 IKEv1 和 IKEv2,使用 IKEv1 时需手动关闭 v2(
undo version 2
)。
六、IPsec 模板:动态 IP 场景的解决方案
1. 适用场景
hub-and-spoke 架构(总部固定 IP,分支动态 IP),解决分支 IP 不固定导致的总部配置繁琐问题。
2. 核心特点
- 总部:仅需 1 个 IPsec 模板和 1 个 IKE 对等体(无需按分支数量配置),仅响应协商请求(不主动发起)。
- 分支:配置固定的受保护数据流(仅源地址),并开启隧道自动触发(
sa trigger-mode auto
)。
3. 配置示例(总部)
# 定义保护数据流(总部到所有分支)
[FW1]acl 3000
[FW1-acl-adv-3000]rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255 # 分支1
[FW1-acl-adv-3000]rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.3.0 0.0.0.255 # 分支2
# 配置IKE对等体(不指定对端IP)
[FW1]ike peer branch
[FW1-ike-peer-branch]ike-proposal 10
[FW1-ike-peer-branch]pre-shared-key Test!123
[FW1-ike-peer-branch]exchange-mode main
# 创建IPsec模板
[FW1]ipsec policy-template tem 1
[FW1-ipsec-policy-templet-tem-1]security acl 3000
[FW1-ipsec-policy-templet-tem-1]proposal aa
[FW1-ipsec-policy-templet-tem-1]ike-peer branch
# 应用模板到策略
[FW1]ipsec policy policy_1 1 isakmp template tem
[FW1]interface GigabitEthernet 1/0/0
[FW1-GigabitEthernet1/0/0]ipsec policy policy_1
七、NAT 穿越:IPsec 与 NAT 的共存方案
1. 问题根源
- AH 协议:验证包含外层 IP 头,NAT 修改 IP 后验证失败,完全不支持 NAT。
- ESP 协议:验证不含外层 IP 头,可穿越 NAT,但端口转换(PAT)会导致 ESP 报文端口被修改,影响识别。
2. 解决方案:NAT-T(NAT Traversal)
- 原理:将 ESP 报文封装在 UDP 4500 端口中,避免端口转换导致的识别问题。
- 封装后结构:
[公网IP头][UDP头(4500)][ESP头][原始数据][ESP尾部][认证数据]
3. 配置要点
- 开启 NAT-T:两端配置
nat traversal
。 - 安全策略:开放 UDP 500(IKE 协商)、UDP 4500(NAT-T 封装)和 ESP 协议(50)。
- 身份认证:使用名称(FQDN)而非 IP(因 NAT 后 IP 变化),IKEv1 需用野蛮模式。
4. 配置示例(总部与分支)
# 总部(FW1)配置
[FW1]ike local-name fw1 # 本地名称标识
[FW1]ike peer branch
[FW1-ike-peer-branch]undo version 2
[FW1-ike-peer-branch]exchange-mode aggressive # 野蛮模式
[FW1-ike-peer-branch]local-id-type fqdn # 身份类型为名称
[FW1-ike-peer-branch]remote-id fw2 # 分支名称
[FW1-ike-peer-branch]pre-shared-key Test!123
[FW1-ike-peer-branch]nat traversal # 开启NAT-T
# 分支(FW2)配置
[FW2]ike local-name fw2
[FW2]ike peer hub
[FW2-ike-peer-hub]undo version 2
[FW2-ike-peer-hub]exchange-mode aggressive
[FW2-ike-peer-hub]local-id-type fqdn
[FW2-ike-peer-hub]remote-id fw1
[FW2-ike-peer-hub]remote-address 1.1.1.1 # 总部公网IP
[FW2-ike-peer-hub]pre-shared-key Test!123
[FW2-ike-peer-hub]nat traversal
总结
IPsec VPN 通过 AH/ESP 协议提供多层次安全保护,结合 IKE 实现动态密钥管理,支持手工和自动配置,适配固定 / 动态 IP 场景及 NAT 环境。理解其协议细节、SA 机制及协商流程,是部署和排错的核心基础。