第211篇:IPsec VPN 隧道模式与传输模式

关键词

传输模式、隧道模式、ESP、AH、封装结构、站点到站点 VPN、端到端加密、报文开销


一、两种模式概述

1.1 核心区别

IPsec 的两种封装模式决定了保护范围的不同:

传输模式(Transport Mode):
  只保护 IP 载荷(TCP/UDP 头 + 数据)
  不保护原始 IP 头
  适合:端到端场景(终端到终端)

隧道模式(Tunnel Mode):
  保护整个原始 IP 报文
  增加一个新的 IP 头(网关地址)
  适合:站点到站点 VPN(网关到网关)

1.2 选型依据

选择依据                   推荐模式
──────────────────────────────────────────
终端到终端通信              传输模式
终端到网关(远程访问)       隧道模式
网关到网关(站点到站点)     隧道模式
需要隐藏内网拓扑            隧道模式
尽量减少 IPsec 开销         传输模式
穿越 NAT                    隧道模式(更易配合 NAT-T)

二、传输模式详解

2.1 ESP 传输模式报文结构

原始 IP 报文: | 原始 IP 头 S=10.0.0.1 D=10.0.0.2 | TCP 头 port=80 | 数据 HTTP Payload | | --- | --- | --- |

ESP 传输模式: | 原始 IP 头 S=10.0.0.1 D=10.0.0.2 | ESP 头 SPI=100 Seq=1 | TCP 头 port=80 | 数据 HTTP Payload | ESP 尾 Auth Data | | --- | --- | --- | --- | --- | ├── 已加密 ──────────────────┤ ├──────────── 已认证(完整性校验)───────────────┤

特点: - IP 头保持原始不变 - TCP 头 + 数据被加密 - ESP 头插入在 IP 头和 TCP 头之间 - 认证范围:ESP 头 + TCP + 数据

2.2 AH 传输模式(纯认证)

AH(Authentication Header)传输模式(仅认证,不加密):

原始 IP 头 S=10.0.0.1 D=10.0.0.2 AH 头 SPI=200 Seq=1 TCP 头 port=80 数据 HTTP Payload
├──────────── 已认证(完整性校验)───────────────────────────────────┤

注意: - AH 只做认证,不做加密 - AH 认证范围包括 IP 头中的不变字段(TTL 等变化字段排除) - AH 已逐渐被 ESP 替代,ESP 可以同时提供认证和加密

2.3 传输模式配置

# ESP 传输模式配置
ipsec proposal TRANSPORT
 esp authentication-algorithm sha256
 esp encryption-algorithm aes-256
 encapsulation-mode transport               # 传输模式
!
# 适用场景:两台服务器之间的端到端加密
acl number 3101
 rule 5 permit ip source 10.0.1.1 0 destination 10.0.2.1 0
!
ipsec policy SERVER_IPSEC 10 isakmp
 security acl 3101
 ike-peer SERVER_PEER
 proposal TRANSPORT

三、隧道模式详解

3.1 ESP 隧道模式报文结构

原始 IP 报文: | 原始 IP 头 S=10.0.0.1 D=192.168.1.1 | TCP 头 port=80 | 数据 HTTP Payload | | --- | --- | --- |

ESP 隧道模式: | 新 IP 头 S=202.1.1.1 D=203.1.1.1 | ESP 头 SPI=100 Seq=1 | 原始 IP 头 S=10.0.0.1 D=192.168.1.1 | TCP 头 port=80 | 数据 HTTP Payload | ESP 尾 Auth Data | | --- | --- | --- | --- | --- | --- | ├──────────── 已加密 ─────────────────────────┤ ├──────────── 已认证(完整性校验)──────────────────────────────────┤

特点: - 原始 IP 头被完整保护(隐藏内网拓扑) - 新 IP 头使用网关的公网地址 - 整个原始报文被加密 - 新增 IP 头 + ESP 头共约 50-60 字节开销

3.2 隧道模式配置

# 隧道模式配置(站点到站点 VPN)
ipsec proposal TUNNEL
 esp authentication-algorithm sha256
 esp encryption-algorithm aes-256
 encapsulation-mode tunnel                  # 隧道模式
!
# 保护总部和分支之间的所有流量
acl number 3001
 rule 5 permit ip source 10.0.0.0 0.255.255.255 destination 192.168.0.0 0.0.255.255
!
# 创建隧道接口
interface Tunnel0/0/0
 ip address 10.255.255.1 255.255.255.252    # 隧道接口 IP
 tunnel-protocol ipsec                      # IPsec 隧道
 ipsec policy POLICY_TUNNEL
