核心差异

维度WireGuardIPsec
设计理念简单、现代完备、兼容
代码量4,000 行400,000+ 行
配置复杂度极简复杂
加密协商无(固定)有(可协商)
性能更高中等

一句话:WireGuard 追求极简和高效,IPsec 追求完备和兼容。


1. 设计理念对比

1.1 设计目标

┌─────────────────────────────────────────────────────────────────────────┐
│                        设计目标对比                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  WireGuard:                                                             │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  "简单即安全"                                                    │   │
│  │                                                                 │   │
│  │  ├─ 最小化代码量 → 易于审计                                     │   │
│  │  ├─ 固定加密套件 → 无协商攻击                                   │   │
│  │  ├─ 无状态设计 → 简单可靠                                       │   │
│  │  ├─ 现代加密算法 → 高效安全                                     │   │
│  │  └─ 一切从简 → 部署容易                                         │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  IPsec:                                                                 │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  "完备即兼容"                                                    │   │
│  │                                                                 │   │
│  │  ├─ 支持所有加密算法 → 最大兼容性                               │   │
│  │  ├─ 支持所有场景 → 企业级需求                                   │   │
│  │  ├─ 标准化协议 → 厂商互操作                                     │   │
│  │  ├─ 灵活配置 → 满足各种需求                                     │   │
│  │  └─ 功能完备 → 无所不能                                         │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

1.2 历史背景

┌─────────────────────────────────────────────────────────────────────────┐
│                        历史背景                                          │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  IPsec:                                                                 │
│  ├─ 起源:1990年代 IETF 标准化                                          │
│  ├─ 目的:为 IPv6 设计,后移植到 IPv4                                   │
│  ├─ 委员会设计:多方妥协的结果                                          │
│  ├─ 兼容性:支持 90年代硬件(DES, 3DES, SHA1)                          │
│  └─ 问题:历史包袱重,配置复杂                                          │
│                                                                         │
│  WireGuard:                                                             │
│  ├─ 起源:2016年 Jason Donenfeld 开发                                   │
│  ├─ 目的:设计一个真正好用的 VPN                                        │
│  ├─ 个人/小团队设计:追求简洁                                          │
│  ├─ 现代性:只使用现代加密算法                                          │
│  └─ 优势:无历史包袱,简洁高效                                          │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

2. 架构对比

2.1 协议栈位置

┌─────────────────────────────────────────────────────────────────────────┐
│                        协议栈位置                                        │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  IPsec (两种模式):                                                       │
│                                                                         │
│  Transport Mode (传输模式):                                             │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 原始: [IP头] [TCP头] [数据]                                      │   │
│  │ 加密: [IP头] [ESP头] [TCP头] [数据] [ESP尾]                      │   │
│  │                                                                 │   │
│  │ 特点: 只加密载荷,IP头不变                                       │   │
│  │ 用途: 端到端加密                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Tunnel Mode (隧道模式) - 更常用:                                       │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 原始: [内层IP头] [TCP头] [数据]                                  │   │
│  │ 加密: [外层IP头] [ESP头] [内层IP头] [TCP头] [数据] [ESP尾]       │   │
│  │                                                                 │   │
│  │ 特点: 整个包封装,新外层IP头                                     │   │
│  │ 用途: 站点到站点 VPN                                             │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  WireGuard (只有隧道模式):                                              │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 原始: [内层IP头] [TCP头] [数据]                                  │   │
│  │ 加密: [外层IP头] [UDP头] [WG头] [加密的内层包] [Poly1305 Tag]    │   │
│  │                                                                 │   │
│  │ 特点: 使用 UDP 封装,更简单                                      │   │
│  │ 用途: 站点到站点、远程访问                                       │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

2.2 组件对比

