一张图总结

IPSec 协议概述
IPSec(Internet Protocol Security,互联网协议安全)是一套工作在网络层的安全通信协议族,主要用于保护 IP 网络中的数据传输安全。
传统 IP 协议本身并没有提供完善的安全机制。数据包在经过互联网传输时,可能遭遇:
- 数据被窃听;
- 数据被篡改;
- 数据包被伪造;
- 数据包被重复发送;
- 通信双方身份无法得到可靠验证。
IPSec 就是为了解决这些问题而设计的。
简单来说,可以把 IPSec 理解成:
在 IP 层给网络通信增加一层"安全保护"。
它可以为 IP 数据提供:
- 机密性(Confidentiality)
- 完整性(Integrity)
- 身份认证(Authentication)
- 抗重放(Anti-Replay)
IPSec 最大的特点是工作在网络层,因此对于上层应用通常是透明的。
例如:
应用层
HTTP / RTSP / FTP
↓
TCP/UDP
↓
IP + IPSec
↓
Ethernet
应用程序通常不需要修改,就可以利用 IPSec 获得安全通信能力。
IPSec 的体系结构
IPSec 并不是单独的一个协议,而是一组协议和机制的集合。
其核心组成可以概括为:
IPSec
│
┌───────────┼───────────┐
↓ ↓ ↓
AH ESP IKE
身份认证 加密保护 密钥协商
数据完整性 数据机密性 建立SA
│ │ │
└───────────┴───────────┘
↓
Security Association
SA
其中最核心的是:
- AH:Authentication Header
- ESP:Encapsulating Security Payload
- IKE:Internet Key Exchange
- SA:Security Association
AH 协议
AH,即 Authentication Header,中文一般称为认证头。
AH 的主要作用是:
- 数据完整性保护;
- 数据来源认证;
- 抗重放攻击。
AH 不负责加密数据。
也就是说:
原始数据:
IP头 | TCP/UDP | 数据
经过 AH:
IP头 | AH | TCP/UDP | 数据
数据本身仍然是明文。
因此,如果攻击者截获数据包,理论上仍然可以看到数据内容。
AH 的核心作用是保证:
数据没有被别人修改,而且确实来自可信的通信方。
AH 中比较重要的字段包括:
- Next Header:下一个协议;
- Payload Length:负载长度;
- SPI:Security Parameters Index;
- Sequence Number:序列号;
- Authentication Data:认证数据。
其中 SPI 用来标识具体的安全关联 SA。
ESP 协议
ESP,即 Encapsulating Security Payload,是 IPSec 中使用最广泛的协议。
ESP 可以同时提供:
- 数据加密;
- 数据完整性保护;
- 数据来源认证;
- 抗重放保护。
典型结构:
┌────────┬────────┬──────────────┬────────┬──────────────┐
│ 原始IP头 │ ESP头 │ 加密数据 │ ESP尾 │ 认证数据 │
└────────┴────────┴──────────────┴────────┴──────────────┘
SPI Sequence Padding
ESP Header 主要包含:
SPI
Sequence Number
ESP Trailer 通常包括:
Padding
Pad Length
Next Header
最后还可能存在:
Authentication Data
ESP 是实际 VPN 系统中非常常见的 IPSec 协议。
例如:
设备A
│
│ 原始IP数据
↓
ESP加密
│
│ 密文
↓
Internet
│
↓
ESP解密
│
↓
设备B
因此,如果你以后在抓包时看到 IP 协议号 50,通常就是 ESP。
AH 的 IP 协议号是 51。
AH 与 ESP 的区别
| 对比项目 | AH | ESP |
|---|---|---|
| 数据加密 | ❌ | ✅ |
| 数据完整性 | ✅ | ✅ |
| 身份认证 | ✅ | ✅ |
| 抗重放 | ✅ | ✅ |
| 隐藏数据内容 | ❌ | ✅ |
| 使用情况 | 较少 | 非常常见 |
| IP协议号 | 51 | 50 |
实际网络中,ESP 的使用远多于 AH。
原因很简单:
VPN 通常不仅需要证明数据没被修改,还需要防止数据被窃听。
IPSec 的两种工作模式
IPSec 最重要的知识点之一,就是:
传输模式和隧道模式。
传输模式
传输模式主要用于主机到主机的通信。
原始数据:
IP头 | TCP/UDP | 数据
经过 ESP 后:
IP头 | ESP头 | TCP/UDP | 数据 | ESP尾
其中:
- 原来的 IP Header 基本保留;
- TCP/UDP 和应用数据被保护。
示意:
主机A 主机B
│ │
│ IPSec ESP │
├────────── Internet ───────────┤
│ │
适合:
- 两台服务器之间通信;
- 主机到主机的安全通信。
隧道模式
隧道模式是企业 VPN 中更加常见的模式。
它通常用于:
网关到网关、客户端到网关。
原始数据:
原IP头 | TCP/UDP | 数据
经过 IPSec 隧道模式后:
新IP头 | ESP头 | 原IP头 | TCP/UDP | 数据 | ESP尾
可以理解为:
加密区域
┌───────────────────────────────┐
│ 原IP头 | TCP/UDP | 数据 │
└───────────────────────────────┘
↑
ESP保护
↑
新IP头 | ESP头 | 加密数据 | ESP尾
这也是为什么 IPSec 非常适合构建 VPN。
例如:
公司A内网 公司B内网
192.168.1.0/24 192.168.2.0/24
│ │
│ │
VPN网关A ===== IPSec隧道 ===== VPN网关B
Internet
公司 A 和公司 B 的内部网络就可以通过 IPSec 隧道安全通信。
Security Association------安全关联 SA
SA 是理解 IPSec 的关键。
SA(Security Association)可以理解成:
双方约定好的一套通信安全参数。
例如:
bash
使用什么加密算法?
AES-256
使用什么认证算法?
SHA-256
使用什么密钥?
XXXXXXXX
SPI是多少?
0x1001
使用传输模式还是隧道模式?
Tunnel Mode
生命周期是多少?
3600秒
这些信息组合起来,就是一个 SA。
可以简单理解:
SA
│
├── SPI
├── 对端IP
├── 加密算法
├── 认证算法
├── 加密密钥
├── 认证密钥
├── 序列号
├── 生命周期
└── 工作模式
IPSec 通常通过 SPD 和 SAD 来管理安全策略和安全关联。
SPD
Security Policy Database,安全策略数据库。
它回答:
哪些数据需要使用 IPSec?
例如:
192.168.1.0/24
↓
192.168.2.0/24
↓
必须使用 IPSec
SAD
Security Association Database,安全关联数据库。
它回答:
具体使用什么 IPSec 参数?
IKE------互联网密钥交换协议
如果 IPSec 需要加密,那么双方首先需要解决一个非常重要的问题:
加密密钥从哪里来?
这就是 IKE 的作用。
IKE(Internet Key Exchange)负责:
- 身份认证;
- 密钥协商;
- 加密算法协商;
- 建立 IPSec SA;
- 管理 SA 生命周期。
当前实际网络环境中主要使用 IKEv2。
IKE 协商过程
可以简化理解为:
客户端 VPN服务器
│ │
│ ─── IKE_SA_INIT ────────────> │
│ │
│ <── IKE_SA_INIT ───────────── │
│ │
│ ─── IKE_AUTH ───────────────> │
│ │
│ <── IKE_AUTH ──────────────── │
│ │
│ IPSec SA建立 │
│ │
│ ===== 加密通信开始 ========= │
第一步:IKE_SA_INIT
双方协商:
- 加密算法;
- 完整性算法;
- Diffie-Hellman 参数;
- 随机数等。
其中 Diffie-Hellman 的核心作用是:
让双方能够在不直接传输密钥的情况下协商出共同的密钥材料。
第二步:IKE_AUTH
双方进行身份认证。
例如:
用户名/密码
数字证书
预共享密钥 PSK
认证成功以后,就可以建立 IPSec SA。
IPSec 完整工作流程
整个过程可以概括为:
① 数据产生
↓
② 检查安全策略 SPD
↓
③ 判断是否需要 IPSec
↓
④ IKE协商
↓
⑤ 建立 IKE SA
↓
⑥ 建立 IPSec SA
↓
⑦ ESP加密/认证
↓
⑧ Internet传输
↓
⑨ 对端ESP解密
↓
⑩ 恢复原始IP数据
↓
⑪ 交给TCP/UDP
因此,从工程角度看:
IKE负责"谈好怎么通信",IPSec/ESP负责"真正保护数据"。
这是理解 IPSec 最重要的一句话。
IPSec VPN 的典型应用
IPSec 最典型的应用就是 VPN。
远程访问 VPN
员工电脑
│
│ IPSec
↓
Internet
│
↓
企业VPN网关
│
↓
企业内网
员工即使在互联网环境中,也可以安全访问公司内部资源。
站点到站点 VPN
例如两个机房:
机房A 机房B
192.168.1.0/24 192.168.2.0/24
│ │
↓ ↓
VPN网关A ===== IPSec ===== VPN网关B
隧道
│
Internet
对内网设备来说,IPSec VPN 对上层应用基本透明。
云计算 VPN
云服务器和企业数据中心之间,也可以建立 IPSec VPN。
例如:
企业数据中心
│
│ IPSec VPN
│
Internet
│
│
↓
云平台VPC
这也是企业混合云网络中比较常见的方案。
IPSec 的优缺点
优点
1. 工作在网络层
最大的优势是:
对应用透明。
HTTP、FTP、RTSP、TCP、UDP 等应用通常不需要修改。
例如:
RTSP
↓
TCP
↓
IPSec
↓
IP
所以从你做流媒体系统的角度来看,如果设备和平台之间已经建立 IPSec VPN,那么上层的 RTSP、GB28181、SRT、HTTP-FLV 等业务协议通常不需要专门感知 IPSec。
2. 安全性高
IPSec 可以提供:
- AES 等加密;
- SHA 等完整性校验;
- 身份认证;
- 抗重放。
能够有效防止:
- 窃听;
- 篡改;
- 伪造;
- 重放攻击。
3. 应用范围广
可以用于:
- 企业 VPN;
- 数据中心互联;
- 云平台;
- 远程办公;
- 设备安全接入;
- IoT 网络。
缺点
IPSec 虽然安全,但是也存在一些问题。
1. 配置比较复杂
涉及:
IKE
SA
SPI
ESP
加密算法
认证算法
密钥
生命周期
SPD
SAD
配置错误时排查比较困难。
2. 存在额外开销
IPSec 会增加:
- ESP Header;
- ESP Trailer;
- Authentication Data;
- 外层 IP Header。
因此会产生额外的网络开销。
对于高码率视频流来说,这一点尤其值得关注。
例如原本:
视频码率 = 4 Mbps
经过 IPSec 后,会增加一定的协议头开销。
虽然通常不是巨大问题,但在高并发视频流、4G/5G设备、低带宽链路中仍然需要考虑 MTU 和分片问题。
3. NAT 环境需要额外处理
传统 ESP 使用 IP 协议号 50,而 NAT 设备主要处理 TCP/UDP。
因此 IPSec 在 NAT 环境中通常需要使用:
NAT-T(NAT Traversal)
通过 UDP 封装 ESP,通常使用 UDP 4500。
IPSec 与 SSL VPN 的区别
| 项目 | IPSec VPN | SSL VPN |
|---|---|---|
| 工作层次 | 网络层 | 通常基于传输层/应用层 |
| 典型协议 | AH/ESP/IKE | TLS/HTTPS |
| 应用透明性 | 很好 | 视实现而定 |
| 配置 | 相对复杂 | 相对简单 |
| 企业网络互联 | 非常适合 | 一般 |
| 远程办公 | 适合 | 非常常见 |
| NAT穿透 | 需要考虑 | 通常较容易 |
简单理解:
IPSec 更偏向"网络到网络"的安全连接;SSL VPN 更偏向"用户到应用/网络"的安全访问。
总结
IPSec 是计算机网络中非常重要的一套网络层安全协议体系,其核心目标是为 IP 通信提供机密性、完整性、身份认证和抗重放保护。
IPSec 最核心的几个概念可以记成:
bash
IPSec
│
┌──────────┼──────────┐
↓ ↓ ↓
AH ESP IKE
认证完整性 加密保护 密钥协商
│ │ │
└──────────┼──────────┘
↓
SA
安全关联参数
其中:
- AH:负责认证和完整性,但不负责加密;
- ESP:负责加密,同时可以提供完整性和认证,是实际 VPN 中最常用的协议;
- IKE:负责身份认证、密钥协商以及 IPSec SA 的建立;
- SA:描述双方具体采用什么安全参数进行通信。
IPSec 又分为:
bash
传输模式
IP头 | ESP | TCP/UDP | 数据
隧道模式
新IP头 | ESP | 原IP头 | TCP/UDP | 数据
其中隧道模式尤其适合:
bash
企业网络 ←→ Internet ←→ 企业网络
设备网络 ←→ Internet ←→ 云平台
因此,在实际工程中可以把 IPSec 理解成一个位于 IP 层的安全隧道机制。上层的 TCP、UDP、HTTP、RTSP、GB28181、SRT 等业务协议可以运行在 IPSec 之上,而无需修改业务协议本身。
一句话总结:
IPSec 通过 AH/ESP 提供 IP 数据安全保护,通过 IKE 完成密钥和安全参数协商,通过 SA 管理具体的安全通信状态,最终实现安全的 IP 网络和 VPN 通信。