IPSec 报文结构笔记:AH / ESP × 传输 / 隧道
· 6 分钟阅读
IPSec 报文结构笔记:AH / ESP × 传输 / 隧道
整理自一道 IPSec 连线题的复盘。重点是记住封装顺序和判断方法,而不是死记图
一、结论速记
只要涉及 IPSec 报文结构,顺序是固定的:
New IP -> AH -> ESP -> Orig IP -> Data -> ESP Trailer -> ESP Auth
三条速判规则:
- 尾部出现
ESP Trailer/ESP Auth data→ 一定用了 ESP - 同时出现
AH Header→ AH 与 ESP 是组合使用 - 出现两套 IP 头(
New IP+Raw IP)→ 隧道模式;只有一套 → 传输模式
二、两个协议:AH 与 ESP
| 协议 | IP 协议号 | 是否加密 | 完整性 / 认证 | 防重放 | 典型用途 |
|---|---|---|---|---|---|
| AH | 51 | 不加密 | 支持 | 支持 | 只要求防篡改、允许明文可见的场景 |
| ESP | 50 | 支持 | 支持 | 支持 | 绝大多数生产 VPN |
AH 的认证范围覆盖尽可能多的字段,包括外层 IP 头的不可变字段,可变字段(TTL、首部校验和等)不参与计算
ESP 把加密和认证合在一起,但它的认证不覆盖外层 IP 头,所以在 NAT 场景下比 AH 好处理
三、两种模式:传输与隧道
| 模式 | 保护对象 | IP 头数量 | 新增开销 | 典型场景 |
|---|---|---|---|---|
| 传输模式 Transport | 只保护上层载荷 | 1 套(原 IP 头) | 小 | 主机到主机,端到端 |
| 隧道模式 Tunnel | 保护整个原始 IP 报文 | 2 套(新 IP 头 + 原 IP 头) | 大 | 网关到网关,站点互联 |
关键理解:隧道模式会把整个原始报文连 IP 头一起当作货物封装,原始 IP 头因此变成载荷的一部分
这就是题目里 Raw IP Header 的含义,它不是多余字段,而是被封装进去的内层报文头部
四、五种报文形态总览
| 组合 | 报文结构 |
|---|---|
| ① AH 传输 | [Orig IP] [AH] [Data] |
| ② AH 隧道 | [New IP] [AH] [Orig IP] [Data] |
| ③ ESP 传输 | [Orig IP] [ESP] [Data] [ESP Trailer] [ESP Auth] |
| ④ ESP 隧道 | [New IP] [ESP] [Orig IP] [Data] [ESP Trailer] [ESP Auth] |
| ⑤ AH + ESP 隧道 | [New IP] [AH] [ESP] [Orig IP] [Data] [ESP Trailer] [ESP Auth] |
从上表可以直接读出三条规律:
- 有
Trailer/Auth的一定是 ESP - 有
New IP的一定是隧道模式 - AH 与 ESP 同时出现时,AH 永远在 ESP 外面
五、AH + ESP 隧道模式:逐字段拆解
这是最完整的一种形态,也是考试最爱考的一种:
| 字段 | 作用 |
|---|---|
| New IP Header | 由隧道入口点新增,源/目的地址是隧道两端地址 |
| AH Header | 下一个头、载荷长度、SPI、序列号、ICV;认证 + 完整性 + 防重放,不加密 |
| ESP Header | SPI(32 bit)+ 序列号(32 bit);标识 SA 并防重放 |
| Raw IP Header | 被整个封装进隧道的原始报文头部,此时已经是载荷的一部分 |
| Data | 原始上层数据 |
| ESP Trailer | 填充 + 填充长度 + 下一个头;用于分组加密对齐、标识内层协议 |
| ESP Auth data | ICV 完整性校验值,由 HMAC 计算得到 |
为什么 AH 在 ESP 外面
组合使用时的封装顺序是先 ESP 后 AH:
1. 对原始报文做 ESP 封装:加密载荷,附加 ESP Trailer,计算 ESP ICV
2. 在 ESP 报文外面再套 AH:AH 的认证范围覆盖 ESP 头及其内部所有内容
这样 AH 能把 ESP 头里的 SPI 和序列号也纳入保护,覆盖范围最完整
反过来如果把 ESP 放在 AH 外面,AH 头会被加密,认证范围和保护效果都会变差
六、保护范围对照
| 范围 | 覆盖字段 | 说明 |
|---|---|---|
| ESP 加密 | Orig IP + Data + ESP Trailer | 隧道模式下整个原始报文都被加密 |
| ESP 认证 | ESP 头 + Orig IP + Data + ESP Trailer | ICV 附在报文尾部,不覆盖外层 IP 头 |
| AH 认证 | AH 头 + ESP 头 + Orig IP + Data + ESP Trailer + ESP Auth + New IP 不可变字段 | 可变字段(TTL、首部校验和等)不参与计算 |
容易记混的一点:ESP 头本身不加密,但会被 ESP 认证覆盖;AH 头既不被加密也不被自己加密,它就是用来算校验值的
七、一道连线题的复盘
题干形态还原:
按隧道模式 IPSec 报文的结构,把左侧字段拖到右侧对应位置
字段:New IP Header / AH Header / ESP Header / Raw IP Header
报文:[ 1 ][ 2 ][ 3 ][ 4 ][ Data ][ ESP Trailer ][ ESP Auth data ]
参考答案:
1 = New IP Header
2 = AH Header
3 = ESP Header
4 = Raw IP Header
判断过程:
1. 尾部有 ESP Trailer 和 ESP Auth data -> 用了 ESP
2. 选项里同时给了 AH Header,报文也留了 4 个空位 -> AH 与 ESP 组合使用
3. 同时存在 New IP Header 与 Raw IP Header -> 隧道模式
4. 按固定顺序填:New IP -> AH -> ESP -> Raw IP
常见错法:
- 把 ESP 头放在 AH 头外面,写成
New IP -> ESP -> AH -> Raw IP - 认为隧道模式只有新 IP 头,把 Raw IP Header 当成干扰项
- 只看到 ESP 尾就按纯 ESP 隧道作答,忽略了 AH Header 这个选项
八、记忆口诀
新头套 AH,AH 套 ESP,ESP 里头装原报文
先加密,后认证,AH 永远在外层
两套 IP 头是隧道,有尾有认证是 ESP
九、延伸:NAT 穿越
- AH 的认证覆盖外层 IP 头,地址被 NAT 改写后 ICV 校验必然失败,所以 AH 基本无法穿越 NAT
- ESP 没有端口号,多数 NAT 设备难以建立映射,因此引入 NAT-T,把 ESP 封装进 UDP 4500
- 这也是生产环境里 ESP 隧道模式远比 AH 常见的原因
十、参考标准
| 标准 | 内容 |
|---|---|
| RFC 4301 | IPsec 体系架构,SA 组合与处理模型 |
| RFC 4302 | AH 协议定义 |
| RFC 4303 | ESP 协议定义 |
| RFC 3948 | UDP 封装 ESP,即 NAT-T |