┌─────────────────────────────────────────────────────────────────────────┐
│                        组件架构                                          │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  IPsec 组件:                                                            │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  ┌──────────────┐     ┌──────────────┐     ┌──────────────┐    │   │
│  │  │ IKE 守护进程  │     │  IPsec 内核   │     │  策略数据库   │    │   │
│  │  │ (用户态)     │     │  模块         │     │  (SPD/SAD)   │    │   │
│  │  │              │     │              │     │              │    │   │
│  │  │ - 密钥协商   │     │ - ESP/AH    │     │ - 安全策略   │    │   │
│  │  │ - 证书管理   │     │ - 加解密     │     │ - 安全关联   │    │   │
│  │  │ - IKEv1/v2  │     │ - 隧道管理   │     │ - 状态维护   │    │   │
│  │  └──────────────┘     └──────────────┘     └──────────────┘    │   │
│  │         │                    │                    │             │   │
│  │         └────────────────────┼────────────────────┘             │   │
│  │                              ▼                                  │   │
│  │                    复杂的状态管理                               │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  WireGuard 组件:                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  ┌──────────────────────────────────────────────────────────┐  │   │
│  │  │               WireGuard 内核模块                          │  │   │
│  │  │                                                          │  │   │
│  │  │  - 密钥管理 (配置文件)                                    │  │   │
│  │  │  - 加解密 (ChaCha20-Poly1305)                            │  │   │
│  │  │  - 隧道管理                                               │  │   │
│  │  │  - 无状态设计                                             │  │   │
│  │  │                                                          │  │   │
│  │  └──────────────────────────────────────────────────────────┘  │   │
│  │                              │                                  │   │
│  │                              ▼                                  │   │
│  │                    单一组件,无状态                             │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

3. 加密算法对比

3.1 加密套件

┌─────────────────────────────────────────────────────────────────────────┐
│                        加密算法对比                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  WireGuard (固定):                                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 用途              │ 算法                    │ 不可更改          │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 密钥交换          │ Curve25519             │ ✓                 │   │
│  │ 对称加密          │ ChaCha20               │ ✓                 │   │
│  │ 消息认证          │ Poly1305               │ ✓                 │   │
│  │ 哈希              │ BLAKE2s                │ ✓                 │   │
│  │ HKDF              │ HKDF-BLAKE2s           │ ✓                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  IPsec (可协商):                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 用途              │ 支持的算法(部分列表)                       │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 密钥交换          │ DH (多种组), ECDH (多种曲线), RSA            │   │
│  │ 对称加密          │ AES-CBC, AES-GCM, AES-CTR, 3DES, DES(已弃)  │   │
│  │ 消息认证          │ HMAC-SHA1, HMAC-SHA2, AES-GMAC              │   │
│  │ 哈希              │ SHA1, SHA2-256, SHA2-384, SHA2-512, MD5(弃) │   │
│  │ PRF               │ PRF-HMAC-SHA1, PRF-HMAC-SHA2                │   │
│  │ 压缩              │ IPCOMP (可选)                                │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  协商的风险:                                                             │
│  ├─ 降级攻击:强制使用弱算法                                            │
│  ├─ 配置错误:使用不安全的组合                                          │
│  └─ 复杂性:需要正确配置协商策略                                        │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

3.2 算法性能对比

┌─────────────────────────────────────────────────────────────────────────┐
│                        算法性能 (单核 CPU)                               │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  对称加密吞吐量:                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 算法              │ 无 AES-NI      │ 有 AES-NI       │ 备注     │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ ChaCha20-Poly1305 │ 5 Gbps         │ 5 Gbps          │ 软件友好 │   │
│  │ AES-256-GCM       │ 0.8 Gbps       │ 8 Gbps          │ 需要 NI  │   │
│  │ AES-256-CBC       │ 0.5 Gbps       │ 4 Gbps          │ 较老模式 │   │
│  │ 3DES              │ 0.1 Gbps       │ 0.1 Gbps        │ 已过时   │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  结论:                                                                   │
│  ├─ 无 AES-NI: ChaCha20 更快(移动设备、嵌入式)                        │
│  ├─ 有 AES-NI: AES-GCM 略快(现代服务器)                               │
│  └─ WireGuard 选择 ChaCha20 因为:                                      │
│      ├─ 所有平台性能一致                                                │
│      ├─ 无需硬件加速                                                    │
│      └─ 常数时间实现,更安全                                            │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

4. 握手协议对比

4.1 握手流程