!
ipsec policy POLICY_TUNNEL 10 isakmp
 security acl 3001
 ike-peer BRANCH_PEER
 proposal TUNNEL

四、开销对比

4.1 报文大小对比

以 MTU=1500 为例,各模式的有效载荷:

传输模式(ESP):
  新报文 = IP(20) + ESP头(8) + TCP头(20) + 数据 + ESP尾(18)
  有效载荷 = 1500 - 20 - 8 - 20 - 18 = 1434 字节
  MTU 开销 = 66 字节

隧道模式(ESP):
  新报文 = 新IP(20) + ESP头(8) + 原始IP(20) + TCP头(20) + 数据 + ESP尾(18)
  有效载荷 = 1500 - 20 - 8 - 20 - 20 - 18 = 1414 字节
  MTU 开销 = 86 字节

对比总结:
  模式          额外开销     有效载荷 (MTU=1500)
  无 IPsec      0           1480
  传输模式      66          1434
  隧道模式      86          1414

注意:以上为典型值,实际开销取决于算法和选项

4.2 MTU 问题处理

IPsec 隧道模式下 MTU 问题更突出:

问题:外层 IP 头 20 + ESP 头 8 + 内层 IP 头 20 + ESP 尾 18 = 66-86 额外字节
      如果原始报文大小为 1500,加上 IPsec 头后超过链路 MTU

解决方案:

1. 降低隧道接口 MTU
   interface Tunnel0/0/0
    mtu 1400                             # 隧道接口 MTU 设为 1400

2. 启用 DF 位清除(允许分片)
   ipsec policy POLICY_TUNNEL 10 isakmp
    df-bit clear                         # 清除 DF 位,允许中间设备分片

3. TCP MSS 钳制(推荐)
   interface GigabitEthernet0/0/0
    tcp adjust-mss 1360                  # 减少 TCP SYN 中的 MSS 值

五、典型部署场景

5.1 站点到站点 VPN(隧道模式)

总部 (10.0.0.0/8) 分支 (192.168.1.0/24) │ │ | GW-A 202.1.1.1 | ═════ IPsec 隧道 ════ | GW-B 203.1.1.1 | | --- | --- | --- |

隧道模式: 内层 IP: 10.0.0.1 → 192.168.1.1 外层 IP: 202.1.1.1 → 203.1.1.1

总部 PC 访问分支服务器: - PC 发出报文:S=10.0.0.1, D=192.168.1.1 - GW-A 封装:外层 S=202.1.1.1, D=203.1.1.1 + 加密 - Internet 传输(看到的是网关地址) - GW-B 解封装:还原 S=10.0.0.1, D=192.168.1.1 - 分支服务器收到原始报文

5.2 端到端加密(传输模式)

两台服务器直连(同一网络内部):

  Server A (10.0.1.1) ═══════ IPsec ═══════ Server B (10.0.2.1)
                      传输模式

  传输模式:
    IP 头保持不变:S=10.0.1.1, D=10.0.2.1
    只加密 TCP 头 + 数据

  适用于:
    - 数据库主从复制加密
    - 管理通道加密
    - 集群内部通信加密

六、选择建议

场景 推荐模式 原因
总部-分支 VPN 隧道模式 隐藏内网拓扑,标准站点到站点方案
远程员工接入 隧道模式 客户端到网关的标准方案
服务器间加密 传输模式 端到端,减少开销
网络设备管理 传输模式 管理流量简单加密
穿越 NAT 隧道模式 NAT-T 与隧道模式配合更好

七、总结

知识点 核心要点
传输模式 保护 IP 载荷,IP 头不变,额外开销 ~66 字节
隧道模式 保护整个原始 IP,增加新 IP 头,额外开销 ~86 字节
ESP 认证 + 加密(主流),AH 仅认证(已少用)
应用 传输模式=端到端,隧道模式=站点到站点
MTU 隧道模式需额外处理 MTU 问题(MSS 钳制)

八、思考

  1. 传输模式和隧道模式的 IP 报文结构有什么本质区别?
  2. 为什么站点到站点 VPN 推荐使用隧道模式而不是传输模式?
  3. IPsec 隧道模式下,MTU 问题为什么更严重?如何解决?
  4. AH 和 ESP 协议的区别是什么?为什么现在 ESP 成为主流?
  5. 当远程员工通过 IPsec VPN 访问公司内网时,使用的是哪种模式?为什么?

下篇预告:第212篇《IPsec VPN 野蛮模式与主模式》——两种 IKEv1 阶段 1 模式的深入对比,包括安全性和性能的权衡。