IPSec 最容易让人迷糊的地方:它不是一个协议,而是一整套协议族。所以第一次看配置会觉得项特别多——因为每一项都在回答「用哪套子协议、怎么封装」。

一句话概括:IPSec = 两个协议(AH / ESP)× 两种模式(传输 / 隧道)× 一套协商机制(IKE)。把这三个维度拆开看,配置就不再是黑盒。

先回答:IPSec 保护什么

它要解决三件事,正好对应上一篇密码学三件套:

要保证靠什么
保密(内容不被看到)对称加密(AES / SM4)
完整(内容没被改)哈希 / HMAC(SHA-256)
身份可信(对端真的是它)预共享密钥(PSK)或数字证书

两个协议:AH 与 ESP

IPSec 的 AH 与 ESP 两种协议、传输模式与隧道模式两种封装的对比
▲ 两个协议 × 两种模式,配 IPSec 时的第一组选择
AH(协议号 51)ESP(协议号 50)
加密不做做
认证 / 完整性做,覆盖 IP 头做,不覆盖外层 IP 头
能否过 NAT不能(改了 IP 头就校验失败)能,靠 NAT-T
现状基本淘汰事实标准

所以实际项目里几乎只用 ESP。看到「AH + ESP」的组合配置,通常是历史遗留或者有特殊合规要求。

两种模式:保护范围不一样

传输模式 vs 隧道模式
【传输模式】原 IP 头保留,只在 IP 头和载荷之间插一个 IPSec 头

  ┌────────┬────────────┬──────────┐
  │ 原 IP 头 │ IPSec 头    │ 载荷      │
  └────────┴────────────┴──────────┘
  → 真实源/目的 IP 暴露在外面
  → 用于 主机到主机(比如两台服务器之间)
  → 开销小

【隧道模式】整个原报文(含原 IP 头)被当成载荷,外面套新的 IP 头

  ┌──────────────┬────────────┬─────────────────────┐
  │ 新 IP 头       │ IPSec 头    │ 原 IP 头 + 载荷       │
  │ 网关地址       │            │ 内网地址(被保护)     │
  └──────────────┴────────────┴─────────────────────┘
  → 内网拓扑被隐藏,中间设备只能看到两个网关
  → 用于 站点到站点 VPN(最主流)
  → 开销大(多一层 IP 头)

记忆口诀:「隧道模式套两层 IP,传输模式只插一个头」。站点到站点 VPN 一律用隧道模式;只有主机到主机的场景才考虑传输模式。

SA:IPSec 的「会话」

IPSec 是单向的——每个方向一条 SA,所以一条隧道实际有两条 SA。每条 SA 用一个三元组唯一标识:

SA 三元组
SA = ( SPI , 目的 IP , 安全协议 )

  SPI(Security Parameter Index)  32 位,本端分配,放在 IPSec 头里
  目的 IP                          对端网关/主机的地址
  安全协议                          AH 还是 ESP

★ 出方向:本端用自己分配的 SPI 标记,对端按这个 SPI 去查自己的 SA 表
★ 所以两端各自维护一张 SA 表,各自有独立的 SPI

SA 里存了什么:
  加密算法 + 密钥、认证算法 + 密钥、封装模式、抗重放窗口、SA 生存期(时间/字节数)
  ★ 这些参数都是 IKE 协商出来的,不是手工配的

感兴趣流:哪些流量要加密

IPSec 不会把所有流量都加密,它只处理「感兴趣流」(interesting traffic)。这个概念在华为设备上用 ACL 表达:

huawei · 感兴趣流 ACL
# 匹配"从 192.168.1.0/24 去 192.168.2.0/24 的流量"
acl number 3000
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255

# ★ 两端 ACL 必须是"镜像"关系
#   本端:source 192.168.1.0  → destination 192.168.2.0
#   对端:source 192.168.2.0  → destination 192.168.1.0
#   不镜像 → 一条隧道起不来(这是 IPSec 排错第一高频问题)

# ★ ACL 是"镜像"不是"相同",这点和防火墙策略不一样

IPSec 的完整配置骨架

huawei · IPSec 骨架(细节见下一篇)
# ① 感兴趣流
acl number 3000
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255

# ② IKE 阶段(怎么协商、怎么认证对端)
ike proposal 10
 encryption-algorithm aes-256
 authentication-algorithm sha2-256
 dh group14

ike peer peer1 v2
 pre-shared-key cipher Huawei@123
 ike-proposal 10
 remote-address 200.1.1.2

# ③ IPSec 阶段(怎么加密数据)
ipsec proposal prop1
 esp encryption-algorithm aes-256
 esp authentication-algorithm sha2-256
 encapsulation-mode tunnel

# ④ 把上面三块绑在一起
ipsec policy policy1 10 isakmp
 security acl 3000
 ike-peer peer1
 proposal prop1

# ⑤ 应用到出接口
interface GigabitEthernet0/0/0
 ipsec policy policy1

排错

huawei
display ike sa                    # ★ IKE SA 是否建立(第一站)
display ike sa verbose            # 详细:对端、阶段、剩余生存期
display ipsec sa                  # ★ IPSec SA 是否建立
display ipsec sa verbose          # 含 SPI、加解密算法、包计数

reset ike sa                      # 清掉重建(改了配置后必须清)
display acl 3000                  # 感兴趣流是否匹配上(看命中计数)
debugging ike all                 # 开调试(生产环境慎用)

排错顺序:

一句话总结:用 ESP 不用 AH,用隧道模式不用传输模式,感兴趣流两端必须镜像,改了配置记得 reset ike sa。这四句话能解决 IPSec 八成的问题。

📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)

合并了原始笔记中「IPSEC 架构 / IPSEC 数据包处理流程」两页。
原笔记以协议栈截图为主,本文按「保护目标 → 协议 → 模式 → SA → 感兴趣流 → 配置骨架」重排,并补上了 ACL 镜像、SA 三元组等实操细节。
配置命令保留华为 VRP 原样。