┌─────────────────────────────────────────────────────────────────────────┐
│                        握手流程对比                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  WireGuard (1-RTT):                                                     │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  Client                          Server                        │   │
│  │    │                               │                            │   │
│  │    │─── Message 1 (Initiation) ───▶│                            │   │
│  │    │     (~100ms 处理时间)         │                            │   │
│  │    │                               │                            │   │
│  │    │◀─── Message 2 (Response) ─────│                            │   │
│  │    │                               │                            │   │
│  │    │         ===== 加密通信开始 =====                           │   │
│  │    │                               │                            │   │
│  │    总时间: ~100-200ms (1 RTT)                                   │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  IPsec IKEv2 (2-RTT):                                                   │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  Initiator                       Responder                     │   │
│  │    │                               │                            │   │
│  │    │─── IKE_SA_INIT Request ──────▶│  (协商算法)                │   │
│  │    │                               │                            │   │
│  │    │◀─── IKE_SA_INIT Response ─────│                            │   │
│  │    │                               │                            │   │
│  │    │─── IKE_AUTH Request ─────────▶│  (身份验证)                │   │
│  │    │     (可能包含 EAP)            │                            │   │
│  │    │                               │                            │   │
│  │    │◀─── IKE_AUTH Response ────────│                            │   │
│  │    │                               │                            │   │
│  │    │         ===== 加密通信开始 =====                           │   │
│  │    │                               │                            │   │
│  │    总时间: ~500-1500ms (2-3 RTT)                                │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  对比:                                                                   │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 指标              │ WireGuard     │ IPsec IKEv2                 │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 往返次数          │ 1 RTT         │ 2-4 RTT                     │   │
│  │ 握手时间          │ 100-200ms     │ 500-1500ms                  │   │
│  │ 消息数量          │ 2 条          │ 4-6 条                      │   │
│  │ 状态复杂度        │ 无状态        │ 有状态                      │   │
│  │ 身份验证          │ 预共享密钥    │ 证书/EAP/预共享密钥         │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

4.2 密钥管理

┌─────────────────────────────────────────────────────────────────────────┐
│                        密钥管理对比                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  WireGuard:                                                             │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  密钥类型:                                                      │   │
│  │  ├─ 静态私钥:手动配置,长期有效                                │   │
│  │  └─ 临时密钥:自动生成,每次握手新密钥                          │   │
│  │                                                                 │   │
│  │  密钥轮换:                                                      │   │
│  │  ├─ 自动:每 2-3 分钟重新握手                                   │   │
│  │  ├─ 无感知:应用层无感知                                        │   │
│  │  └─ 完美前向保密:历史密钥无法恢复                              │   │
│  │                                                                 │   │
│  │  配置方式:                                                      │   │
│  │  ├─ 配置文件:/etc/wireguard/wg0.conf                          │   │
│  │  ├─ 手动交换:公钥需要手动配置到对端                            │   │
│  │  └─ 无 PKI:不需要证书基础设施                                  │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  IPsec:                                                                 │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  密钥类型:                                                      │   │
│  │  ├─ IKE SA 密钥:保护 IKE 通信                                  │   │
│  │  ├─ IPsec SA 密钥:保护数据通信                                 │   │
│  │  └─ 可有多级密钥层次                                            │   │
│  │                                                                 │   │
│  │  密钥轮换:                                                      │   │
│  │  ├─ 可配置:时间或数据量触发                                    │   │
│  │  ├─ 需要配置:需要设置 rekey 策略                               │   │
│  │  └─ 完美前向保密:可选,取决于配置                              │   │
│  │                                                                 │   │
│  │  配置方式:                                                      │   │
│  │  ├─ 预共享密钥 (PSK):简单但规模受限                            │   │
│  │  ├─ 证书 (PKI):复杂但可扩展                                    │   │
│  │  ├─ EAP:支持多种认证方式                                       │   │
│  │  └─ IKE 守护进程:自动管理                                      │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

5. 数据包格式对比

5.1 封装开销

┌─────────────────────────────────────────────────────────────────────────┐
│                        数据包封装对比                                    │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  原始数据包 (100 bytes 载荷):                                           │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ [IP头 20B] [TCP头 20B] [载荷 100B] = 140 bytes                   │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  WireGuard 封装:                                                        │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ [外层IP 20B] [UDP 8B] [WG头 16B] [加密载荷 120B] [Tag 16B]      │   │
│  │                                                                 │   │
│  │ 总计: 20 + 8 + 16 + 120 + 16 = 180 bytes                        │   │
│  │ 开销: 40 bytes (28.6%)                                          │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  IPsec ESP 隧道模式:                                                    │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ [外层IP 20B] [ESP头 8B] [IV 8B] [加密内层包 140B] [Pad] [尾 2B] │   │
│  │ [Auth 12B]                                                      │   │
│  │                                                                 │   │
│  │ 总计: 20 + 8 + 8 + 140 + padding + 2 + 12 ≈ 190-200 bytes       │   │
│  │ 开销: 50-60 bytes (35-43%)                                      │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  对比:                                                                   │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 协议        │ 额外开销      │ MTU 影响                          │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ WireGuard   │ 40 bytes      │ MTU 1420 (1500 - 80)              │   │
│  │ IPsec ESP   │ 50-70 bytes   │ MTU 1400-1420                     │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

