ESP 抓包能看到什么
ESP 是 IPsec 的加密载荷协议,IP 协议号 50:抓包只能看到 SPI、序列号与填充信息,内层载荷已经加密。排查时用 SPI 与两端的 SA 输出对应,确认收发两个方向都有流量;经过 NAT 时 ESP 会被封装在 UDP 4500 中(NAT-T),这时抓包看到的是 UDP 报文。
基本信息
| 协议号 | IP 协议 50(ESP),AH 为 51 |
|---|---|
| 可见字段 | SPI、序列号、填充长度,载荷已加密 |
| 对应核对 | 与设备 SA 输出中的入向/出向 SPI 逐一对应 |
| NAT 场景 | NAT-T 下外层为 UDP 4500,内层仍是 ESP |
| 方向判断 | 入向与出向 SPI 不同,核对时不要混用 |
典型使用场景
- 隧道不通时确认加密报文到底有没有发出与收到
- 怀疑单向加密:只看到一侧 ESP 时核对两端计数
- 防重放排查:观察序列号是否异常
- NAT 环境确认 NAT-T 是否生效
- 与运营商核对:用 SPI 说明是哪条 SA 的流量
抓包与核对
抓包与核对
tcpdump -ni eth0 -vv 'proto 50' -c 20 # 抓 ESP,观察 SPI 与序列号
tcpdump -ni eth0 -vv 'udp port 4500' -c 20 # NAT-T 场景,看 UDP 4500 内的 ESP
!
show crypto ipsec sa | include SPI|inbound|outbound|pkts
# 核对要点:抓包中的 SPI 应与对应方向的 SA SPI 一致
# 华为侧:display ipsec sa brief抓包可见字段
| 字段 | 含义 | 用途 |
|---|---|---|
| SPI | 安全参数索引,标识一条 SA | 与设备输出对应,确认是哪条隧道 |
| 序列号 | 防重放计数器 | 持续递增说明流量在传 |
| 填充长度 | 块加密对齐所需 | 正常范围内无需关注 |
| 内层载荷 | 已加密内容 | 抓包无法直接读出业务数据 |
把 SPI 当成密钥是常见误解:它只是本地用于定位 SA 的索引值,不直接暴露密钥材料,可以安全地在排障沟通中使用。
只看到单向 ESP 时不要立刻断定丢包:该方向可能只是暂时没有业务流量,先核对两端计数器与路由表,再判断是否存在单向加密。
在设备本机抓包看到的是本机发出的密文:要判断中间设备是否丢弃,需要在链路中间或对端同时取证,单点抓包无法区分「没发」和「发了但被丢」。