5.2 数据包格式

┌─────────────────────────────────────────────────────────────────────────┐
│                        数据包格式详细对比                                │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  WireGuard 数据包:                                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 0                   1                   2                   3    │   │
│  │ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ |     Type(1)   |    Reserved   |      Receiver Index (4B)      │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ |                                                               │   │
│  │ │                    Counter (8 bytes)                          │   │
│  │ │                                                               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ │                                                               │   │
│  │ │              Encrypted Data (variable)                        │   │
│  │ │                                                               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ │               Poly1305 Tag (16 bytes)                         │   │
│  │ │                                                               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │                                                                 │   │
│  │ 固定开销: 16 bytes + 16 bytes Tag = 32 bytes                    │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  IPsec ESP 数据包:                                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 0                   1                   2                   3    │   │
│  │ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ |              Security Parameter Index (SPI)                   │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ |                      Sequence Number                          │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ │                                                               │   │
│  │ │                 IV (8 or 16 bytes)                            │   │
│  │ │                                                               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ │                                                               │   │
│  │ │              Encrypted Payload (variable)                     │   │
│  │ │                                                               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ |    Padding    |  Pad Length   | Next Header   |               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │ │                                                               │   │
│  │ │          Integrity Check Value (可选, 8-16 bytes)             │   │
│  │ │                                                               │   │
│  │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+│   │
│  │                                                                 │   │
│  │ 固定开销: 8 + 8(IV) + 2 + padding + ICV = 26-42+ bytes          │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

6. 性能对比

6.1 吞吐量测试

┌─────────────────────────────────────────────────────────────────────────┐
│                        吞吐量对比 (单核)                                 │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  测试环境: Intel Xeon E5-2680 v4, 10 Gbps NIC                          │
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  吞吐量 (Gbps)                                                  │   │
│  │  10 ┤                                                          │   │
│  │   9 ┤ ████████████████████████████ 明文                        │   │
│  │   8 ┤ ████████████████████████ WireGuard                       │   │
│  │   7 ┤ ██████████████████ IPsec (AES-GCM, AES-NI)               │   │
│  │   6 ┤                                                          │   │
│  │   5 ┤ ████████████████ WireGuard (无 AES-NI)                   │   │
│  │   4 ┤                                                          │   │
│  │   3 ┤                                                          │   │
│  │   2 ┤                                                          │   │
│  │   1 ┤ ████████ IPsec (AES-GCM, 无 AES-NI)                      │   │
│  │   0 ┼─────────────────────────────────────────────             │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  详细数据:                                                               │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 配置                          │ 吞吐量    │ CPU 使用率          │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 明文 (无 VPN)                 │ 9.5 Gbps  │ 15%                 │   │
│  │ WireGuard (ChaCha20)          │ 8.8 Gbps  │ 35%                 │   │
│  │ WireGuard (ChaCha20, 无 NI)   │ 5.2 Gbps  │ 60%                 │   │
│  │ IPsec (AES-256-GCM, AES-NI)   │ 7.5 Gbps  │ 45%                 │   │
│  │ IPsec (AES-256-GCM, 无 NI)    │ 1.2 Gbps  │ 100%                │   │
│  │ IPsec (AES-256-CBC, AES-NI)   │ 5.8 Gbps  │ 55%                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

6.2 延迟对比

┌─────────────────────────────────────────────────────────────────────────┐
│                        延迟对比                                          │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  测试: ping 延迟 (同数据中心,~1ms RTT 基线)                            │
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  延迟增加 (ms)                                                  │   │
│  │  2.0 ┤                          IPsec (初次握手)               │   │
│  │  1.5 ┤                                                          │   │
│  │  1.0 ┤   ████ IPsec (已建立)                                   │   │
│  │  0.5 ┤   ██ WireGuard (初次)                                   │   │
│  │  0.2 ┤   █ WireGuard (已建立)                                  │   │
│  │  0.0 ┼─────────────────────────────────────────                 │   │
│  │       基线  WG    WG    IPsec  IPsec                            │   │
│  │             首次  稳定   首次   稳定                             │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  详细数据:                                                               │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 场景                │ WireGuard    │ IPsec                      │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 基线延迟 (明文)     │ 1.0 ms       │ 1.0 ms                     │   │
│  │ 首次握手后延迟      │ 1.2 ms       │ 1.5-2.0 ms                 │   │
│  │ 稳定状态延迟        │ 1.1 ms       │ 1.3-1.5 ms                 │   │
│  │ 延迟增加            │ +0.1-0.2 ms  │ +0.3-0.5 ms                │   │
│  │ P99 延迟增加        │ +0.5 ms      │ +1.0-1.5 ms                │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

6.3 资源消耗

┌─────────────────────────────────────────────────────────────────────────┐
│                        资源消耗对比                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  内存占用:                                                               │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 组件                │ WireGuard    │ IPsec                      │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 内核模块            │ ~100 KB      │ ~2 MB                      │   │
│  │ 用户态进程          │ 0 (无)       │ 10-50 MB (IKE 守护进程)    │   │
│  │ 每连接状态          │ ~200 bytes   │ ~1-5 KB                    │   │
│  │ 1000 连接总计       │ ~200 KB      │ ~10-50 MB                  │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  CPU 使用 (1 Gbps 流量):                                                │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 场景                │ WireGuard    │ IPsec                      │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 加密开销            │ 3-5%         │ 5-10%                      │   │
│  │ 协议处理            │ ~1%          │ 2-5%                       │   │
│  │ IKE 守护进程        │ 0 (无)       │ 1-3%                       │   │
│  │ 总计                │ 4-6%         │ 8-18%                      │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

7. 配置复杂度对比

7.1 WireGuard 配置

# /etc/wireguard/wg0.conf (约 10 行)
 
[Interface]
PrivateKey = ABCD...
Address = 10.0.0.1/24
ListenPort = 51871
 
[Peer]
PublicKey = EFGH...
Endpoint = 203.0.113.2:51871
AllowedIPs = 10.0.0.2/32, 192.168.1.0/24

7.2 IPsec 配置

# /etc/ipsec.conf (约 50+ 行)
 
config setup
    charondebug="ike 2, knl 2, cfg 2"
    uniqueids=no
 
conn %default
    keyexchange=ikev2
    ike=aes256gcm16-sha2_256-modp2048!
    esp=aes256gcm16-sha2_256!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@server.example.com
    leftcert=serverCert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never
    eap_identity=%identity
 
conn ikev2-pubkey
    rightauth=pubkey
    rightcert=clientCert.pem
    auto=add
# /etc/ipsec.secrets (额外配置)

: RSA serverKey.pem
user1 : EAP "password123"
user2 : XAUTH "password456"
# 还需要配置:
# - 证书 (PKI 基础设施)
# - iptables 规则
# - 路由规则
# - IKE 守护进程配置

7.3 配置对比

┌─────────────────────────────────────────────────────────────────────────┐
│                        配置复杂度对比                                    │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 指标                │ WireGuard    │ IPsec                      │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 配置文件行数        │ ~10 行       │ ~50-200 行                 │   │
│  │ 配置文件数量        │ 1 个         │ 2-5 个                     │   │
│  │ 需要的组件          │ 内核模块     │ 内核 + IKE 守护进程        │   │
│  │ 证书要求            │ 不需要       │ 推荐                       │   │
│  │ 学习曲线            │ 低           │ 高                         │   │
│  │ 调试难度            │ 低           │ 高                         │   │
│  │ 错误排查            │ 简单         │ 复杂                       │   │
│  │ 文档需求            │ 少           │ 多                         │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  配置一个站点到站点 VPN 需要的时间:                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ WireGuard: 5-15 分钟                                            │   │
│  │ IPsec (有经验): 30-60 分钟                                      │   │
│  │ IPsec (无经验): 2-8 小时                                        │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

8. 功能对比

8.1 功能矩阵

┌─────────────────────────────────────────────────────────────────────────┐
│                        功能对比矩阵                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 功能                    │ WireGuard  │ IPsec         │ 说明     │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 站点到站点 VPN          │ ✅         │ ✅             │ 都支持   │   │
│  │ 远程访问 VPN            │ ✅         │ ✅             │ 都支持   │   │
│  │ 端到端加密              │ ✅         │ ✅             │ 都支持   │   │
│  │ 隧道模式                │ ✅         │ ✅             │ 都支持   │   │
│  │ 传输模式                │ ❌         │ ✅             │ IPsec    │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ NAT 穿透                │ ✅ 原生    │ ⚠️ 需配置     │ WG 更好  │   │
│  │ 双向 NAT                │ ✅         │ ⚠️ 困难       │ WG 更好  │   │
│  │ 漫游                    │ ✅         │ ⚠️ 需 MOBIKE  │ WG 更好  │   │
│  │ IP 地址变更             │ ✅ 自动    │ ⚠️ 需配置     │ WG 更好  │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 证书认证                │ ❌         │ ✅             │ IPsec    │   │
│  │ RADIUS 集成             │ ❌         │ ✅             │ IPsec    │   │
│  │ 多因素认证              │ ❌         │ ✅             │ IPsec    │   │
│  │ 用户认证                │ ❌         │ ✅             │ IPsec    │   │
│  │ EAP 支持                │ ❌         │ ✅             │ IPsec    │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 策略路由                │ ⚠️ 基础    │ ✅ 完整       │ IPsec    │   │
│  │ 细粒度 ACL              │ ❌         │ ✅             │ IPsec    │   │
│  │ 多租户                  │ ⚠️ 困难    │ ✅             │ IPsec    │   │
│  │ 企业级功能              │ ⚠️ 基础    │ ✅ 完整       │ IPsec    │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ Windows 原生支持        │ ✅ (Win10+)│ ✅            │ 都支持   │   │
│  │ macOS 原生支持          │ ⚠️ 需 App  │ ✅            │ IPsec    │   │
│  │ iOS 原生支持            │ ⚠️ 需 App  │ ✅            │ IPsec    │   │
│  │ Android 原生支持        │ ✅ (新)    │ ✅            │ 都支持   │   │
│  │ Linux 原生支持          │ ✅         │ ✅            │ 都支持   │   │
│  │ 路由器硬件支持          │ ⚠️ 有限    │ ✅ 广泛       │ IPsec    │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

8.2 安全特性对比

┌─────────────────────────────────────────────────────────────────────────┐
│                        安全特性对比                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ 安全特性              │ WireGuard    │ IPsec                    │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 完美前向保密          │ ✅ 强制      │ ⚠️ 可选                  │   │
│  │ 防重放攻击            │ ✅ 强制      │ ✅ 支持                  │   │
│  │ 防降级攻击            │ ✅ 无协商    │ ⚠️ 需配置                │   │
│  │ 身份隐藏              │ ✅ 可选      │ ❌ 不支持                │   │
│  │ 常数时间加密          │ ✅ 强制      │ ⚠️ 取决于实现            │   │
│  │ 零知识证明            │ ✅           │ ✅                       │   │
│  │ 密码学审计            │ ✅ 已审计    │ ⚠️ 部分审计              │   │
│  │ 代码审计              │ ✅ 易审计    │ ⚠️ 困难                  │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 后量子安全            │ ❌           │ ⚠️ 可配置                │   │
│  │ 量子密钥分发          │ ❌           │ ⚠️ 某些实现              │   │
│  │ 国密算法支持          │ ❌           │ ⚠️ 某些实现              │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  潜在安全问题:                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │ WireGuard:                                                       │   │
│  │ ├─ 无后量子安全(未来风险)                                      │   │
│  │ └─ 静态密钥需要安全存储                                          │   │
│  │                                                                 │   │
│  │ IPsec:                                                           │   │
│  │ ├─ 可能配置弱算法                                                │   │
│  │ ├─ IKE 实现可能有漏洞                                            │   │
│  │ ├─ 复杂配置容易出错                                              │   │
│  │ └─ 证书管理复杂                                                  │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

9. 场景选择

9.1 推荐场景

┌─────────────────────────────────────────────────────────────────────────┐
│                        场景推荐                                          │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  推荐 WireGuard 的场景:                                                  │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  ✅ 站点到站点 VPN                                               │   │
│  │     └─ 简单配置,高性能                                         │   │
│  │                                                                 │   │
│  │  ✅ 容器网络 (Cilium/Kubernetes)                                │   │
│  │     └─ 低开销,自动化                                           │   │
│  │                                                                 │   │
│  │  ✅ 个人/小团队远程访问                                          │   │
│  │     └─ 配置简单,移动友好                                       │   │
│  │                                                                 │   │
│  │  ✅ 云间互联                                                     │   │
│  │     └─ NAT 穿透,漫游支持                                       │   │
│  │                                                                 │   │
│  │  ✅ 嵌入式/IoT 设备                                              │   │
│  │     └─ 代码小,内存少                                           │   │
│  │                                                                 │   │
│  │  ✅ 快速部署/临时网络                                            │   │
│  │     └─ 几分钟完成配置                                           │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  推荐 IPsec 的场景:                                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                                                                 │   │
│  │  ✅ 企业级 VPN                                                   │   │
│  │     └─ 需要用户认证、RADIUS 集成                                │   │
│  │                                                                 │   │
│  │  ✅ 需要证书/PKI 基础设施                                        │   │
│  │     └─ 已有证书体系                                             │   │
│  │                                                                 │   │
│  │  ✅ 需要与现有硬件兼容                                           │   │
│  │     └─ 路由器、防火墙集成                                       │   │
│  │                                                                 │   │
│  │  ✅ 需要细粒度访问控制                                           │   │
│  │     └─ 基于策略的复杂 ACL                                       │   │
│  │                                                                 │   │
│  │  ✅ 合规要求                                                     │   │
│  │     └─ 特定加密算法或认证方式要求                               │   │
│  │                                                                 │   │
│  │  ✅ 需要传输模式                                                 │   │
│  │     └─ 端到端加密,不改变 IP 头                                 │   │
│  │                                                                 │   │
│  │  ✅ 传统环境                                                     │   │
│  │     └─ Windows 7、旧路由器等                                    │   │
│  │                                                                 │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

9.2 决策流程图

┌─────────────────────────────────────────────────────────────────────────┐
│                        选择决策流程                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│                         开始                                            │
│                           │                                             │
│                           ▼                                             │
│              ┌────────────────────────┐                                │
│              │ 需要用户认证/集成AD?  │                                │
│              └────────────┬───────────┘                                │
│                    是 │        │ 否                                     │
│                       ▼        ▼                                        │
│              ┌──────────┐  ┌────────────────────────┐                  │
│              │  IPsec   │  │ 需要兼容旧硬件/系统?  │                  │
│              └──────────┘  └────────────┬───────────┘                  │
│                              是 │        │ 否                           │
│                                 ▼        ▼                              │
│                          ┌──────────┐  ┌────────────────────────┐      │
│                          │  IPsec   │  │ 需要企业级策略管理?  │      │
│                          └──────────┘  └────────────┬───────────┘      │
│                                        是 │        │ 否                 │
│                                           ▼        ▼                    │
│                                    ┌──────────┐  ┌──────────────────┐  │
│                                    │  IPsec   │  │ WireGuard        │  │
│                                    └──────────┘  │ (推荐)           │  │
│                                                  └──────────────────┘  │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

10. 总结

10.1 核心差异总结

┌─────────────────────────────────────────────────────────────────────────┐
│                        核心差异总结                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    WireGuard          │          IPsec          │   │
│  ├─────────────────────────────────────────────────────────────────┤   │
│  │ 设计理念        │ 简单、现代          │ 完备、兼容             │   │
│  │ 代码量          │ 4,000 行            │ 400,000+ 行            │   │
│  │ 配置复杂度      │ 极简                │ 复杂                   │   │
│  │ 加密协商        │ 无(固定)          │ 有                     │   │
│  │ 性能            │ 更高                │ 中等                   │   │
│  │ NAT 穿透        │ 原生支持            │ 需要配置               │   │
│  │ 企业功能        │ 基础                │ 完整                   │   │
│  │ 兼容性          │ 现代系统            │ 广泛                   │   │
│  │ 学习曲线        │ 低                  │ 高                     │   │
│  │ 安全默认        │ 高                  │ 取决于配置             │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

10.2 一句话总结

场景推荐原因
追求简单高效WireGuard配置简单,性能好
追求企业功能IPsec用户认证,策略管理
新项目/云原生WireGuard现代设计,低开销
传统环境IPsec兼容性好
不确定WireGuard先试 WireGuard

最终结论

  • WireGuard:简单、快速、现代,适合大多数场景
  • IPsec:完备、兼容、企业级,适合传统/复杂场景

外部参考